CLI に相当するコマンドは、一度に 1 つのコマンドを実行する単一行コマンドモードで動作する pgtool です。pgtool には、「コマンドの要約」で説明している多数のサブコマンド、オプション、オペランドがあります。オプションは、フルキーワードまたは短いキーワード (ショートカット) を使用して指定できます。以下のコマンド説明では、フルキーワードを使用しています。対応するショートカットは、表 3–2 を参照してください。
エンティティとポリシーグループを保存するデータストアを見つけ、照会を行うには、ブートストラップ情報が必要です。必要となるブートストラップ情報は、サーバー、ポート番号、ベース識別名 (DN)、およびタイプです。この情報はコマンド行で指定することも、あるいはブートストラップファイルからアクセスすることもできます。
ブートストラップファイルの場所は、コマンド行で指定できます。コマンド行で指定しない場合は、CLI と共にインストールされているブートストラップファイルが使用されます。このファイルは、キーネームによるインストールしか行えません。このファイルの編集は、適切なブートストラップ値を提供する管理者だけに任せるべきです。
CLI では、コマンド行にブートストラップ情報を指定することもできます。次に、ブートストラップ詳細を指定するオプションを示します。
--hostname=<hostname> (ストレージバックエンドのホストを担当するサーバーの名前)
--base=<base name> (ストレージバックエンドのベースエントリ)
--port=<port number> (ストレージバックエンドによって使用されるポート番号)
--type=<type of back end> (LDAP など)
コマンドを実行するごとにユーザー名とパスワードが必要になります。
CLI には、管理者のホームディレクトリの資格情報ファイルにユーザー名とパスワードのペアを保存できるログインコマンドがあります。このファイル .apocpass は、アクセスが制限されています。login コマンドが実行されると、CLI は apocpass ファイルがホームディレクトリに存在するかどうかをチェックします。このファイルは存在するが、このファイルに正しいアクセス権 (600) が設定されていない場合は、コマンドはエラーを表示して終了します。ユーザー名を指定した場合は、パスワードの入力を求めるメッセージが表示されます。ユーザー名を指定しなかった場合は、ユーザー名とパスワードの入力を求めるメッセージが表示されます。このユーザー名とパスワードの認証は、匿名アクセスを使用して行われます。匿名アクセスがサポートされていない場合は、承認済みの DN とパスワードの入力を求めるメッセージが表示されます。認証が正常に完了すると、.apocpass ファイルにエントリが追加されます。このエントリの鍵は、サーバー / ポート / ベース DN 情報とユーザー名から作成されます。
たとえば、ユーザー “jmonroe” は、ポート 389 上のベースエントリ o apoc を持つサーバー cdelab1.ireland.sun.com のパスワードを、鍵 cdelab1.ireland.sun.com:389;o=apoc:jmonroe を使用して保存できます。保存される値は、ユーザー DN とパスワードです。この方法を採用することで、このバックエンドを利用する多数のユーザーのユーザー名とパスワードのペアを保存できます。同様に、ほかのバックエンドについてもユーザー名とパスワードのペアを保存できます。ログインコマンドが正常に完了すると、ユーザー名またはパスワードを指定することなくほかの CLI コマンドを実行できます。
ほかのコマンドについては、CLI はまずそのユーザー用の .apocpass ファイルが存在するかどうかをチェックします。このファイルが存在しないと、ユーザー名とパスワードの入力を求めるメッセージが表示されます。このユーザー名とパスワードの認証が正常に完了すると、コマンドが実行されます。資格情報ファイルが存在し、かつコマンド行にユーザー名が指定された場合、CLI はこのホスト、ポート、ベース DN、およびユーザー名のエントリを検索します。エントリが存在すると、保存されているユーザー DN とパスワードが使用されてコマンドが実行されます。エントリが存在しないと、パスワードの入力を求めるメッセージが表示されます。コマンド行でユーザー名が指定されないと、.apocpass ファイルが検索され、ホスト / ポートとベース DN のペアを使用した鍵の確認が行われます。このペアが一意のエントリとして存在する場合、保存されているユーザー DN とパスワードが使用されてコマンドが実行されます。エントリが一意でない場合、ユーザー名の入力を求めるメッセージが表示されます。これがエントリと一致すると、保存されているユーザー DN とパスワードが使用されてコマンドが実行されます。これが一致しないと、パスワードの入力を求めるメッセージが表示されます。パスワードの入力を求めるメッセージがユーザーに表示される場合は、.apocpass ファイル内の、このホスト / ポートとベース DN のペアのエントリが使用されてユーザー名とパスワードの認証が行われます。そのようなエントリが存在しない場合には、匿名アクセスが使用されて認証が行われます。
コマンドを実行するたびに policymgr API に対する結合と初期化が行われ、コマンド実行が完了したところで終了します。errir を生成してコマンドが終了しても、構成ポリシーに変更は加えられていません。
エンティティは、uid=jmonroe,ou=People,o=apoc のように LDAP DN を使用して表現されます。
この節では、Configuration Manager CLI の機能について説明します。
使用できるすべての CLI コマンドの一覧を表示するには、pgtool --help と入力します。
バージョン情報を表示するには、pgtool --version と入力します。
ポリシーグループリポジトリのポリシーグループをエンティティに割り当てます。
add [--username=<name>] [--scope=<user/host>] <name> <entity>
--username=<name> : 構成リポジトリで使用されている書式で管理者のユーザー名を指定します (例: "jmonroe")。
--scope=<user/host> : ポリシーグループのスコープ (ユーザーまたはホスト) を指定します。このオプションを指定しないと、デフォルトでユーザースコープが使用されます。
<name> : エンティティに割り当てられるポリシーグループの名前を指定します。
<entity> : このエンティティ名は、ストレージバックエンドで使用されている書式で指定します (たとえば、LDAP バックエンドの場合、一意の名前で指定)。
% pgtool add --username=jmonroe UserPolicyGroup1 cn Role1,o=staff,o=apoc
ユーザー “jmonroe” が、エンティティ “cn=Role1,o=staff,o=apoc” に対し、ポリシーグループ “UserPolicyGroup1” を割り当てます。
create コマンドを実行すると、新しい空のポリシーグループが作成されます。
create [--username=<name>] [--name=<policy group name>] [--scope=<user/host>] [--entity=<entity name>] [--priority=<priority integer>]
--username=<name> : 構成リポジトリで使用されている書式で管理者のユーザー名を指定します (例: “jmonroe”)。
--name=<policy group name> : このコマンドは、ポリシーグループの名前を指定します。この名前とスコープを持つポリシーグループがこのレベルにすでに存在する場合、コマンドはエラーを表示して終了します。エンティティポリシーグループは制限されたデフォルト名を持つため、このオプションを --entity オプションと併用することはできません。
--scope=<user/host> : ポリシーグループのスコープ (ユーザーまたはホスト) を指定します。このオプションを指定しないと、デフォルトでユーザースコープが使用されます。
--entity=<entity name> : ポリシーグループが作成されるエンティティ。このオプションを指定しないと、ポリシーグループはポリシーグループリポジトリに含められます。エンティティポリシーグループは制限されたデフォルト名を持つため、このオプションを --name オプションと併用することはできません。
--priority=<priority integer>: ポリシーグループの優先度を指定する整数 (1 以上)。エンティティポリシーグループには変更できないデフォルトの優先度が割り当てられているため、このオプションは --entity オプションと併用することはできません。指定された優先度がこの層におけるこのスコープの既存のポリシーグループの優先度と同じである場合、コマンドはエラーを表示して終了します。優先度を指定しないと、1 が割り当てられます。
% pgtool create --username=jmonroe --scope=host --name=NewHostGroup1
スコープが「host」である新しいポリシーグループ「NewHostGroup1」を作成します。
ポリシーグループを削除します。
delete [--username=<name>] [--name=<policy group name>] [--scope=<user/host>] [--entity=<entity name>]
--username=<name> : 構成リポジトリで使用されている書式で管理者のユーザー名を指定します (例: "jmonroe")。
--name=<policy group name> : 削除するポリシーグループの名前を指定します。エンティティポリシーグループは制限されたデフォルト名を持つため、このオプションを --entity オプションと併用することはできません。ポリシーグループが存在しないか、一意のグループとして識別できない場合は、コマンドはエラーを表示して終了します。
--scope=<user/host> : ポリシーグループのスコープ (ユーザーまたはホスト) を指定します。このオプションを指定しないと、デフォルトでユーザースコープが使用されます。
--entity=<entity name> : ポリシーグループが保存されるエンティティ。このオプションを指定しないと、ポリシーグループはポリシーグループリポジトリに含められます。エンティティポリシーグループは制限されたデフォルト名を持つため、このオプションを --name オプションと併用することはできません。
% pgtool delete --username=jmonroe --scope=host --name=renamedNewHostGroup1
“renamedNewHostGroup1” ポリシーグループを削除します。
zip ファイル形式のポリシーグループを、特定の場所にエクスポートします。このポリシーグループはポリシーグループリポジトリの一部であるか、あるいはエンティティポリシーグループです。
export [--username=<name>] [--name=<policy group name>] [--scope=<user/host>] [--entity=<entity name>] <target>
--username=<name> : 構成リポジトリで使用されている書式で管理者のユーザー名を指定します (例: “jmonroe”)。
--name=<policy group name> : ポリシーグループの名前を指定します。エンティティポリシーグループは制限されたデフォルト名を持つため、このオプションを --entity オプションと併用することはできません。ポリシーグループリポジトリには、同じ名前で 2 つの ポリシーグループ、ユーザースコープを持つポリシーグループとホストスコープを持つポリシーグループが存在する可能性があります。スコープを指定しないと、デフォルトでユーザースコープが使用されます。
--scope=<user/host> : ポリシーグループのスコープを指定します。ユーザーまたはホストを指定できます。スコープを指定しないと、デフォルトでユーザーが使用されます。
--entity=<entity name> : ポリシーグループが保存されるエンティティ。エンティティポリシーグループは制限されたデフォルト名を持つため、このオプションを --name オプションと併用することはできません。このオプションを指定しないと、ポリシーグループはポリシーグループリポジトリに含められます。このエンティティ名は、ストレージバックエンドで使用されている書式で指定します (たとえば、LDAP バックエンドの場合、一意の名前で指定)。
<target> : zip ファイルを保存するパスとファイル名。ファイル名を指定しないと、デフォルトで /tmp/<policy group name>.zip が使用されます。宛先が書き込み可能でない場合、コマンドはエラーを表示して終了します。
% pgtool export --scope=host --name=HostPolicyGroup1 --username=jmonroe /tmp/newdir
新しいディレクトリ /tmp/newdir に作成された HostPolicyGroup1.zip に “HostPolicyGroup1” をエクスポートします。
特定のソースから、zip ファイル形式で保存されているポリシーグループをインポートします。ポリシーグループは、ポリシーグループリポジトリまたはエンティティに対してインポートできます。
import [--username=<name>] [--name=<policy group name>] [--scope=<user/host>] [--entity=<entity name>] [--priority=<priority integer>] <source>
--username=<name> : 構成リポジトリで使用されている書式で管理者のユーザー名を指定します (例: “jmonroe”)。
--name=<policy group name> : このコマンドは、ポリシーグループの名前を指定します。エンティティポリシーグループは制限されたデフォルト名を持つため、このオプションを --entity オプションと併用することはできません。同一の名前とスコープを持つ 2 つのポリシーグループを同じ場所に作成することはできません。ポリシーグループ名を指定しないと、デフォルトで.zip ファイルの名前が使用されます。この名前とスコープを持つポリシーグループがすでにポリシーグループリポジトリ内に存在する場合、そのポリシーグループは上書きされます。
--scope=<user/host> : ポリシーグループのスコープを指定します。ユーザーまたはホストを指定できます。スコープを指定しないと、デフォルトでユーザーが使用されます。
--entity=<entity name> : ポリシーグループが保存されるエンティティ。このオプションを指定しないと、ポリシーグループはポリシーグループリポジトリに含められます。エンティティポリシーグループは制限されたデフォルト名を持つため、このオプションを -name オプションと併用することはできません。このエンティティ名は、ストレージバックエンドで使用されている書式で指定します (たとえば、LDAP バックエンドの場合、一意の名前で指定)。
--priority=<priority integer> : ポリシーグループリポジトリにおける優先度を指定する整数 (1 以上)。エンティティポリシーグループには変更できないデフォルトの優先度が割り当てられているため、このオプションは --entity オプションと併用することはできません。指定された優先度がリポジトリにおけるこのスコープの既存のポリシーグループの優先度と同じである場合、コマンドはエラーを表示して終了します。優先度を指定しないと、1 が割り当てられます。
<source> : zip ファイルを保存するパスとファイル名。
% pgtool import --scope=host --name=NewHostPolicyGroup1 --username=jmonroe --priority=7 /tmp/HostPolicyGroup1.zip
HostPolicyGroup1.zip から、名前が “NewHostPolicyGroup1”、スコープが “host”、優先度が “7” であるポリシーグループをインポートします。
オプションをまったく指定しないと、ポリシーグループリポジトリ内のすべてのポリシーグループが表示されます。ストレージバックエンドを 2 つ指定すると、ユーザーバックエンドストレージのポリシーグループリポジトリ内のすべてのポリシーグループが一覧表示されます。指定されたオプションに基づいて、list は特定のエンティティ、または特定のポリシーグループを使用するエンティティに割り当てられているすべてのポリシーグループを一覧表示できます。ポリシーグループが一覧表示される際には、名前、スコープ、優先度、エンティティ (該当する場合) なども表示されます。エンティティは、それらを区別する一意の名前で示されます。
list [--username=<name>] [--scope=<user/host>] [--entity=<entity name>][--name =<policy group name>]
--username=<name> : 構成リポジトリで使用されている書式で管理者のユーザー名を指定します (例: “jmonroe”)。
--scope=<user/host> : このオプションだけを指定すると、ポリシーグループリポジトリ内に存在する指定されたスコープのすべてのポリシーグループが一覧表示されます。このオプションを指定しないと、デフォルトでユーザースコープが使用されます。-entity オプションと併用すると、エンティティに割り当てられている、このスコープのすべてのポリシーグループが一覧表示されます。-name オプションと併用すると、指定したスコープの指定したポリシーグループを使用するすべてのエンティティが一覧表示されます。
--entity=<entity name> : 特定のエンティティに割り当てられているポリシーグループを一覧表示します。
--name=<policy group name> : 指定されたポリシーグループを使用するエンティティを一覧表示します。
% pgtool list --username=jmonroe
管理者 “jmonroe” のグローバルポリシーグループを一覧表示します。
% pgtool list --username=jmonroe --name=UserPolicyGroup1
ポリシーグループ “UserPolicyGroup1” を使用しているエンティティを一覧表示します。
管理者のホームディレクトリ内のファイルに、データストアバックエンドのユーザー名とパスワードを保存します。このユーザー名とパスワードは、将来 pgtool を呼び出すときに使用できます。
この資格情報は、管理者のホームディレクトリの .apocpass というファイルに保存されます。このファイルがすでに存在し、このファイルに正しいアクセス権が設定されていない場合、コマンドはエラーを表示して終了します。ユーザー名を入力すると、パスワードの入力を求めるメッセージが表示されます。ユーザー名が入っていないと、ユーザー名とパスワードの入力を求めるメッセージが表示されます。ユーザー名とパスワードの認証は、データストアに対する匿名アクセスを使用して行われます。匿名アクセスがサポートされていない場合は、承認済みのユーザー名とパスワードの入力を求めるメッセージが表示されます。承認済みのユーザー名による認証が失敗する場合、コマンドはエラーを表示して終了します。認証が完了すると、ユーザー名とパスワードのペアが管理者の .apocpass ファイルに保存されます。パスワードは、ホスト / ポート / ベースブートストラップ情報とユーザー名の組み合わせから成る鍵を使用して保存されます。ブートストラップファイルは、オプション引数として指定できます。あるいは、上記のほかのオプションを使用してブートストラップ情報を指定することもできます。どちらの方法も使用されない場合は、pgtool でインストールされているデフォルトのブートストラップファイルからブートストラップ情報が取得されます。ブートストラップ情報が利用できないか、資格情報ファイルが作成できない場合は、コマンドはエラーを表示して終了します。資格情報ファイルが正常に作成される場合は、このストレージバックエンドを使用する後続の pgtool コマンドでユーザー名とパスワードを指定する必要はありません。資格情報ファイルに保存されているユーザー名とパスワードの詳細が使用されます。
login [--username=<name>] [--file=<bootsrap file>] [--hostname=<hostname>] [--port=<portnumber>] [--base=<base name>] [--type=<type of back end>]
--username=<name> : 構成リポジトリで使用されている書式で管理者のユーザー名を指定します (例: "jmonroe")。
--file=<bootstrap file> : ブートストラップファイルの完全修飾パス。
--hostname=<hostname> : 必要なストレージバックエンドのホストの名前。これは、ブートストラップファイルによって提供される対応する情報の代わりに使用されます。
--port=<port number> : このストレージバックエンドによって使用されるポート番号。
--base=<base name> : このストレージバックエンドのベース。たとえば、LDAP バックエンドの場合、baseDN。
--type=<type of back end> : デフォルトは LDAP。
% pgtool login --username=jmonroe [メッセージが表示されたら正しいパスワードを入力]
“jmonroe” と “password” のエントリが入った ~/.apocpass というファイルが作成され、アクセス権 600 が設定されます。
ポリシーグループリポジトリ内のポリシーグループの優先度を変更します。
modify [--username=<name>] [--scope=<user/host>] <name> <priority>
--username=<name> : 構成リポジトリで使用されている書式で管理者のユーザー名を指定します (例: "jmonroe")。
--scope=<user/host> : ポリシーグループのスコープ (ユーザーまたはホスト) を指定します。このオプションを指定しないと、デフォルトでユーザースコープが使用されます。
<name> : ポリシーグループの名前を指定します。
<priority> : ポリシーグループの優先度を指定する整数 (1 以上)。指定された優先度がポリシーグループリポジトリにおけるこのスコープの既存のポリシーグループの優先度と同じである場合、コマンドは失敗します。
% pgtool modify --username=jmonroe UserPolicyGroup1 15
“UserPolicyGroup1” の優先度を 15 に変更します。
エンティティからポリシーグループを削除します。
remove [--username=<name>] [--scope=<user/host>] <name> <entity>
--username=<name> : 構成リポジトリで使用されている書式で管理者のユーザー名を指定します (例: "jmonroe")。
--scope=<user/host> : ポリシーグループのスコープ (ユーザーまたはホスト) を指定します。このオプションを指定しないと、デフォルトでユーザーが使用されます。
<name> : エンティティに割り当てられている、ポリシーグループリポジトリ内のポリシーグループの名前を指定します。
<entity>: エンティティの名前。
% pgtool remove --username=jmonroe UserPolicyGroup1 cn=Role1,o=staff,o=apoc
ユーザー “jmonroe” が、エンティティ “cn=Role1,o=staff,o=apoc” からポリシーグループ “UserPolicyGroup1” を削除します。
ポリシーグループリポジトリ内のポリシーグループの名前を変更します。
rename [--username=<name>] [--scope=<user/host>] <name> <newname>
--username=<name> : 構成リポジトリで使用されている書式で管理者のユーザー名を指定します (例: "jmonroe")。
--scope=<user/host> : 既存のポリシーグループのスコープ (ユーザーまたはホスト) を指定します。このオプションを指定しないと、デフォルトでユーザースコープが使用されます。
<name> : ポリシーグループリポジトリにおけるポリシーグループの現在の名前を指定します。
<newname> : ポリシーグループの新しい名前。この名前とスコープを持つポリシーグループがポリシーグループリポジトリ内にすでに存在する場合、コマンドはエラーを表示して終了します。
% pgtool rename --username=jmonroe NewUserGroup2 renamedNewUserGroup2
“NewUserGroup2” を “renamedNewUserGroup2” に変更します。