5.2. プロジェクトの階層
5.2.1. Identity サービスの階層型マルチテナンシー (HMT) リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトは、keystone のマルチテナンシーを使用して入れ子にすることができます。マルチテナンシーにより、サブプロジェクトは親プロジェクトのロール割り当てを継承することができます。
5.2.1.1. プロジェクトとサブプロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
階層型マルチテナンシー (HMT) は keystone のドメインとプロジェクトを使用して実装することができます。まず最初に新規ドメインを作成して、そのドメイン内にプロジェクトを作成します。これで、そのプロジェクトにサブプロジェクトを追加できるようになります。また、ユーザーをサブプロジェクトの admin ロールに追加すると、そのサブプロジェクトの管理者に昇格することができます。
openstack domain サブコマンドには keystone v3 が必要です。コマンドラインセッションで keystone v3 を 有効にするには、『Identity サービスとの統合』の「keystone v3 へのコマンドラインアクセス の有効化」を参照してください。
keystone の使用する HMT の構造は、現在 Dashboard では表示されません。
以下に例を示します。
1. corp という名前の keystone ドメインを新規作成します。
2. corp ドメイン内に親プロジェクト (private-cloud) を作成します。
3. private-cloud の親プロジェクト内で corp ドメインも指定して、サブプロジェクト (dev) を作成します。
4.qa という名前のサブプロジェクトをもう 1 つ作成します。
Identity API を使用してプロジェクトの階層を確認することができます。詳しくは、https://developer.openstack.org/api-ref/identity/v3/index.html?expanded=show-project-details-detail を参照してください。
5.2.1.2. ユーザーへのアクセス権の付与 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、新規作成したプロジェクトにはロールは割り当てられません。親プロジェクトに対するロールのパーミッションを割り当てる時に、--inherited フラグを指定して、サブプロジェクトが親プロジェクトからパーミッションを継承するように指定することができます。たとえば、親プロジェクトに対する admin ロールのアクセス権のあるユーザーには、サブプロジェクトへの admin アクセス権も付与されます。
1. プロジェクトに割り当てられている既存のパーミッションを確認します。
openstack role assignment list --project private-cloud
$ openstack role assignment list --project private-cloud
2. 既存のロールを確認します。
3. ユーザーアカウント user1 に private-cloud プロジェクトに対するアクセス権を付与します。
openstack role add --user user1 --user-domain corp --project private-cloud _member_
$ openstack role add --user user1 --user-domain corp --project private-cloud _member_
--inherited フラグを指定して、上記のコマンドを再度実行します。その結果、user1 には private-cloud のサブプロジェクト (ロールの割り当てが継承されている) に対するアクセス権も付与されます。
openstack role add --user user1 --user-domain corp --project private-cloud _member_ --inherited
$ openstack role add --user user1 --user-domain corp --project private-cloud _member_ --inherited
4.パーミッションの更新の結果を確認します。
この結果では、user1 が qa および dev プロジェクトへのアクセス権を継承していることが確認できます。また、親プロジェクトに --inherited フラグが適用されたので、user1 には今後作成されるすべてのサブプロジェクトに対するアクセス権が自動的に付与されます。