ここでは,アクセス制御情報のうち,オブジェクトごとに設定するアクセス制御情報について説明します。
オブジェクトごとのアクセス制御情報は,ACFlagまたはACLとして設定します。また,オブジェクトごとに設定されたアクセス制御情報を管理するための情報も,ACLとして設定します。
ここでは,ACFlagについて説明します。
ACFlagは,所有者,プライマリグループおよび全ユーザに対して許可する操作を設定できるアクセス制御情報です。
例えば,「所有者にはすべての操作を許可する」としたり,「プライマリグループに所属するユーザには参照,更新を許可する」としたりできます。また,「すべてのユーザに参照を許可する」といった指定もできます。
ACFlagは,データベース上ではトップオブジェクトと同じテーブルにあるプロパティです。このため,ACLを使用したアクセス権判定に比べて高速なアクセス権判定ができるのが特長です。
ACFlagは,次の三つのプロパティで表されます。
これらのプロパティは,クラスライブラリのオブジェクトのトップオブジェクトに存在します。
ACFlagの参照には,GetPropertyValuesメソッドなどのプロパティを参照するメソッドを使用します。設定や更新には,PutPropertyValuesメソッドを使用します。ただし,これらのプロパティを検索に使用することはできません。
ACFlagによってアクセス権を設定できるのは,次の3種類のユーザおよびグループです。
ACLは,ユーザやグループそれぞれに対して,許可する操作を設定して,アクセス権を与えるためのリストです。このリストは,操作を許可する対象(ユーザまたはグループなど),その対象が何であるかの種別,および許可する操作の種類を組み合わせたものを,個々の要素とします。個々の要素は,ACEとして作成します。
例えば,文書やコンテナを表すオブジェクトに対して,「ユーザAに対してはすべての操作を許可する」,「ユーザBに対しては参照と編集を許可する」,「グループXに対しては参照だけを許可する」といった詳細なアクセス権の設定ができます。この場合,「ユーザAに対してすべての操作を許可する」や「ユーザBに対して参照と編集を許可する」という,個々の対象に対する設定が,ACEに対応します。ACLとACEの関係を次の図に示します。
図3-75 ACLとACEの関係
ACLは,クラスライブラリのオブジェクトのプロパティである,dbrProp_ACLプロパティとして表されます。dbrProp_ACLプロパティは,CdbrVariableArrayクラスのオブジェクトとして扱う,VariableArray型プロパティです。個々のACEはCdbrCompoundクラスのオブジェクトとして扱います。このため,ACLおよびACEの作成などの操作には,CdbrVariableArrayクラスおよびCdbrCompoundクラスのメソッドを使用します。
VariableArray型プロパティとして作成したACLは,GetPropertyValuesメソッドなどを使用して参照できます。また,PutPropertyValuesメソッドを使用してクラスライブラリのオブジェクトに設定,更新できます。ただし,このプロパティを検索に使用することはできません。
なお,ACLは,設定されるオブジェクトや用途によって,次の3種類に分けられます。
パブリックACLは,複数のオブジェクトに対して同じアクセス制御情報を設定したい場合に使用します。パブリックACLを使用すると,複数の文書やコンテナの間で,同じアクセス制御情報を共有できます。
パブリックACLは,ACLを共有するために使用する,独立したオブジェクトです。このオブジェクトに共有したいACLを設定し,複数のオブジェクトから参照することで,ACLを共有できます。
例えば,それぞれ異なるユーザが作成した文書Aと文書Bについて,どちらの文書にも「第一設計部に所属するユーザ全員に対して参照と編集を許可したい」,また,「営業部に所属するユーザ全員に対して参照だけを許可したい」場合,まず「第一設計部に所属するユーザ全員に対して参照と編集を許可する」というACEと,「営業部に所属するユーザ全員に対して参照だけを許可する」というACEを作成します。次に,これらのACEを要素として,ACLを作成します。このACLを,パブリックACLを表すオブジェクトのプロパティ(dbrProp_ACLプロパティ)として設定することで,複数のオブジェクト間で共有できるパブリックACLが作成できます。文書Aと文書Bには,このパブリックACLを参照するように設定します。
なお,文書やコンテナを表すオブジェクトからパブリックACLを参照することを,バインドといいます。また,パブリックACLのバインドを解除することを,アンバインドといいます。パブリックACLの概要を,次の図に示します。
図3-76 パブリックACLの概要
パブリックACLは,CdbrPublicACLクラスのオブジェクトとしてCreateObjectメソッドをコールして作成します。このオブジェクトは,DMAオブジェクトの,edmClass_PublicACLクラスのオブジェクトを構成要素とします。パブリックACLとして,複数のオブジェクト間で共有するために設定するアクセス制御情報は,CdbrPublicACLオブジェクトのdbrProp_ACLプロパティとして設定します。
また,パブリックACLは,ローカルACLやセキュリティACLとは異なり,独立して文書空間に存在する,OIIDを持つオブジェクトです。ユーザ定義プロパティを設定したり,OIIDやユーザ定義プロパティを指定して検索も実行したりすることもできます。ユーザ定義プロパティの設定方法については,マニュアル「DocumentBroker Version 3 システム導入・運用ガイド」を参照してください。
なお,パブリックACLには,それ自身をアクセス制御するためのACFlagやローカルACLはありません。パブリックACLに対するアクセス権は,次に示すユーザに与えられています。
表3-14 パブリックACLに対するアクセス権
実行できる操作 | 対象 |
---|---|
作成 | 文書空間にオブジェクト作成権限を持つユーザ |
参照 | すべてのユーザ |
ローカルACLとユーザプロパティの変更 | セキュリティACLでアクセス制御情報変更権が与えられているユーザ,パブリックACLの所有者およびセキュリティ管理者 |
セキュリティACLの変更 | パブリックACLの所有者およびセキュリティ管理者 |
削除 | パブリックACLの所有者およびセキュリティ管理者 |
ローカルACLは,オブジェクトごとのアクセス権を設定するためのACLです。
ローカルACLは,個々のオブジェクトのdbrProp_ACLプロパティとして設定します。dbrProp_ACLプロパティは,ACEを表すオブジェクトを構成要素とした,VariableArray型プロパティです。
DocumentBrokerでは,ACFlagやACLを使用して,オブジェクトに対するユーザのアクセスを制御します。オブジェクトに対してアクセス権を持たないユーザでも,ACFlagやACLを変更すれば,アクセス権を得ることができます。このため,ACFlagやACLは,適切な権利を持つユーザだけが変更でき,それ以外のユーザからは変更されないように制御する必要があります。
アクセス制御情報を変更するための権利を,アクセス制御情報変更権といいます。アクセス制御情報変更権は,各オブジェクトのプロパティに,ACLとして設定されています。アクセス制御情報変更権を制御するためのACLをセキュリティACLといいます。
セキュリティACLは,オブジェクトのdbrProp_SACLプロパティに,VariableArray型プロパティとして設定します。
CreateObjectメソッドをコールしてオブジェクトを作成した時点では,オブジェクトの所有者およびセキュリティ管理者がアクセス制御情報変更権を持っています。また,CreateObjectメソッドの引数としてdbrProp_SACLプロパティの初期値を設定した場合は,初期値として設定されたユーザやグループもアクセス制御情報変更権を持ちます。
作成後のオブジェクトで,アクセス制御情報変更権をほかのユーザやグループに対して与えたい場合は,所有者またはセキュリティ管理者が必要に応じてセキュリティACLを変更してください。
なお,パブリックACLはオブジェクトとして独自のセキュリティACLを持っています。このため,パブリックACLをバインドしている文書やコンテナを表すオブジェクトのアクセス制御情報変更権を持つユーザであっても,パブリックACLに設定されたACLを変更することはできません。また,パブリックACLのアクセス制御情報変更権を持つユーザが,そのパブリックACLをバインドしているオブジェクトのACFlagまたはACLを変更することはできません。