ここでは,アクセス制御情報を表すプロパティの詳細について説明します。
それぞれのアクセス制御情報は,オブジェクトのプロパティの値として設定されます。このため,アクセス制御情報を取得,設定および変更する場合は,プロパティを操作するメソッドを使用します。プロパティを操作するメソッドについては,「2.6.6 プロパティの操作」を参照してください。
アクセス制御情報は,サブジェクトを示すプロパティと,パーミッションを示すプロパティの組み合わせによって表されます。
ACFlagでは,「所有者」「プライマリグループ」「すべてのユーザ」に対するパーミッションを設定します。所有者とは,dbrProp_OwnerIdプロパティに設定されたユーザで,オブジェクト作成時にそのオブジェクトを作成したユーザが設定され,必要に応じて所有者自身によって別のユーザに変更できます。プライマリグループは,dbrProp_PrimaryGroupIdプロパティに設定されたグループです。プライマリグループはオブジェクト作成時に設定される場合と,オブジェクト作成後にユーザが設定する場合があります。すべてのユーザとは,特定のプロパティとして設定されている値でなく,文書空間にログインできるすべてのユーザを示します。
「所有者」,「プライマリグループ」および「すべてのユーザ」を表すサブジェクトに当たるプロパティと,ACFlagでそれぞれのサブジェクトにパーミッションを設定するプロパティとの対応を,次の表に示します。これらのプロパティは,すべてクラスライブラリのオブジェクトのトップオブジェクトに設定されます。
表3-20 ACFlagによって設定できるサブジェクトとパーミッションの組み合わせ
アクセス権が 与えられる対象 | サブジェクトを表すプロパティ識別子 | サブジェクトに対する パーミッションを指定する プロパティ識別子(ACFlag) |
---|---|---|
所有者 | dbrProp_OwnerId | dbrProp_OwnerPermission |
プライマリグループ | dbrProp_PrimaryGroupId | dbrProp_PrimaryGroupPermission |
すべてのユーザ | - | dbrProp_EveryonePermission |
パーミッションに設定する値については,「3.15.4 パーミッションの種類」を参照してください。
ACLは,VariableArray型プロパティです。個々の要素として,ACEを持ちます。ACEは,CdbrCompoundクラスのオブジェクトとして扱うことができます。
個々のACEには,CdbrCompoundクラスのオブジェクトのプロパティとして,「サブジェクト」,「サブジェクト種別」および「パーミッション」を指定します。
ACEに指定するサブジェクトとサブジェクト種別,およびパーミッションを表すプロパティの組み合わせを次の表に示します。なお,サブジェクト種別を表すプロパティとは,そのサブジェクトがユーザなのか,グループなのか,システムなのかを表すプロパティです。
表3-21 ACEによって設定できるサブジェクトとパーミッションの組み合わせ
設定する内容 | プロパティ識別子 |
---|---|
サブジェクト | dbrProp_Subject |
サブジェクト種別 | dbrProp_SubjectType |
サブジェクトに対するパーミッション | dbrProp_Permission |
個々のオブジェクトに設定するアクセス制御情報を表すプロパティについて,次の表に示します。
表3-22 個々のオブジェクトに設定するアクセス制御情報を表すプロパティ
アクセス制御情報の種類 | プロパティ識別子 | データ型 | 基本単位 | 制限値 | 検索の 可否 | 説明 |
---|---|---|---|---|---|---|
所有者 | dbrProp_OwnerId | String型 | Scalar型 | 1~uバイト | ○※1 | 所有者のユーザ識別子 u:ユーザ識別子の最大長※2 |
プライマリグループ | dbrProp_PrimaryGroupId | String型 | Scalar型 | 0~gバイト | ○※3 | プライマリグループのグループ識別子 g:グループ識別子の最大長※4 |
ACFlag | dbrProp_OwnerPermission | Integer32型 | Scalar型 | 4バイト | × | 所有者のパーミッション |
dbrProp_PrimaryGroupPermission | Integer32型 | Scalar型 | 4バイト | × | プライマリグループのパーミッション | |
dbrProp_EveryonePermission | Integer32型 | Scalar型 | 4バイト | × | すべてのユーザのパーミッション | |
ローカルACL | dbrProp_ACL | Object型 | VariableArray型 | ACEは64個まで | × | ACL |
セキュリティACL | dbrProp_SACL | Object型 | VariableArray型 | ACEは64個まで | × | セキュリティACL |
パブリックACL | dbrProp_PublicACLCount※5 | Integer32型 | Scalar型 | 10個 | × | バインドしているパブリックACLの個数 |
dbrProp_PublicACLIds | Object型 | VariableArray型 | 一つのオブジェクトにバインドできるパブリックACLは10個まで。 個々のパブリックACLで設定できるACEは64個まで | × | バインドしているパブリックACLのOIIDのリスト(可変長配列) | |
ログインユーザのパーミッション | dbrProp_UserPermission※5 | Integer32型 | Scalar型 | - | × | ログインユーザに設定されているパーミッションの論理和 |
所有者のユーザ識別子を表すプロパティです。所有者は,ACFlagによってパーミッションを与える対象になります。
このプロパティは検索に使用できます。ただし,検索に使用する場合は,プロパティ識別子を「edmProp_OwnerId」と指定します。
プライマリグループのグループ識別子を表すプロパティです。プライマリグループは,ACFlagによってパーミッションを与える対象になります。
このプロパティは検索に使用できます。ただし,検索に使用する場合は,プロパティ識別子を「edmProp_PrimaryGroupId」と指定します。
所有者,プライマリグループおよびすべてのユーザに対して与えるパーミッションを表すプロパティです。
パーミッションとして指定する値については,「3.15.4 パーミッションの種類」を参照してください。
ローカルACLを表すVariableArray型プロパティです。
ACLの要素であるACEのプロパティについては,「(4)アクセス制御情報の構成要素のプロパティ」を参照してください。
ローカルACLを表すVariableArray型プロパティです。
ACLの要素であるACEのプロパティについては,「(4)アクセス制御情報の構成要素のプロパティ」を参照してください。
バインドしているパブリックACLの個数と,パブリックACLのリストを表すプロパティです。
dbrProp_PublicACLCountプロパティは,バインドしているパブリックACLの個数を表すプロパティです。一つのオブジェクトには10個のパブリックACLをバインドできます。なお,このプロパティは読み取り専用です。
dbrProp_PublicACLIdsプロパティは,バインドしているパブリックACLのOIIDのリストを表すVariableArray型プロパティです。
個々のパブリックACLのOIIDは,VariableArray型プロパティの要素を表すCdbrCompoundオブジェクトのdbrProp_ACLIdElemプロパティとして設定します。
dbrProp_ACLIdsElemプロパティの詳細を表3 35に示します。
表3-23 dbrProp_ACLIdsElemプロパティの詳細
プロパティ識別子 | データ型 | 基本単位 | 制限値 | 検索の可否 | 説明 |
---|---|---|---|---|---|
dbrProp_ACLIdElem | String型 | Scalar型 | OIID長 | × | バインドしているパブリックACLのOIID |
パブリックACLを新規にバインドする場合,またはすべて更新する場合は,まず,このCdbrCompoundオブジェクトを要素としたVariableArray型プロパティを作成して,PutPropertyValuesメソッドによって,オブジェクトに設定します。
また,すでにパブリックACLをバインドしているオブジェクトに対してバインドするパブリックACLを追加する場合は,BindPublicACLメソッドを使用して,パブリックACLを追加します。
パブリックACLの設定方法の詳細については,「3.15.9(5)文書またはコンテナへのパブリックACLの設定」および「3.15.9(6)文書またはコンテナへのパブリックACLのバインド」を参照してください。
ログインユーザがユーザ権限定義ファイル,ACFlag,ローカルACLおよびバインドしているパブリックACLで与えられているパーミッションの論理和を表すプロパティです。なお,このプロパティは読み取り専用です。
ここでは,アクセス制御情報のうち,ACLの構成要素であるACEのプロパティについて説明します。
ACEのプロパティを,次の表に示します。
表3-24 ACEのプロパティ
データ名称 | プロパティ識別子 | データ型 | 基本単位 | 制限値 | 検索の可否 | 説明 |
---|---|---|---|---|---|---|
サブジェクト | dbrProp_Subject | String型 | Scalar型 | sバイト | × | サブジェクトの識別子 s:サブジェクトの最大長※ |
サブジェクト種別 | dbrProp_SubjectType | Integer32型 | Scalar型 | 4バイト | × | サブジェクト種別を表す定数 |
パーミッション | dbrProp_Permission | Integer32型 | Scalar型 | 4バイト | × | パーミッションを表す定数 |
サブジェクトには,次のどれかを指定します。
表3-25 システムサブジェクトの定数と意味
定数 | 意味 |
---|---|
DBR_SYSSUBJECT_SELF | 対象オブジェクトの所有者を表すサブジェクトです。
|
DBR_SYSSUBJECT_EVERYONE | すべてのユーザを表すサブジェクトです。 |
サブジェクト種別には,サブジェクトに指定した内容に応じて,種別を示す定数を指定します。
サブジェクトに指定したユーザまたはグループに対して設定するパーミッションを表す定数を指定します。
パーミッションとして指定する値については,「3.15.4 パーミッションの種類」を参照してください。
パブリックACLは,文書空間に独立して存在するオブジェクトです。
パブリックACLに設定するプロパティについて,次の表に示します。
表3-26 パブリックACLに設定するプロパティ
プロパティ識別子 | データ型 | 基本単位 | 制限値 | 検索の可否 | 説明 |
---|---|---|---|---|---|
dmaProp_OIID | Object型 | Scalar型 | OIID長 | ○ | パブリックACLを識別するOIID |
dbrProp_OwnerId | String型 | Scalar型 | 1~uバイト | ○ | パブリックACL所有者のユーザ識別子 u:ユーザ識別子の最大長※1 |
dbrProp_ACL | Object型 | VariableArray型 | ACEは64個まで | × | パブリックACLのローカルACL。 ほかのオブジェクトによって共有されるACLを指定する |
dbrProp_SACL | Object型 | VariableArray型 | ACEは64個まで | × | パブリックACLのセキュリティACL |
dbrProp_BindObjectCount | Integer32型 | Scalar型 | - | × | バインドしているオブジェクトの数※2 |
dbrProp_UserPermission | Integer32型 | Scalar型 | - | × | ログインユーザに設定されているパーミッションの論理和※3 |
(ユーザ定義プロパティの識別子) | - | - | - | ○ | ユーザが任意に追加したプロパティ |
なお,パブリックACLのローカルACLには,複数のオブジェクト間で共有したいアクセス制御情報を設定します。パブリックACLに対するアクセス制御情報を設定するものではありません。
パブリックACL自身に対するアクセス権については,「3.15.3(2)(a)パブリックACL」を参照してください。