OpenStack Identity リソースの管理
ユーザーと keystone 認証の設定
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
インスタンスの作成中に、ロールベースのアクセス制御 (RBAC) 共有セキュリティーグループをインスタンスに直接適用することはできません。RBAC 共有セキュリティーグループをインスタンスに適用するには、最初にポートを作成し、共有セキュリティーグループをそのポートに適用してから、そのポートをインスタンスに割り当てる必要があります。セキュリティーグループのポートへの追加 を参照してください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。
Jira でドキュメントのフィードバックを提供する
問題の作成 フォームを使用して、Red Hat OpenStack Services on OpenShift (RHOSO) または Red Hat OpenStack Platform (RHOSP) の以前のリリースのドキュメントに関するフィードバックを提供します。RHOSO または RHOSP ドキュメントの問題を作成すると、その問題は RHOSO Jira プロジェクトに記録され、フィードバックの進行状況を追跡できるようになります。
問題の作成 フォームを完了するには、Jira にログインしていることを確認してください。Red Hat Jira アカウントをお持ちでない場合は、https://issues.redhat.com でアカウントを作成できます。
- 次のリンクをクリックして、問題の作成 ページを開きます (問題の作成)。
- Summary フィールドと Description フィールドに入力します。Description フィールドに、ドキュメントの URL、章またはセクション番号、および問題の詳しい説明を入力します。フォーム内の他のフィールドは変更しないでください。
- Create をクリックします。
第1章 Identity サービスの概要 (keystone) リンクのコピーリンクがクリップボードにコピーされました!
クラウドの管理者は、プロジェクト、ユーザー、ロールを管理できます。
プロジェクトとは、リソースの集合が含まれる組織単位のことです。プロジェクト内のロールにユーザーを割り当てることができます。ロールは、特定のプロジェクト内のリソースに対してユーザーが実行できるアクションを定義します。ユーザーは、複数のプロジェクトのロールに割り当てることができます。
各 Red Hat OpenStack (RHOSP) デプロイメントには、プロジェクト内のロールに割り当てられたユーザーが少なくとも 1 人含まれている必要があります。クラウド管理者は、次の操作を実行できます。
- プロジェクトとユーザーを追加、更新、および削除する。
- ユーザーを 1 つまたは複数のロールに割り当て、これらの割り当てを変更または削除する。
- プロジェクトとユーザーを個別に管理する。
Identity サービス (keystone) でユーザー認証を設定して、サービスおよびエンドポイントへのアクセスを制御することも可能です。Identity サービスでは、トークンベースの認証が提供され、LDAP および Active Directory との統合が可能なため、ユーザーとアイデンティティーを外部で管理し、Identity サービスとユーザーデータを同期できます。
1.1. リソース認証情報ファイル リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform director をインストールすると、リソース認証情報 (RC) ファイルが自動的に生成されます。
stackrc ファイルを入手して、認証の詳細をシェル環境にエクスポートします。これにより、ローカルの Red Hat OpenStack Platform director API に対してコマンドを実行できます。
オーバークラウドのインストール中に生成される RC ファイルの名前は、デプロイされたスタックの名前に rc という接尾辞が付きます。スタックにカスタム名を指定しない場合、スタックには overcloud というラベルが付けられます。作成される RC ファイルの名前は、overcloudrc となります。
オーバークラウド RC ファイルは、スタックの実際の名前に関係なく、ドキュメントでは overcloudrc と呼ばれます。overcloudrc ファイルを読み込んで、認証の詳細をシェル環境にエクスポートします。これにより、オーバークラウドクラスターのコントロールプレーン API に対してコマンドを実行できます。自動的に生成された overcloudrc ファイルは、admin プロジェクトに対して admin ユーザーとして認証します。この認証は、プロバイダーネットワークやプロジェクトの作成など、ドメイン管理タスクに役立ちます。
1.2. OpenStack リージョン リンクのコピーリンクがクリップボードにコピーされました!
リージョンは、OpenStack デプロイメントの分割です。各リージョンには、独自の API エンドポイント、ネットワーク、およびコンピュートリソースを含む独自の完全な OpenStack デプロイメントがあります。アクセス制御および Web インターフェイスを提供するために、異なるリージョンが Identity サービス (keystone) および Dashboard サービス (horizon) の 1 つのセットを共有します。Red Hat OpenStack Platform は、単一のリージョンでデプロイされます。デフォルトでは、オーバークラウドのリージョンは、regionOne という名前です。Red Hat OpenStack Platform でデフォルトのリージョン名を変更できます。
手順
parameter_defaultsの下で、KeystoneRegionパラメーターを定義します。parameter_defaults: KeystoneRegion: '<sample_region>'
parameter_defaults: KeystoneRegion: '<sample_region>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow <sample_region>を選択した地域名に置き換えます。注記オーバークラウドをデプロイした後にリージョン名を変更することはできません。
第2章 ユーザーの管理 リンクのコピーリンクがクリップボードにコピーされました!
クラウド管理者は、Dashboard でユーザーの追加、変更、削除ができます。ユーザーは、1 つまたは複数のプロジェクトに所属することができます。プロジェクトとユーザーは、個別に管理することが可能です。
2.1. Dashboard を使用したユーザーの作成 リンクのコピーリンクがクリップボードにコピーされました!
主プロジェクトおよびロールをユーザーに割り当てることができます。OpenStack Dashboard (horizon) を使用して作成するユーザーは、デフォルトで Identity サービスのユーザーです。Identity サービスに含まれる LDAP プロバイダーを設定することで、Active Directory ユーザーを統合できます。
手順
- 管理ユーザーとして Dashboard にログインします。
- Identity > Users を選択します。
- Create User をクリックします。
- ユーザーのユーザー名、メールアドレス、仮のパスワードを入力します。
- Primary Project のリストからプロジェクトを選択します。
-
Role の一覧からユーザーのロールを選択します。デフォルトのロールは
memberです。 - Create User をクリックします。
2.2. Dashboard を使用したユーザーの編集 リンクのコピーリンクがクリップボードにコピーされました!
主プロジェクトなど、ユーザーの詳細を更新することができます。
手順
- 管理ユーザーとして Dashboard にログインします。
- Identity > Users を選択します。
- Actions コラムで、Edit をクリックします。
- Update User ウィンドウで、User Name、Email、Primary Project を更新できます。
- Update User をクリックします。
2.3. Dashboard を使用したユーザーの有効化または無効化 リンクのコピーリンクがクリップボードにコピーされました!
Dashboard でユーザーを無効にできます。このアクションは、ユーザーの削除とは異なり、元に戻すことができます。
制限
- 一度に複数のユーザーを無効または有効にできません。
- ユーザーの主プロジェクトをアクティブに設定できません。
その結果、無効にしたユーザーは以下を実行できなくなります。
- ダッシュボードにログインする
- RHOSP サービスにアクセスする。
- Dashboard でユーザープロジェクトアクションを実行する。
手順
- Dashboard に管理ユーザーとしてログインして Identity > Users を選択します。
-
Actions コラムでドロップダウンリストをクリックし、Enable User または Disable User を選択します。これにより、Enabled コラムの値が
TrueまたはFalseに更新されます。
2.4. Dashboard を使用したユーザーの削除 リンクのコピーリンクがクリップボードにコピーされました!
他のユーザーを削除するには、管理者ロールを持つユーザーである必要があります。この操作を元に戻すことはできません。
手順
- Dashboard に管理ユーザーとしてログインして Identity > Users を選択します。
- 削除するユーザーを選択します。
- Delete Users をクリックします。Confirm Delete Users ウィンドウが表示されます。
- Delete Users をクリックしてアクションを確認します。
第3章 ロールの管理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) はロールベースアクセス制御 (RBAC) のメカニズムを使用して、リソースへのアクセスを管理します。ロールは、ユーザーが実行可能なアクションを定義します。デフォルトでは、事前定義された 2 つのロールがあります。
- プロジェクトにアタッチするメンバーロール
- 管理者以外のユーザーが環境を管理できるようにする管理者ロール
Identity サービス (keystone) には、ロールリストに表示される reader ロールも追加されています。reader ロールは、Secure RBAC を有効にしている場合にのみ使用してください。
また、環境に固有のカスタムロールを作成することもできます。
3.1. Red Hat OpenStack Platform 管理者ロールを理解する リンクのコピーリンクがクリップボードにコピーされました!
ユーザーに admin のロールを割り当てると、このユーザーには、任意のプロジェクトの任意のリソースを表示、変更、作成、または削除する権限があります。このユーザーは、公開されている Glance イメージやプロバイダーネットワークなど、プロジェクト間でアクセスできる共有リソースを作成できます。さらに、admin ロールを持つユーザーは、ユーザーを作成または削除し、ロールを管理できます。
ユーザーに admin ロールを割り当てるプロジェクトは、openstack コマンドが実行されるデフォルトのプロジェクトです。たとえば、development という名前のプロジェクトの admin ユーザーが次のコマンドを実行すると、internal-network という名前のネットワークが development プロジェクトに作成されます。
openstack network create internal-network
openstack network create internal-network
admin ユーザーは、--project パラメーターを使用して、任意のプロジェクトに internal-network を作成できます。
openstack network create internal-network --project testing
openstack network create internal-network --project testing
3.2. CLI を使用したロールの表示 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、既存のロールの詳細を表示できます。
手順
使用可能な事前定義済みロールをリスト表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 指定したロールの詳細を表示します。
openstack role show admin
$ openstack role show adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
各ロールに関連付けられた権限に関する情報を取得するには、各 API 呼び出しへのアクセスを監査する必要があります。詳細は、API アクセスの監査 を参照してください。
3.3. CLI を使用したロールの作成と割り当て リンクのコピーリンクがクリップボードにコピーされました!
管理者は、次の一連のコマンドを使用して、Identity サービス (keystone) クライアントを使用してロールを作成および管理できます。各 Red Hat OpenStack Platform デプロイメントには、最低でもプロジェクト、ユーザー、ロールが 1 つずつあり、それらが連携している必要があります。
複数のプロジェクトにユーザーを割り当てることができます。複数のプロジェクトにユーザーを割り当てるには、ロールを作成して、ユーザーとプロジェクトのペアにそのロールを割り当てます。
ユーザー、ロール、またはプロジェクトの指定には、名前または ID のいずれかを使用できます。
手順
new-roleロールを作成します。openstack role create <role_name>
$ openstack role create <role_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトにユーザーを割り当てるには、まず以下のコマンドを使用して、ユーザー、ロール、およびプロジェクト名または ID を見つけます。
- openstack user list
- openstack role list
- openstack project list
ユーザーとプロジェクトのペアにロールを割り当てます。
openstack role add <role_name> --user <user_name> --project <project_name>
$ openstack role add <role_name> --user <user_name> --project <project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例では、
demoプロジェクトのadminユーザーにadminロールを割り当てています。openstack role add admin --user admin --project demo
$ openstack role add admin --user admin --project demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow adminユーザーのロール割り当てを確認します。openstack role assignment list --user <user_name> --project <project_name> --names
$ openstack role assignment list --user <user_name> --project <project_name> --namesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例では、
adminユーザーがadminロールでdemoプロジェクトに割り当てられていることを確認します。
3.4. 暗黙的なロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
Identity サービス (keystone) は、ユーザーが特定のロールに割り当てられていることを確認してアクセス制御を適用します。Identity サービスは暗黙的なロール割り当てを使用します。ユーザーをロールに明示的に割り当てると、ユーザーは追加のロールにも暗黙的に割り当てられます。Red Hat OpenStack Platform での、デフォルトの暗黙的なロールを表示することができます。
Identity サービス (keystone) には、ロールリストに表示される reader ロールも追加されています。reader ロールは、Secure RBAC を有効にしている場合にのみ使用してください。
より高い権限を持つロールには、より低い権限を持つロールに関連付けられた権限が含まれます。上記のデフォルトの暗黙的なロールでは、admin には member が、member には reader が含まれます。暗黙的なロールを使用すると、ユーザーのロール割り当てが累積的に処理されるため、ユーザーは下位ロールを継承します。
カスタムロールを使用する場合は、暗黙的な関連付けを作成できます。
新たなロールを作成する場合、デフォルトではこのロールには member ロールと同じアクセスポリシーが設定されます。カスタムロールの一意のポリシーの作成については、アクセス制御にポリシーファイルを使用する を参照してください。
手順
次のコマンドを使用して、別のロールに含まれるロールを指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
すべての暗黙的なロールをリスト表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
暗黙的な関連付けに誤りがある場合は、変更を元に戻すことができます。
openstack implied role delete manager --implied-role poweruser
openstack implied role delete manager --implied-role poweruser
第4章 グループの管理 リンクのコピーリンクがクリップボードにコピーされました!
Identity サービス (keystone) グループを使用すると、一定のパーミッションを複数のユーザーアカウントに割り当てることができます。
4.1. CLI を使用してグループを設定する リンクのコピーリンクがクリップボードにコピーされました!
グループを作成し、グループに権限を割り当てます。グループのメンバーは、グループに割り当てたものと同じ権限を継承します。
grp-Auditorsというグループを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow keystone グループのリストを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow memberロールを使用してdemoプロジェクトにアクセスするためのgrp-Auditorsグループパーミッションを付与します。openstack role add member --group grp-Auditors --project demo
$ openstack role add member --group grp-Auditors --project demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 既存のユーザー
user1をgrp-Auditorsグループに追加します。openstack group add user grp-Auditors user1 user1 added to group grp-Auditors
$ openstack group add user grp-Auditors user1 user1 added to group grp-AuditorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow user1がgrp-Auditorsのメンバーであることを確認します。openstack group contains user grp-Auditors user1 user1 in group grp-Auditors
$ openstack group contains user grp-Auditors user1 user1 in group grp-AuditorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow user1に割り当てられている有効なパーミッションを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. ダッシュボードを使用してグループを設定する リンクのコピーリンクがクリップボードにコピーされました!
Dashboard を使用して keystone グループのメンバーシップを管理できます。ただし、グループにロール権限を割り当てるには、コマンドラインを使用する必要があります。詳細は、CLI でグループの設定 を参照してください。
4.2.1. グループの作成 リンクのコピーリンクがクリップボードにコピーされました!
- 管理者権限を持つユーザーとして Dashboard にログインします。
- Identity > Groups を選択します。
- +Create Group をクリックします。
- グループの名前と説明を入力します。
- Create Group をクリックします。
4.2.2. グループメンバーシップの管理 リンクのコピーリンクがクリップボードにコピーされました!
Dashboard を使用して keystone グループのメンバーシップを管理できます。
- 管理者権限を持つユーザーとして Dashboard にログインします。
- Identity > Groups を選択します。
- 編集するグループの Manage Members をクリックします。
- Add users を使用して、グループにユーザーを追加します。ユーザーを削除する場合には、そのユーザーのチェックボックスを選択して、Remove users をクリックします。
第5章 クォータ管理 リンクのコピーリンクがクリップボードにコピーされました!
クラウド管理者は、プロジェクトのクォータを設定、管理できます。各プロジェクトには、リソースが割り当てられており、プロジェクトユーザーには、これらのリソースを使用するパーミッションが付与されます。これにより、相互のパーミッションやリソースを干渉することなく、複数のプロジェクトが単一のクラウドを使用できます。リソースクォータのセットは、新規プロジェクトの作成時に事前設定されます。クォータには、プロジェクトに割り当て可能な仮想 CPU、インスタンス、RAM、および Floating IP の数量が含まれます。クォータは、プロジェクトレベルと、プロジェクトのユーザーレベルの両方で実行できます。Dashboard を使用して、新規/既存プロジェクトの Compute または Block Storage のクォータを設定または変更できます。詳細は、プロジェクトの管理 を参照してください。
5.1. ユーザーのコンピュートクォータの表示 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーに現在設定されているクォータの値をリスト表示するには、以下のコマンドを実行します。
手順
nova quota-show --user [USER-ID] --tenant [TENANT-ID]
$ nova quota-show --user [USER-ID] --tenant [TENANT-ID]
例
5.2. ユーザーのコンピュートクォータの更新 リンクのコピーリンクがクリップボードにコピーされました!
特定のクォータ値を更新するには、以下のコマンドを実行します。
nova quota-update --user [USER-ID] --[QUOTA_NAME] [QUOTA_VALUE] [TENANT-ID] nova quota-show --user [USER-ID] --tenant [TENANT-ID]
$ nova quota-update --user [USER-ID] --[QUOTA_NAME] [QUOTA_VALUE] [TENANT-ID]
$ nova quota-show --user [USER-ID] --tenant [TENANT-ID]
例
quota-update コマンドのオプションリストを表示するには、以下を実行します。
nova help quota-update
$ nova help quota-update
5.3. ユーザーの Object Storage クォータの設定 リンクのコピーリンクがクリップボードにコピーされました!
オブジェクトストレージクォータは、以下のカテゴリーに分類できます。
- コンテナークォータ: 合計サイズ (バイト単位) または単一のコンテナーで保存可能なオブジェクト数を制限します。
- アカウントクォータ: Object Storage サービスでユーザーが利用可能な合計サイズ (バイト単位) を制限します。
コンテナークォータまたはアカウントクォータのいずれかを設定するには、Object Storage プロキシーサーバーにおいて、proxy-server.conf ファイルの [pipeline:main] セクションに container_quotas または account_quotas (または両方) のパラメーターを追加する必要があります。
オブジェクトストレージクォータの表示および更新には、以下のコマンドを使用します。プロジェクトに含まれるすべてのユーザーには、そのプロジェクトに指定されているクォータが表示されます。プロジェクトに設定されているオブジェクトストレージのクォータを更新するには、そのプロジェクトの ResellerAdmin のロールが必要です。
アカウントクォータを表示するには、以下のコマンドを実行します。
クォータを更新するには、以下を実行します。
swift post -m quota-bytes:<BYTES>
# swift post -m quota-bytes:<BYTES>
たとえば、アカウントに 5 GB のクォータを指定します。
swift post -m quota-bytes:5368709120
# swift post -m quota-bytes:5368709120
第6章 プロジェクトの管理 リンクのコピーリンクがクリップボードにコピーされました!
クラウド管理者は、プロジェクトを作成、管理できます。プロジェクトは共有仮想リソースのプールで、OpenStack のユーザーおよびグループを割り当てることができます。各プロジェクトで共有仮想リソースのクォータを設定できます。Red Hat OpenStack Platform では、相互に権限およびリソースが干渉しない複数のプロジェクトを作成できます。ユーザーは、複数のプロジェクトに割り当てることができます。各ユーザーには、割り当てられた各プロジェクトに指定されたロールが設定されている必要があります。
6.1. プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトを作成し、プロジェクトにメンバーを追加し、プロジェクトリソースの制限を設定します。
- 管理者権限を持つユーザーとして Dashboard にログインします。
- Identity > Projects を選択します。
- Create Project をクリックします。
- Project Information タブで、プロジェクトの名前と説明を入力します。デフォルトで、Enabled のチェックボックスが選択されています。
- プロジェクトへのメンバーの追加は、Project Members タブの All Users リストから行います。
- Quotas タブで、プロジェクトのリソースの上限を指定します。
- Create Project をクリックします。
6.2. プロジェクトの編集 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトを編集して名前や説明を変更したり、プロジェクトを有効化または一時的に無効化したり、プロジェクトのメンバーを更新したりすることができます。
- 管理者権限を持つユーザーとして Dashboard にログインします。
- Identity > Projects を選択します。
- プロジェクトの Actions コラムで、下向きの三角をクリックして Edit Project をクリックします。
- Edit Project ウィンドウでプロジェクトを更新して名前や説明を変更したり、プロジェクトを有効化または一時的に無効化したりすることができます。
- Project Members タブで、必要に応じてメンバーをプロジェクトに追加または削除します。
- Save をクリックします。
デフォルトで、Enabled のチェックボックスが選択されています。プロジェクトを一時的に無効にするには、Enabled のチェックボックスのチェックマークを外します。無効なプロジェクトを有効にするには、Enabled チェックボックスを選択します。
6.3. プロジェクトの削除 リンクのコピーリンクがクリップボードにコピーされました!
- 管理者権限を持つユーザーとして Dashboard にログインします。
- Identity > Projects を選択します。
- 削除するプロジェクトを選択します。
- Delete Projects をクリックします。Confirm Delete Projects ウィンドウが表示されます。
- Delete Projects をクリックしてアクションを確認します。
プロジェクトが削除され、ユーザーとのペアリングの関連付けは解除されます。
6.4. プロジェクトクォータの更新 リンクのコピーリンクがクリップボードにコピーされました!
クォータとは、クラウドリソースを最適化するためにプロジェクトごとに設定する操作の制約のことです。クォータを設定して、通知なしにプロジェクトのリソースが使い果たされないようにします。クォータは、プロジェクトレベルとプロジェクトのユーザーレベルの両方で適用できます。
- 管理者権限を持つユーザーとして Dashboard にログインします。
- Identity > Projects を選択します。
- プロジェクトの Actions コラムで、下向きの三角をクリックして Modify Quotas をクリックします。
- Quota タブで、必要に応じてプロジェクトクォータを変更します。
- Save をクリックします。
現時点では、nested quotas はまだサポートされていません。そのため、クォータはプロジェクトとサブプロジェクトで別々に管理する必要があります。
6.5. アクティブなプロジェクトの変更 リンクのコピーリンクがクリップボードにコピーされました!
Dashboard を使用してプロジェクトのオブジェクトを操作できるように、プロジェクトをアクティブなプロジェクトとして設定します。プロジェクトをアクティブなプロジェクトとして設定するには、プロジェクトのメンバーである必要があります。また、Set as Active Project オプションを有効にするには、ユーザーが複数のプロジェクトのメンバーである必要があります。プロジェクトを再度有効にしない限り、無効なプロジェクトをアクティブなプロジェクトとして設定することはできません。
- 管理者権限を持つユーザーとして Dashboard にログインします。
- Identity > Projects を選択します。
- プロジェクトの Actions コラムで、下向きの三角をクリックして Set as Active Project をクリックします。
- または、管理者権限のないユーザーで、プロジェクトの Actions コラムの下向きの三角をクリックして Set as Active Project をクリックすると、このコラムのデフォルトアクションになります。
6.6. プロジェクトの階層 リンクのコピーリンクがクリップボードにコピーされました!
Identity サービス (keystone) のマルチテナンシーを使用して、プロジェクトを入れ子状にできます。マルチテナンシーにより、サブプロジェクトは親プロジェクトのロール割り当てを継承できます。
6.6.1. 階層化されたプロジェクトとサブプロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
階層型マルチテナンシー (HMT) は keystone のドメインとプロジェクトを使用して実装できます。まず最初に新規ドメインを作成して、そのドメイン内にプロジェクトを作成します。これで、そのプロジェクトにサブプロジェクトを追加できるようになります。また、ユーザーをサブプロジェクトの admin ロールに追加すると、そのサブプロジェクトの管理者に昇格できます。
keystone の使用する HMT の構造は、現在 Dashboard では表示されません。
手順
corpという名前の keystone ドメインを新規作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow corpドメイン内に親プロジェクト (private-cloud) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow private-cloudの親プロジェクト内でcorpドメインも指定して、サブプロジェクト (dev) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow qaという名前のサブプロジェクトをもう 1 つ作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Identity API を使用してプロジェクトの階層を確認することができます。詳しくは、https://developer.openstack.org/api-ref/identity/v3/index.html?expanded=show-project-details-detail を参照してください。
6.6.2. 階層構造のプロジェクトへのアクセスの設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、新規作成したプロジェクトにはロールは割り当てられません。親プロジェクトに対するロールのパーミッションを割り当てるときに、--inherited フラグを指定して、サブプロジェクトが親プロジェクトからパーミッションを継承するように指定できます。たとえば、親プロジェクトに対する admin ロールのアクセス権のあるユーザーには、サブプロジェクトへの admin アクセス権も付与されます。
ユーザーへのアクセス権の付与
プロジェクトに割り当てられている既存のパーミッションを確認します。
openstack role assignment list --project private-cloud
$ openstack role assignment list --project private-cloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow 既存のロールを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーアカウント
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 memberCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドを
--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 --inheritedCopy to Clipboard Copied! Toggle word wrap Toggle overflow パーミッションの更新の結果を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
user1 ユーザーは、qa プロジェクトと dev プロジェクトへのアクセス権を継承しています。さらに、--inherited フラグが親プロジェクトに適用されたため、user1 は後から作成されたサブプロジェクトにもアクセスできるようになりました。
ユーザーからのアクセス削除
明示的に割り当てられたパーミッションと継承されたパーミッションは別々に削除する必要があります。
明示的に割り当てられたロールからユーザーを削除します。
openstack role remove --user user1 --project private-cloud member
$ openstack role remove --user user1 --project private-cloud memberCopy to Clipboard Copied! Toggle word wrap Toggle overflow 変更の結果を確認します。継承されたパーミッションがまだ存在している点に注意してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 継承されたパーミッションを削除します。
openstack role remove --user user1 --project private-cloud member --inherited
$ openstack role remove --user user1 --project private-cloud member --inheritedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 変更の結果を確認します。継承されたパーミッションが削除され、出力が空になりました。
openstack role assignment list --effective --user user1 --user-domain corp
$ openstack role assignment list --effective --user user1 --user-domain corpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6.3. Reseller プロジェクトの概要 リンクのコピーリンクがクリップボードにコピーされました!
Reseller プロジェクトでは、複数のドメインを階層化することを目標としています。このようなドメインでは、1 つのサブドメインは、完全に有効化された 1 つのクラウドを表現し、最終的にはクラウドの部分的な再販を考慮することができます。この開発の作業は複数の段階に分かれています。第 1 段階については以下に説明します。
Reseller の第 1 段階
Reseller (第 1 段階) は、階層化されたプロジェクトとサブプロジェクトの作成 に記載されている階層型マルチテナンシー (HMT) の延長です。従来 keystone ドメインは、データベースバックエンド内に独自のテーブルを備えた、ユーザーとプロジェクトを保管するためのコンテナーとすることを目的としていました。その結果、ドメインは独自のテーブルには保管されなくなり、プロジェクトのテーブルにマージされました。
-
ドメインは、ひとつのプロジェクトタイプとなり、
is_domainフラグで区別されます。 - ドメインは、プロジェクト階層の最上位のプロジェクトを表します。ドメインは、プロジェクト階層のルートです。
projectsサブパスを使用してドメインの作成と取得を行うように API が更新されました。-
新規ドメインを作成するには、
is_domainフラグを true に指定してプロジェクトを作成します。 -
ドメインであるプロジェクトをリスト表示します。
is_domainクエリーパラメーターを含むプロジェクトを取得します。
-
新規ドメインを作成するには、
6.7. プロジェクトのセキュリティー管理 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーグループとは、プロジェクトのインスタンスに割り当て可能な IP フィルターのルールセットで、インスタンスへのネットワークのアクセス権限を定義します。セキュリティーグループはプロジェクト別になっており、プロジェクトメンバーは自分のセキュリティーグループのデフォルトルールを編集して新規ルールセットを追加できます。
すべてのプロジェクトにはデフォルトのセキュリティーグループが存在し、他にセキュリティーグループが定義されていないインスタンスに対して適用されます。このセキュリティーグループは、デフォルト値を変更しない限り、インスタンスへの受信トラフィックをすべて拒否し、送信トラフィックのみを許可します。
セキュリティーグループは、インスタンス作成時に直接インスタンスに適用するか、実行中のインスタンスのポートに適用できます。
インスタンスの作成中に、ロールベースのアクセス制御 (RBAC) 共有セキュリティーグループをインスタンスに直接適用することはできません。RBAC 共有セキュリティーグループをインスタンスに適用するには、最初にポートを作成し、共有セキュリティーグループをそのポートに適用してから、そのポートをインスタンスに割り当てる必要があります。セキュリティーグループのポートへの追加 を参照してください。
必要な出力を許可するグループを作成せずに、デフォルトのセキュリティーグループを削除しないでください。たとえば、インスタンスが DHCP とメタデータを使用している場合、インスタンスには、DHCP サーバーとメタデータエージェントへの出力を許可するセキュリティーグループルールが必要です。
6.7.1. セキュリティーグループの作成 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーグループを作成して、セキュリティールールを設定できるようにします。たとえば、ICMP トラフィックを有効にしたり、HTTP リクエストを無効にしたりできます。
手順
- Dashboard で Project > Compute > Access & Security を選択します。
- Security Groups タブで、Create Security Group をクリックします。
- グループの名前と説明を入力して、Create Security Group をクリックします。
6.7.2. セキュリティーグループルールの追加 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、新しいグループには、送信アクセスのルールのみが指定されます。他のアクセスを指定するには、新しいルールを追加する必要があります。
手順
- Dashboard で Project > Compute > Access & Security を選択します。
- Security Groups タブで、編集するセキュリティーグループの Manage Rules をクリックします。
- Add Rule をクリックして、新規ルールを追加します。
ルールの値を指定して、Add をクリックします。
以下のルールのフィールドは必須です。
- ルール
ルールタイプ。ルールテンプレート (例: 'SSH') を指定する場合には、そのフィールドは自動的に入力されます。
- TCP: 一般的には、システム間のデータの交換や、エンドユーザーの通信に使用されます。
- UDP: 一般的には、システム間のデータ交換に (特にアプリケーションレベルで) 使用されます。
- ICMP: 一般的には、ルーターなどのネットワークデバイスがエラーや監視メッセージを送信するのに使用されます。
- 方向
- 受信 (インバウンド) または送信 (アウトバウンド)
- 開放するポート
TCP または UDP ルールでは、開放する Port または Port Range (単一のポートまたはポートの範囲) を入力します。
- ポート範囲では、From Port と To Port フィールドにポートの値を入力します。
- 単一のポートの場合は Port フィールドにポートの値を入力します。
- 型
- ICMP ルールのタイプ。'-1:255' の範囲で指定する必要があります。
- コード
- ICMP ルールのコード。'-1:255' の範囲で指定する必要があります。
- 接続相手
このルールが適用されるトラフィックの接続元
- CIDR (Classless Inter-Domain Routing): 指定のブロック内の IP へのアクセスを制限する IP アドレスブロック。ソースフィールドに CIDR を入力します。
- セキュリティーグループ: グループ内のインスタンスが他のグループインスタンスにアクセスできるようにするソースのセキュリティーグループ。
6.7.3. セキュリティーグループルールの削除 リンクのコピーリンクがクリップボードにコピーされました!
不要になったセキュリティーグループルールを削除します。
手順
- Dashboard で Project > Compute > Access & Security を選択します。
- Security Groups タブで、セキュリティーグループの Manage Rules をクリックします。
- セキュリティーグループルールを選択し、Delete Rule ボタンをクリックします。
- 再度、Delete Rule をクリックします。
削除の操作は元に戻せません。
6.7.4. セキュリティーグループの削除 リンクのコピーリンクがクリップボードにコピーされました!
不要になったセキュリティーグループを削除します。
手順
- Dashboard で Project > Compute > Access & Security を選択します。
- Security Groups タブで、グループを選択して、Delete Security Groups をクリックします。
- Delete Security Groups をクリックします。
削除の操作は元に戻せません。
第7章 ドメインの管理 リンクのコピーリンクがクリップボードにコピーされました!
Identity サービス (keystone) ドメインは、keystone で作成可能な追加の名前空間です。keystone ドメインを使用して、ユーザー、グループ、プロジェクトを分割します。異なる LDAP または Active Directory 環境でユーザーを認証するように、これらの分離されたドメインを設定することも可能です。詳細は、Identity サービスとの統合 を参照してください。
Identity サービスには、Default という名前のドメインが組み込まれています。このドメインは、サービスアカウント専用に確保し、ユーザーアカウント用には別のドメインを作成することを推奨します。
7.1. ドメインリストの表示 リンクのコピーリンクがクリップボードにコピーされました!
openstack domain list コマンドでドメインの一覧を表示できます。
7.2. 新規ドメインの作成 リンクのコピーリンクがクリップボードにコピーされました!
openstack domain create コマンドで新しいドメインを作成できます。
7.3. ドメインの詳細表示 リンクのコピーリンクがクリップボードにコピーされました!
openstack domain show コマンドで、ドメインの詳細を表示できます。
7.4. ドメインの無効化 リンクのコピーリンクがクリップボードにコピーされました!
必要に応じてドメインを無効化または有効化できます。
手順
--disableオプションでドメインを無効にします。openstack domain set TestDomain --disable
$ openstack domain set TestDomain --disableCopy to Clipboard Copied! Toggle word wrap Toggle overflow ドメインが無効化されたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて
--enableオプションを使用して、ドメインを再度有効にします。openstack domain set TestDomain --enable
$ openstack domain set TestDomain --enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第8章 アプリケーション認証情報 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション認証情報 を使用することで、設定ファイルにユーザーアカウントの認証情報を埋め込むことを回避できます。代わりに、ユーザーは、1 つのプロジェクトへのアクセスを委譲された、個別のシークレットを持つアプリケーション認証情報を作成します。ユーザーは、委譲されたアクセス権限をそのプロジェクト内の単一のロールに制限することもできます。これにより、すべてのプロジェクトおよびロールではなく、サービスが機能するのに必要な 1 つのプロジェクトおよびロールへのアクセス権限のみ付与でき、最小権限の原則に準拠できます。
この手法を使用すると、ユーザー認証情報を公開せずに API を消費することが可能になり、アプリケーションは埋め込まれたユーザー認証情報を必要とせずに Keystone に対して認証することができます。
アプリケーション認証情報を使用してトークンを生成し、アプリケーションの keystone_authtoken 設定を定義できます。これらのユースケースは、これ以降のセクションで説明します。
アプリケーション認証情報は、その認証情報を作成したユーザーアカウントに従属します。したがって、そのアカウントが削除されたり、該当するロールにアクセスできなくなったりすると、アプリケーション認証情報は機能しなくなります。
8.1. アプリケーション認証情報を使用したトークンの生成 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーは、Dashboard のセルフサービス機能として、アプリケーション認証情報を利用できます。以下の例は、ユーザーがアプリケーション認証情報を作成し、それを使用してトークンを生成する方法を示しています。
テスト用プロジェクトおよびユーザーアカウントを作成します。
AppCredsという名前のプロジェクトを作成します。openstack project create AppCreds
$ openstack project create AppCredsCopy to Clipboard Copied! Toggle word wrap Toggle overflow AppCredsUserという名前のユーザーを作成します。openstack user create --project AppCreds --password-prompt AppCredsUser
$ openstack user create --project AppCreds --password-prompt AppCredsUserCopy to Clipboard Copied! Toggle word wrap Toggle overflow AppCredsUserに、AppCredsプロジェクトのmemberロールへのアクセス権限を付与します。openstack role add --user AppCredsUser --project AppCreds member
$ openstack role add --user AppCredsUser --project AppCreds memberCopy to Clipboard Copied! Toggle word wrap Toggle overflow
AppCredsUserとして Dashboard にログインし、アプリケーション認証情報を作成します。Overview→Identity→Application Credentials→+Create Application Credentialに移動します。注記Your Application Credentialポップアップウィンドウを閉じると再アクセスできなくなるため、clouds.yamlファイルの内容をダウンロードしてください。CLI を使用して
/home/stack/.config/openstack/clouds.yamlという名前のファイルを作成し、clouds.yamlファイルの内容を貼り付けます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記これらの値は、実際のデプロイメントとは異なる場合があります。
アプリケーション認証情報を使用してトークンを生成します。以下のコマンドを使用する場合、特定のユーザーとしてソースを提供しないでください。また、
clouds.yamlファイルのディレクトリーを現在の作業ディレクトリーにする必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
init() got an unexpected keyword argument 'application_credential_secret' のようなエラーメッセージが表示される場合は、まだ以前の認証情報にソースを提供している可能性があります。新しい環境の場合は、sudo su - stack を実行します。
8.2. アプリケーション認証情報とアプリケーションの統合 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション認証情報を使用して、アプリケーションを keystone に対して認証できます。アプリケーション認証情報を使用する場合 keystone_authtoken の設定では、認証タイプ v3applicationcredential が使用され、認証情報の作成プロセスで受け取った認証情報が含まれます。以下の値を設定します。
-
application_credential_secret: アプリケーション認証情報のシークレット -
application_credential_id: アプリケーション認証情報の ID -
(オプション)
application_credential_name: ID ではなく、名前付きのアプリケーション認証情報を使用する場合に、このパラメーターを使用することがあります。
以下に例を示します。
[keystone_authtoken] auth_url = http://10.0.0.10:5000/v3 auth_type = v3applicationcredential application_credential_id = "6cb5fa6a13184e6fab65ba2108adf50c" application_credential_secret = "<example password>"
[keystone_authtoken]
auth_url = http://10.0.0.10:5000/v3
auth_type = v3applicationcredential
application_credential_id = "6cb5fa6a13184e6fab65ba2108adf50c"
application_credential_secret = "<example password>"
8.3. アプリケーション認証情報の管理 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して、アプリケーション認証情報を作成および削除できます。
create サブコマンドにより、現在ソースを提供しているアカウントに基づいてアプリケーション認証情報が作成されます。たとえば、admin ユーザーとしてソースを提供している場合に認証情報を作成すると、同じロールがアプリケーション認証情報に付与されます。
--unrestricted パラメーターを使用すると、アプリケーション認証情報で他のアプリケーション認証情報と信頼を作成および削除できます。これは潜在的に危険な動作であり、デフォルトでは無効になっています。--unrestricted パラメーターは、他のアクセスルールと組み合わせて使用できません。
デフォルトでは、付与されるロールのメンバーシップには、認証情報を作成したアカウントに割り当てられたすべてのロールが含まれます。特定ロールだけを対象にアクセスを委譲して、ロールのメンバーシップを限定することができます。
アプリケーション認証情報を削除するには、以下のコマンドを実行します。
openstack application credential delete AppCredsUser
$ openstack application credential delete AppCredsUser
8.4. アプリケーション認証情報の交換 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション認証情報は、その認証情報を作成したユーザーアカウントにバインドされます。したがって、そのユーザーアカウントが削除されたり、ユーザーが委譲されたロールにアクセスできなくなったりすると、アプリケーション認証情報は無効になります。そのため、必要に応じて新しいアプリケーション認証情報を生成する準備が必要になります。
設定ファイル用の既存のアプリケーション認証情報の置き換え
(設定ファイルを使用して) アプリケーションに割り当てられたアプリケーション認証情報を更新します。
- 新しいアプリケーション認証情報のセットを作成します。
- アプリケーションの設定ファイルに新しい認証情報を追加し、既存の認証情報と置き換えます。詳細は、アプリケーション認証情報とアプリケーションの統合 を参照してください。
- アプリケーションのサービスを再起動して、変更を適用します。
- 必要に応じて、古いアプリケーション認証情報を削除します。コマンドラインオプションの詳細は、アプリケーション認証情報の管理 を参照してください。
clouds.yaml 内の既存のアプリケーション認証情報の置き換え
clouds.yaml で使用されるアプリケーション認証情報を置き換える場合は、OpenStack ユーザー認証情報を使用して置換認証情報を作成する必要があります。デフォルトでは、アプリケーション認証情報を使用して別のアプリケーション認証情報のセットを作成できません。openstack application credential create コマンドは、現在ソースを提供しているアカウントに基づいてアプリケーション認証情報を作成します。
-
有効期限が近づいている認証認証情報を最初に作成した OpenStack ユーザーとして認証します。たとえば、アプリケーション認証情報を使用してトークンを生成する 手順を使用した場合は、
AppCredsUserとして再度ログインする必要があります。 AppCred2という名前のアプリケーション認証情報を作成します。これは、OpenStack Dashboard またはopenstackCLI インターフェイスを使用して実行できます。openstack application credential create --description "App Creds 2 - Member" --role member AppCred2
openstack application credential create --description "App Creds 2 - Member" --role member AppCred2Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
直前のコマンドの出力から
idパラメーターおよびsecretパラメーターをコピーします。secretパラメーター値に再度アクセスできません。 -
${HOME}/.config/openstack/clouds.yamlファイル内のapplication_credential_idパラメーター値とapplication_credential_secretパラメーター値を、コピーしたSecret値とID値に置き換えます。
検証
clouds.yaml でトークンを生成し、認証情報が予想通りに機能していることを確認します。以下のコマンドを使用する場合、特定のユーザーとしてソースを提供しないでください。また、
clouds.yamlファイルのディレクトリーを現在の作業ディレクトリーにする必要があります。openstack --os-cloud=openstack token issue
[stack@undercloud-0 openstack]$ openstack --os-cloud=openstack token issueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow