この章では、複数のルート・ユーザーおよび特権サブシステムの管理方法について説明します。また、サーバーを安全に管理するために必要な様々なユーザー・アカウントの構成およびメンテナンス手順についても説明します。
この章の構成は、次のとおりです。
Oracle Unified Directoryは、ルート・ユーザー、グローバル管理者およびサーバーの管理者を構成できる柔軟な特権サブシステムを備えています。複数のルート・ユーザーを構成して、管理者ごとに異なるroot特権を割り当てることができます。管理ドメインについては、ネットワーク内またはレプリケート環境内の管理ドメインを管理する複数のドメイン管理者を構成することもできます。
この章で説明する手順の使用を開始する前に、サーバーに関する次のガイドラインを決定する必要があります。
ルート・ユーザー数、各ルート・ユーザーの特権およびリソース制限(制限が必要な場合)。
管理者数、各管理者の特権およびリソース制限(制限が必要な場合)。
システムのユーザー・アカウントに関するガイドライン。
サーバーおよび特定のユーザー・グループのパスワード・ポリシー。
Oracle Unified Directoryは、"cn=Directory Manager"
というデフォルトのルートDN(ルート・ユーザー)を1つ備えています。このデフォルトのルートDNは、サーバー内のすべてのデータに対する完全な読取りおよび書込みアクセスを含む特殊特権を割り当てられたユーザー・エントリです。ルートDNは、UNIXのルート・ユーザーまたはスーパーユーザーに相当し、アクセス制御を回避してサーバー上でタスクを実行できます。ルート・ユーザーは、サーバーの"cn=Root DNs,cn=config"
ブランチの下にあるcn=Directory Manager,cn=Root DNs,cn=config
で定義されます。
ルート・ユーザーは、次の面で通常のユーザー・エントリとは異なります:
構成。サーバー構成(cn=config
)内に存在することが可能なユーザー・アカウントはルート・ユーザーのみです。
特権の継承。ルート・ユーザーは、デフォルトのルート・ユーザー特権セットを自動的に継承します。通常のユーザーは、明示的に付与されないかぎり、どのような特権も自動的には受け取りません。特権は、実際、仮想またはこの両方のroot-privilege-name属性を使用して、エントリ内で付与できます。
ロックダウン・モード。サーバーにロックダウン・モードを開始または終了させることができるユーザーは、ルート・ユーザーのみです。これらの操作はループ・インタフェースを介してのみ可能です。
サーバーでは、複数のルート・ユーザー(それぞれがそのサーバー上に固有のエントリと固有の資格証明セットを保有)をサポートしています。そのため、特定のタスクについてルート・アクセス権を必要とし、ルート・ユーザーの完全な特権セットは必要としない可能性があるユーザーに対しても特権を割り当てることが可能です。各エントリでは、GSSAPI SASLメカニズムなどの厳密な認証やパスワード・ポリシーの割当またはリソース制限の追加(スキーマでこの制限が可能な場合)を行うことができ、ルート・ユーザーごとにまったく異なる構成を設定できます。
特権サブシステムでは、複数のルート・ユーザーの構成をサポートしています。
特権サブシステムは、ルート・ユーザーの特定のアクセス特権セットのみを必要とする可能性があるユーザーに対して、特権を絞り込んで割り当てることを可能にします。ルート・ユーザーには、"cn=Root DNs,cn=config"
サブツリー内のdefault-root-privilege-name
属性で定義されている特権セットが自動的に付与されます。
特権サブシステムはアクセス制御サブシステムからは独立していますが、一部の操作にはアクセス制御が適用されることがあります。
ルート・ユーザーには、次の特権セットが自動的に割り当てられます。
特権 | 説明 |
---|---|
backend-backup |
バックエンドのバックアップ・タスクのリクエストをユーザーに許可します。 |
backend-restore |
バックエンドのリストア・タスクのリクエストをユーザーに許可します。 |
bypass-acl |
アクセス制御評価の回避をユーザーに許可します。 |
bypass-lockdown |
サーバー・ロックダウン・モードの回避を関連付けられたユーザーに許可します。 |
cancel-request |
任意のクライアント・リクエストの取消をユーザーに許可します。 |
config-read |
サーバー構成への読取りアクセスをユーザーに許可します。 |
config-write |
サーバー構成への書込みアクセスをユーザーに許可します。 |
disconnect-client |
任意のクライアント接続の終了をユーザーに許可します。 |
ldif-export |
LDIFエクスポート・タスクのリクエストをユーザーに許可します。 |
ldif-import |
LDIFインポート・タスクのリクエストをユーザーに許可します。 |
modify-acl |
サーバーに定義されているアクセス制御命令の変更をユーザーに許可します。 |
password-reset |
ユーザー・パスワードのリセットをユーザーに許可します。 |
privilege-change |
ユーザーに割り当てられた特権セットの変更またはデフォルトのroot特権セットの変更をユーザーに許可します。 |
server-restart |
サーバー再起動タスクのリクエストをユーザーに許可します。 |
server-shutdown |
サーバー停止タスクのリクエストをユーザーに許可します。 |
subentry-write |
LDAPサブエントリ書込み操作の実行を関連付けられたユーザーに許可します。 |
unindexed-search |
索引なし検索操作のリクエストをユーザーに許可します。 |
update-schema |
サーバー・スキーマの更新をユーザーに許可します。 |
ルート・ユーザーには、次の特権を割り当てることができます。
特権 | 説明 |
---|---|
jmx-notify |
JMX通知のサブスクライブをユーザーに許可します。 |
jmx-read |
JMX属性値の読取りをユーザーに許可します。 |
jmx-write |
JMX属性値の更新をユーザーに許可します。 |
proxied-auth |
プロキシ設定された認可制御の使用または代替SASL認証IDのリクエストをユーザーに許可します。 |
dsconfig
によるルート・ユーザーの管理ルート・ユーザーの管理にはdsconfig
コマンドを使用します。詳細は、第17.1項「dsconfig
を使用したサーバー構成の管理」を参照してください。
デフォルトのルート・ユーザーは様々な特権を保有しています。これらの特権はdefault-root-privilege-name
プロパティの値として格納されています。
デフォルトのルート・ユーザー特権を表示するには、次のdsconfig
コマンドを実行します:
$ dsconfig -h localhost -p 4444 -D "cn=directory manager" -j pwd-file -n \ get-root-dn-prop Property : Value(s) ----------------------------:-------------------------------------------------- default-root-privilege-name : backend-backup, backend-restore, bypass-acl, : cancel-request, config-read, config-write, : disconnect-client, ldif-export, ldif-import, : modify-acl, password-reset, privilege-change, : server-restart, server-shutdown, : unindexed-search, update-schema
ルート・ユーザー特権の最も容易な管理方法は、対話モードでdsconfig
を使用することです。対話モードでは画面の指示に従ってルート・ユーザー構成を変更できるため、この手順はここでは取り上げません。
デフォルトのルート・ユーザーの特権を追加または削除するには、default-root-privilege-name
プロパティの値を追加または削除します。このプロパティには次の値を保持できます:
backend-backup
backend-restore
bypass-acl
cancel-request
config-read
config-write
disconnect-client
jmx-notify
jmx-read
jmx-write
ldif-export
ldif-import
modify-acl
password-reset
privilege-change
proxied-auth
server-restart
server-shutdown
unindexed-search
update-schema
次の例では、dsconfig
を非対話モードで使用して、デフォルトのルート・ユーザーにjmx-notify
特権を追加します。
dsconfig
コマンドを次のように実行します:
$ dsconfig -h localhost -p 4444 -D "cn=directory manager" -j pwd-file -n \ set-root-dn-prop --add default-root-privilege-name:jmx-notify
ルート・ユーザーはcn=Root DNs,cn=config
エントリの下に格納されます。新しいルート・ユーザーを作成するには、LDIFでエントリを作成し、ldapmodify
コマンドを使用してそのエントリを追加します。
注意: cn=config 接尾辞は管理コネクタからのみ使用可能なため、SSLを使用して管理ポートからアクセスする必要があります。 |
ルート・ユーザーは、サーバーのデフォルトのルート・ユーザー特権セットを自動的に継承します。特定のルート・ユーザーの特権の追加または削除の詳細は、第29.3.5項「ルート・ユーザーの特権の変更」を参照してください。
ルート・ユーザーを作成するには、次のようにします。
cn=Root DNs,cn=config
エントリの下にルート・ユーザー・エントリを作成します。
次のLDIFファイルは、Administration Managerという新しいルート・ユーザー名を示しています。このエントリはadd-root-user.ldif
という名前のファイルに保存されています。
dn: cn=MyRootUser,cn=Root DNs,cn=config objectClass: inetOrgPerson objectClass: person objectClass: top objectClass: ds-cfg-root-dn-user objectClass: organizationalPerson userPassword: password cn: MyRootUser sn: MyRootUser ds-cfg-alternate-bind-dn: cn=MyRootUser givenName: Directory
ldapmodify
コマンドを使用して、エントリを追加します。
$ ldapmodify -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file \ --useSSL --defaultAdd --filename "add-root-user.ldif" Processing ADD request for cn=MyRootUser,cn=Root DNs,cn=config ADD operation successful for DN cn=MyRootUser,cn=Root DNs,cn=config
サーバーに定義されているすべてのルート・ユーザーを表示するには、ldapsearch
コマンドを使用します。
$ ldapsearch -p 4444 -b "cn=root DNs,cn=config" -D "cn=directory manager" -j pwd-file \ --useSSL "objectclass=*" dn dn: cn=Root DNs,cn=config dn: cn=MyRootUser,cn=Root DNs,cn=config dn: cn=Directory Manager,cn=Root DNs,cn=config
セキュア・ファイルにパスワードを作成します。
ldappasswordmodify
を使用して、パスワードを変更します。
$ ldappasswordmodify -h localhost -p 4444 -D "cn=MyRootUser" -j pwd-file \ --useSSL --newPasswordFile rootuser_pwd.txt The LDAP password modify operation was successful
特定のルート・ユーザーに対して異なる特権セットを割り当てるには、そのルート・ユーザーのエントリにds-privilege-name
属性を追加します。
次の例では、ルート・ユーザー"cn=MyRootUser,cn=Root DNs,cn=config"
に、プロキシ認可を使用する権限を割り当てます。この例では、ユーザー特権の変更権限と構成へのアクセス権限を削除します。特権の前のマイナス記号は、その特権が追加されるのではなく、削除されることを表します。
ルート・ユーザーのエントリに次のLDIF文を適用します:
dn: cn=MyRootUser,cn=Root DNs,cn=config changetype: modify add: ds-privilege-name ds-privilege-name: proxied-auth ds-privilege-name: -config-read ds-privilege-name: -config-write
この例のルート・ユーザー"cn=MyRootUser,cn=Root DNs,cn=config"
は、ルート・ユーザーに自動的に付与される特権のうち、config-read
特権とconfig-write
特権を除くすべての特権を継承します。また、このユーザーにはproxied-auth
特権も付与されます。
サーバーにバインドされているクライアント・アプリケーションで操作属性を使用することによって、検索操作に対するサーバーのリソース制限を設定できます。使用可能なリソース制限は次のとおりです:
検索制限。単一の検索操作中に調べることができる最大エントリ数を指定します。ds-rlim-lookthrough-limit
操作属性を使用します。
サイズ制限。単一の検索操作で返すことができる最大エントリ数を指定します。ds-rlim-size-limit
操作属性を使用します。
時間制限。検索操作の処理に使用できる最大時間を秒単位で指定します。ds-rlim-time-limit
操作属性を使用します。
次のLDIF update文では、前の項で作成した新しいルート・ユーザーに対してリソース制限を設定します。この文をルート・ユーザーのエントリに適用します。
dn: cn=MyRootUser,cn=Root DNs,cn=config changetype: modify add: ds-rlim-lookthrough-limit ds-rlim-lookthrough-limit: 1000 - add: ds-rlim-size-limit ds-rlim-size-limit: 500 - add: ds-rlim-time-limit ds-rlim-time-limit: 300
特定のリソース制限を無制限に設定するには、対応する属性の値を0
(ゼロ)に設定します。
一般に、管理者はほとんどのユーザーよりも広範な権限を保有します。デフォルトでは、管理者はOUD構成に格納されているため、レプリケートされません。複数の管理者を作成し、それぞれの管理者に異なるアクセス制御やリソース制限を割り当てることができます。
グラフィカル・インストーラまたはdsreplication
コマンドを使用したレプリケーション・サーバーの設定時には、グローバル管理者のユーザー名とパスワードを設定するように求められます。グローバル管理者は、レプリケート環境内の管理サーバーの管理とメンテナンスの責任者です。
注意: 管理バインドはcn=config のルートdns で解決されるため、ルート・ユーザーのみが管理ポートをバインドできます。 |
レプリケーション用に作成したグローバル管理者はcn=Administrators,cn=admin data
サブツリーに存在するため、レプリケートされ、レプリケートされたトポロジの各OUDインスタンスとともに使用できます。
グローバル管理者のエントリを表示するには、次のldapsearch
コマンドを実行します:
$ ldapsearch -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file \ --useSSL -b "cn=Administrators,cn=admin data" -s sub "(objectclass=*)" dn: cn=Administrators,cn=admin data objectClass: top objectClass: groupofurls description: Group of identities which have full access. cn: Administrators memberURL: ldap:///cn=Administrators,cn=admin data??one?(objectclass=*) dn: cn=admin,cn=Administrators,cn=admin data objectClass: person objectClass: top userPassword: {SSHA}+ed1wbhcWjxtv2zJ6OHEA2TuE9n1qIJGnuR94w== description: The Administrator that can manage all the OUD instances. cn: admin
レプリケーション用に作成されたグローバル管理者は、管理者権限のフルセットを持っています。場合によっては、一部の管理者権限のみを持つ管理者を別途作成することが有用な場合があります。たとえば、モニター管理者はOUD構成を読み取る権限を持ちますが、変更はできません。カスタム管理者は、レプリケートされた接尾辞cn=admin data
に格納されます。グローバル管理者同様、カスタム管理者はレプリケートされます。
限られた権限を持つ管理者を作成するには、cn=admin data
接尾辞に独自の管理者コンテナ・ノードを作成します。
./ldapmodify -a -p 4444 -Z -X -D "cn=directory manager" -w **** dn: cn= my admins,cn=admin data objectclass: top objectClass: ds-cfg-branch dn: cn=monitor,cn=my admins,cn=admin data objectClass: person cn: monitor sn: monitor userpassword: ****
この段階で、これらの資格証明(cn=monitor,cn=my admins,cn=admin data
)をdsconfig
で使用できます。dsconfig
コマンドではそのユーザーを認証できます。ただし、管理者は権限がないため、構成を読み取ることはできません。dsconfig
コマンドで、構成内の移動時に次のエラーが報告されます。
The Administration Connector could not be modified because you do not have the correct authorization
適切な権限を割り当て、管理者が必要な処理を実行できるようにする必要があります。前述の例では、管理者にconfig-read
権限を割り当てる必要があります。管理者が構成に対して権限アクションを実行できるようbypass-acl
権限も必要です。
./ldapmodify -p 4444 -Z -X -D "cn=directory manager" -w **** dn: cn=monitor,cn=my admins,cn=admin data changetype: modify add: ds-privilege-name ds-privilege-name: bypass-acl ds-privilege-name: config-read
これで管理者はdsconfig
を使用して構成を読み取れます。ただし、構成を変更しようとすると、次のエラーになります。
The Configuration could not be modified because you do not have the correct authorization.