ユーザーおよびアイデンティティー管理ガイド
ユーザーの管理と keystone 認証
概要
前書き リンクのコピーリンクがクリップボードにコピーされました!
クラウドの管理者は、プロジェクト、ユーザー、ロールを管理することができます。プロジェクトとは、ユーザーの割り当てが可能な、クラウド内の組織単位のことです。プロジェクトは、テナントまたはアカウントとしても知られています。ユーザーは、1 つまたは複数のプロジェクトに所属することができます。ロールは、ユーザーが実行することのできるアクションを定義します。
各 OpenStack デプロイメントには、最低でもプロジェクト、ユーザー、ロールが 1 つずつあり、それらが連携している必要があります。クラウド管理者は、プロジェクトとユーザーの追加、更新、削除、1 つまたは複数のプロジェクトへのユーザーの割り当てを行うことができます。プロジェクトとユーザーは、個別に管理することが可能です。
Keystone Identity サービスでユーザー認証を設定して、サービスおよびエンドポイントへのアクセスを制御することも可能です。Keystone では、トークンベースの認証が提供され、LDAP と Active Directory と統合することができるため、ユーザーとアイデンティティーを外部で管理し、Keystone とユーザーデータを同期できます。
Keystone v2 は、Red Hat OpenStack Platform 11 (Ocata) で非推奨となりました。v2 は Red Hat OpenStack Platform 13 (Queens) で廃止され、Keystone v3 だけが利用可能です。
第1章 ユーザー管理 リンクのコピーリンクがクリップボードにコピーされました!
1.1. ユーザー管理 リンクのコピーリンクがクリップボードにコピーされました!
クラウド管理者は、Dashboard でユーザーの追加、変更、削除ができます。ユーザーは、1 つまたは複数のプロジェクトに所属することができます。プロジェクトとユーザーは、個別に管理することが可能です。
1.1.1. ユーザーの作成 リンクのコピーリンクがクリップボードにコピーされました!
Dashboard でユーザーを作成するには、以下の手順に従ってください。主プロジェクトおよびロールをユーザーに割り当てることができます。Dashboard で作成したユーザーは、デフォルトでは Keystone のユーザーとなっています。Active Directory ユーザーを統合するには、Red Hat OpenStack Platform の Identity サービスに含まれる LDAP プロバイダーを設定してください。
- Dashboard に管理ユーザーとしてログインして アイデンティティー > ユーザー を選択します。
- ユーザーの作成 をクリックします。
- ユーザーのユーザー名、メールアドレス、仮のパスワードを入力します。
- 主プロジェクト のリストからプロジェクトを選択します。
-
ロール のリストからユーザーのロールを選択します (デフォルトは
_member_です)。 - ユーザーの作成 をクリックします。
1.1.2. ユーザーの編集 リンクのコピーリンクがクリップボードにコピーされました!
主プロジェクトなど、ユーザーの詳細を更新するには、以下の手順に従います。
- Dashboard に管理ユーザーとしてログインして アイデンティティー > ユーザー を選択します。
- ユーザーの アクション コラムで、編集 をクリックします。
- ユーザーの更新 ウィンドウで、ユーザー名、メール、主プロジェクト を更新できます。
- ユーザーの更新 をクリックします。
1.1.3. ユーザーの有効化/無効化 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーを有効化または無効化するには、以下の手順に従います。1 度に 1 ユーザーしか無効化または有効化できません。無効化されたユーザーは Dashboard にはログインできず、OpenStack サービスへのアクセスもできません。また、無効化されたユーザーの主プロジェクトもアクティブに設定できません。アクションを元に戻せないユーザーの削除とは異なり、無効化されたユーザーをもう 1 度有効化することができます。また、ユーザーが無効な場合には、Dashboard のユーザーとプロジェクトのアクションを実行するには、ユーザーを有効化する必要があります。
- Dashboard に管理ユーザーとしてログインして アイデンティティー > ユーザー を選択します。
-
アクション コラムでドロップダウンリストをクリックし、ユーザーの有効化 または ユーザーの無効化 を選択します。これにより、有効 コラムの値が
TrueまたはFalseに更新されます。
1.1.4. ユーザーの削除 リンクのコピーリンクがクリップボードにコピーされました!
管理ユーザーが Dashboard を使用してユーザーを削除するには、以下の手順を実行します。このアクションは、ユーザーの無効化とは異なり、元に戻すことはできません。ユーザーを無効にした場合には、所属するプロジェクトのメンバー一覧から削除されます。ユーザーとプロジェクトのペアに関連付けられたロールはすべて失われます。
- Dashboard に管理ユーザーとしてログインして アイデンティティー > ユーザー を選択します。
- 削除するユーザーを選択します。
- ユーザーの削除 をクリックします。ユーザーの削除の確認 ウィンドウが表示されます。
- ユーザーの削除 をクリックしてアクションを確認します。
第2章 ロールの管理 リンクのコピーリンクがクリップボードにコピーされました!
2.1. ロールの管理 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack はロールベースアクセス制御 (RBAC) のメカニズムを使用して、リソースへのアクセスを管理します。ロールは、ユーザーが実行可能なアクションを定義します。デフォルトでは、テナントにアタッチされるメンバーロールと、管理者以外のユーザーが環境を管理できるようにする管理者ロールという事前定義済みのロールが 2 つあります。パーミッションには抽象レベルがあり、管理者が必要なロールを作成して適切にサービスを設定することができる点に注意してください。
2.1.1. ロールの表示 リンクのコピーリンクがクリップボードにコピーされました!
利用可能な事前定義済みのロールを一覧表示するには、以下のコマンドを使用します。
指定したロールの詳細を取得するには、以下のコマンドを実行します。
openstack role show admin
$ openstack role show admin
例
2.1.2. ロールの作成および割り当て リンクのコピーリンクがクリップボードにコピーされました!
クラウド管理者は、以下のコマンド一式を使用して Keystone クライアントでロールを作成、管理できます。各 OpenStack デプロイメントには、最低でもプロジェクト、ユーザー、ロールが 1 つずつあり、それらが連携している必要があります。ただし、ユーザーは複数のプロジェクトのメンバーになることができます。複数のプロジェクトにユーザーを割り当てるには、ロールを作成して、ユーザーとプロジェクトのペアにそのロールを割り当てます。Dashboard でユーザーを作成して、主プロジェクトとデフォルトのロールを割り当てることができる点に注意してください。
ユーザー、ロール、プロジェクトの指定には名前または ID を使用することができます。
new-roleという名前のロールを作成します。openstack role create [ROLE_NAME]
$ openstack role create [ROLE_NAME]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーをプロジェクトに割り当てるには、ロールをユーザーとプロジェクトのペアに割り当てる必要があります。これには、ユーザー、ロール、プロジェクト名/ID を取得してください。
ユーザーを一覧表示します。
openstack user list
$ openstack user listCopy to Clipboard Copied! Toggle word wrap Toggle overflow ロールを一覧表示します。
openstack role list
$ openstack role listCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトを一覧表示します。
openstack project list
$ openstack project listCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ユーザーとプロジェクトのペアにロールを割り当てます。
openstack role add --project [PROJECT_NAME] --user [USER_ID] [ROLE_ID]
openstack role add --project [PROJECT_NAME] --user [USER_ID] [ROLE_ID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
以下の例では、
demoプロジェクトでadminロールをadminユーザーに割り当てます。openstack role add --project demo --user 895e43465b9643b9aa29df0073572bb2 ae49e2b796ea4820ac51637be27650d8
$ openstack role add --project demo --user 895e43465b9643b9aa29df0073572bb2 ae49e2b796ea4820ac51637be27650d8Copy to Clipboard Copied! Toggle word wrap Toggle overflow adminユーザーのロール割り当てを確認します。openstack role assignment list --user [USER_ID] --project [PROJECT_ID]
$ openstack role assignment list --user [USER_ID] --project [PROJECT_ID]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. 暗黙的なロールとドメイン固有のロール リンクのコピーリンクがクリップボードにコピーされました!
2.2.1. 暗黙的なロール リンクのコピーリンクがクリップボードにコピーされました!
OpenStack では、ユーザーが特定のロールに割り当てられているのを確認して、アクセス制御を適用します。最近までは、そのようなロールはユーザーまたはユーザーがメンバーとなっているグループに明示的に割り当てる必要がありました。Identity サービス (keystone) に暗黙的なロール割り当ての概念が追加されたので、ユーザーが 1 つのロールに明示的に割り当てられている場合には、別のロールにも暗黙的に割り当てられている可能性があります。
2.2.2. 推論規則 リンクのコピーリンクがクリップボードにコピーされました!
暗黙的な割り当てはロールの推論規則で管理されます。推論規則は、上位が下位を暗黙に示す 形式で書かれます。たとえば、1 つのルールで admin ロールは _member_ ロールを暗黙的に割り当てるように記述することができます。その結果、プロジェクトの admin に割り当てられたユーザーは、_member_ ロールにも暗黙的に割り当てられます。
暗黙的なロール では、ユーザーのロール割り当ては累積的に処理され、ユーザーは下位のロールを継承することができます。暗黙的なロールは、その結果を指定するために作成される推論規則によって異なります。
2.2.2.1. Keystone の設定 リンクのコピーリンクがクリップボードにコピーされました!
keystone が暗黙的なルールを順守するには、/etc/keystone/keystone.conf で infer_roles の設定を有効にする必要があります。
[token] infer_roles = true
[token]
infer_roles = true
暗黙的なロールは、一連の定義済み推論規則によって統制されます。これらのルールにより、1 つのロールを割り当てることによって、他のロールのメンバーシップをどのように暗黙的に割り当てられることができるかを決定します。「暗黙的なロールの実例」 の例を参照してください。
2.2.3. 特定のロールが暗黙的となるのを防ぐ方法 リンクのコピーリンクがクリップボードにコピーされました!
特定のロールがユーザーに暗黙的に割り当てられるのを防ぐことが可能です。たとえば、/etc/keystone/keystone.conf でロールの ListOpt を追加することができます。
[assignment] prohibited_implied_role = admin
[assignment]
prohibited_implied_role = admin
この設定は、特定のロールがユーザーに暗黙的に割り当てられるのを常に防ぎます。そのロールに対するアクセス権は、暗黙的ではなく明示的に付与しなければならないようになります。
2.2.3.1. 暗黙的なロールの実例 リンクのコピーリンクがクリップボードにコピーされました!
本項では、ロールを暗黙的に割り当てるための推論規則の作成方法について説明します。このルールは、1 つのロールが別のロールのメンバーシップを暗黙的に継承できるようにする方法を制御します。以下の手順で使用するルールの例は、admin ロールのメンバーに _member_ のアクセスも付与されるようにします。
2.2.3.1.1. ユーザーへのロールの割り当て: リンクのコピーリンクがクリップボードにコピーされました!
_member_ロールを暗黙的に継承するユーザーの ID を取得します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow demoプロジェクトの ID を取得します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow adminロールの ID を取得します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow User1ユーザーに、demoプロジェクトに対するadmin権限を付与します。openstack role add --user User1 --project demo admin
$ openstack role add --user User1 --project demo adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow adminロールの割り当てを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.3.1.2. 推論規則の作成 リンクのコピーリンクがクリップボードにコピーされました!
admin ロールを User1 に付与するステップが完了したので、次に以下のステップに従って推論規則を作成します。
最初に User 1 の現在のロールメンバーシップを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロール ID の一覧を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 推論規則を作成します。現在このロールは
curlで作成します。この例では、前のステップで返されたロールの ID を使用します。また、keystone.conf のadmin_tokenを使用してコマンドを実行します。source overcloudrc export OS_TOKEN=`grep ^admin_token /etc/keystone/keystone.conf | awk -F'=' '{print $2}'` curl -X PUT -H "X-Auth-Token: $OS_TOKEN" -H "Content-type: application/json" $OS_AUTH_URL/roles/9b821b2920544be7a4d8f71fa99fcd35/implies/9fe2ff9ee4384b1894a90878d3e92babsource overcloudrc export OS_TOKEN=`grep ^admin_token /etc/keystone/keystone.conf | awk -F'=' '{print $2}'` curl -X PUT -H "X-Auth-Token: $OS_TOKEN" -H "Content-type: application/json" $OS_AUTH_URL/roles/9b821b2920544be7a4d8f71fa99fcd35/implies/9fe2ff9ee4384b1894a90878d3e92babCopy to Clipboard Copied! Toggle word wrap Toggle overflow CLI を使用して結果を確認します。この例では、
9fe2ff9ee4384b1894a90878d3e92babの ID で示されている_member_ロールへの暗黙的なアクセスが User1 に付与されています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl を使用して推論規則を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.4. ドメイン固有のロール リンクのコピーリンクがクリップボードにコピーされました!
ドメイン固有のロールを使用すると、ロールのルールを定義する際に、より粒度の高い制御が可能となるので、ロールが既存の prior ロールのエイリアスとして機能することができます。ドメイン固有のロールを暗黙的に継承するグローバルロールを設定することはできない点に注意してください。このため、1 つのプロジェクト内のユーザーの有効なロールの割り当てを一覧表示しても、ドメイン固有のロールはありません。
ドメイン固有のロールを作成できるのは、keystone ドメインを管理するユーザーです。このユーザーは、OpenStack のデプロイメントの管理者である必要はありません。このため、ドメイン固有のロールの定義は特定のドメインに限定することが可能です。
ドメイン固有のロールは、トークンのスコープには使用できません。これはグローバルロールでのみ行うことができます。
2.2.4.1. ドメイン固有のロールの使用 リンクのコピーリンクがクリップボードにコピーされました!
この例では、ドメイン固有のロールを作成して、その効果を確認する方法を説明します。
ドメインを作成します。
openstack domain create corp01
$ openstack domain create corp01Copy to Clipboard Copied! Toggle word wrap Toggle overflow ドメインを指定するロールを作成します (このパラメーターは
--domainとは異なる点に注意してください)。openstack role create operators --role-domain domain-corp01
$ openstack role create operators --role-domain domain-corp01Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 グループの管理 リンクのコピーリンクがクリップボードにコピーされました!
3.1. keystone グループの管理 リンクのコピーリンクがクリップボードにコピーされました!
3.1.1. コマンドラインの使用 リンクのコピーリンクがクリップボードにコピーされました!
Identity サービス (keystone) グループを使用すると、一定のパーミッションを複数のユーザーアカウントに割り当てることができます。以下の例では、グループを作成して、そのグループにパーミッションを割り当てます。その結果、そのグループに割り当てられているのと同じパーミッションがグループのメンバーに継承されます。
openstack group サブコマンドには keystone v3 が必要です。
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
$ 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
$ 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
3.1.2. Dashboard の使用 リンクのコピーリンクがクリップボードにコピーされました!
Dashboard を使用して keystone グループのメンバーシップを管理することができます。グループへのロールパーミッションの割り当てには、上記の例で説明したようにコマンドラインを使用する必要があります。
3.1.2.1. グループの作成 リンクのコピーリンクがクリップボードにコピーされました!
- Dashboard に管理ユーザーとしてログインして アイデンティティー > グループ を選択します。
- +グループの作成 をクリックします。
- グループの名前と説明を入力します。
- グループの作成 をクリックします。
3.1.2.2. グループメンバーシップの管理 リンクのコピーリンクがクリップボードにコピーされました!
Dashboard を使用して keystone グループのメンバーシップを管理することができます。
- Dashboard に管理ユーザーとしてログインして アイデンティティー > グループ を選択します。
- 編集する必要のあるグループの メンバーの管理 をクリックします。
- ユーザーの追加 を使用して、グループにユーザーを追加します。ユーザーを削除する必要がある場合には、そのユーザーのチェックボックスを選択して、ユーザーの削除 をクリックします。
第4章 クォータ管理 リンクのコピーリンクがクリップボードにコピーされました!
4.1. クォータ管理 リンクのコピーリンクがクリップボードにコピーされました!
クラウド管理者は、プロジェクトのクォータを設定、管理できます。各プロジェクトには、リソースが割り当てられており、プロジェクトユーザーには、これらのリソースを使用するパーミッションが付与されます。これにより、相互のパーミッションやリソースを干渉することなく、複数のプロジェクトが単一のクラウドを使用できます。リソースクォータのセットは、新規テナントの作成時に事前設定されます。クォータには、テナントに割り当て可能な仮想 CPU、インスタンス、RAM、Floating IP の数量が含まれます。クォータは、テナント (またはプロジェクト) と、テナントのユーザーレベルの両方で強制できます。Dashboard を使用して新規/既存のテナントの Compute または Block Storage のクォータを設定または変更できる点に注意してください。Dashboard でのプロジェクトクォータの設定および更新の手順については、??? を参照してください。
4.1.1. ユーザーのコンピュートクォータの表示 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーに現在設定されているクォータの値を一覧表示するには、以下のコマンドを実行します。
nova quota-show --user [USER] --tenant [TENANT]
$ nova quota-show --user [USER] --tenant [TENANT]
例
4.1.2. ユーザーのコンピュートクォータの更新 リンクのコピーリンクがクリップボードにコピーされました!
特定のクォータ値を更新するには、以下のコマンドを実行します。
nova quota-update --user [USER] --[QUOTA_NAME] [QUOTA_VALUE] [TENANT] nova quota-show --user [USER] --tenant [TENANT]
$ nova quota-update --user [USER] --[QUOTA_NAME] [QUOTA_VALUE] [TENANT]
$ nova quota-show --user [USER] --tenant [TENANT]
例
quota-update コマンドのオプション一覧を表示するには、以下を実行します。
nova help quota-update
$ nova help quota-update
4.1.3. ユーザーのオブジェクトストレージクォータの設定 リンクのコピーリンクがクリップボードにコピーされました!
オブジェクトストレージクォータは、以下のカテゴリーに分類できます。
- コンテナークォータ: 合計サイズ (バイト単位) または単一のコンテナーで保存可能なオブジェクト数を制限します。
- アカウントクォータ: 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
クォータの確認をするには swift stat コマンドをもう 1 度実行します。
第5章 プロジェクト管理 リンクのコピーリンクがクリップボードにコピーされました!
5.1. プロジェクト管理 リンクのコピーリンクがクリップボードにコピーされました!
クラウド管理者は、プロジェクト (テナント) を作成、管理することができます。テナントは、OpenStack ユーザーとリソースの数が割り当てられたプロジェクトです。テナントごとにクォータを設定することができます。これにより、相互のパーミッションやリソースを干渉することなく、複数のプロジェクトが単一のクラウドを使用できます。プロジェクトとテナントという用語はいずれも同じ意味で使用されます。ユーザーは、複数のプロジェクトに割り当てることができます。ユーザーとプロジェクトのペアごとに、ロールを 1 つ割り当てる必要があります。
5.1.1. プロジェクトの作成 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトの作成、プロジェクトへのメンバーの追加、プロジェクトのリソース制限の設定は、以下の手順を実行します。
- Dashboard に管理ユーザーとしてログインして アイデンティティー > プロジェクト を選択します。
- プロジェクトの作成 をクリックします。
- プロジェクト情報 タブでプロジェクトの名前と説明を入力します (有効 のチェックボックスはデフォルトで選択されます)。
- プロジェクトへのメンバーの追加は、プロジェクトメンバー タブの すべてのユーザー リストから行います。
- クォータ タブで、プロジェクトのリソースの上限を指定します。
- プロジェクトの作成 をクリックします。
5.1.2. プロジェクトの編集 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトを編集して名前や説明を変更したり、プロジェクトを有効化または一時的に無効化したり、メンバーを更新したりすることができます。
- Dashboard に管理ユーザーとしてログインして アイデンティティー > プロジェクト を選択します。
- プロジェクトの アクション コラムで、下向きの三角をクリックして プロジェクトの編集 をクリックします。
- プロジェクトの編集 ウィンドウでプロジェクトを更新して名前や説明を変更したり、プロジェクトを有効化または一時的に無効化したりすることができます。
- プロジェクトメンバー タブで、必要に応じてメンバーをプロジェクトに追加または削除します。
- 保存 をクリックします。
有効 のチェックボックスはデフォルトで選択されています。プロジェクトを一時的に無効にするには、有効 のチェックボックスのチェックマークを外します。無効なプロジェクトを有効にするには、有効 チェックボックスを選択します。
5.1.3. プロジェクトの削除 リンクのコピーリンクがクリップボードにコピーされました!
- Dashboard に管理ユーザーとしてログインして アイデンティティー > プロジェクト を選択します。
- 削除するプロジェクトを選択します。
- プロジェクトの削除 をクリックします。プロジェクトの削除の確認 ウィンドウが表示されます。
- プロジェクトの削除 をクリックしてアクションを確認します。
プロジェクトが削除され、ユーザーとのペアリングの関連付けは解除されます。
5.1.4. プロジェクトクォータの更新 リンクのコピーリンクがクリップボードにコピーされました!
クォータとは、クラウドリソースを最適化するためにプロジェクトごとに設定可能な操作の制約のことです。クォータを設定して、通知なしにプロジェクトのリソースが使い果たされないようにします。クォータは、プロジェクトレベルとプロジェクトとユーザーレベルの両方で実行できます。
- Dashboard に管理ユーザーとしてログインして アイデンティティー > プロジェクト を選択します。
- プロジェクトの アクション コラムで、下向きの三角をクリックして クォータの変更 をクリックします。
- クォータ タブで、必要に応じてプロジェクトクォータを変更します。
- 保存 をクリックします。
5.1.5. 現在のプロジェクトの変更 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーは、メンバーとなっているプロジェクトのみ、現在のプロジェクトとして設定することができます。また、現在のプロジェクトに設定 オプションを有効にするには、ユーザーが複数のプロジェクトのメンバーである必要があります。現在のプロジェクトとして設定すると、現在のプロジェクトとして指定されたプロジェクトのオブジェクトに、Dashboard からアクセスできるようになります。無効にしたプロジェクトは、有効化しない限り、現在のプロジェクトとして設定できません。
- Dashboard に管理ユーザーとしてログインして アイデンティティー > プロジェクト を選択します。
- プロジェクトの アクション コラムで、下向きの三角をクリックして 現在のプロジェクトに設定 をクリックします。
- または、管理者権限のないユーザーで、プロジェクトの アクション コラムの下向きの三角をクリックして 現在のプロジェクトに設定 をクリックすると、このコラムのデフォルトアクションになります。
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 には今後作成されるすべてのサブプロジェクトに対するアクセス権が自動的に付与されます。
5.2.2. アクセス権の削除 リンクのコピーリンクがクリップボードにコピーされました!
明示的に割り当てられたパーミッションと継承されたパーミッションは別々に削除する必要があります。以下に例を示します。
1. 明示的に割り当てられたロールからユーザーを削除します。
openstack role remove --user user1 --project private-cloud _member_
$ openstack role remove --user user1 --project private-cloud _member_
2. 変更の結果を確認します。継承されたパーミッションがまだ存在している点に注意してください。
3. 継承されたパーミッションを削除します。
openstack role remove --user user1 --project private-cloud _member_ --inherited
$ openstack role remove --user user1 --project private-cloud _member_ --inherited
4. 変更の結果を確認します。継承されたパーミッションが削除され、出力が空になりました。
openstack role assignment list --effective --user user1 --user-domain corp
$ openstack role assignment list --effective --user user1 --user-domain corp
5.2.3. ネストされたクォータ リンクのコピーリンクがクリップボードにコピーされました!
現時点では、ネストされたクォータ はまだサポートされていません。そのため、クォータはプロジェクトとサブプロジェクトで別々に管理する必要があります。
5.2.4. Reseller の概要 リンクのコピーリンクがクリップボードにコピーされました!
Reseller プロジェクトでは、複数のドメインを階層化することを目標としています。このようなドメインでは、1 つのサブドメインは、完全に有効化された 1 つのクラウドを表現し、最終的にはクラウドの部分的な再販を考慮することができます。この開発の作業は複数の段階に分かれています。第 1 段階については以下に説明します。
5.2.4.1. Reseller の第 1 段階 リンクのコピーリンクがクリップボードにコピーされました!
Reseller (第 1 段階) は、「Identity サービスの階層型マルチテナンシー (HMT)」に記載の階層型マルチテナンシー (HMT) の延長です。従来 keystone ドメインは、データベースバックエンド内に独自のテーブルを備えた、ユーザーとプロジェクトを保管するためのコンテナーとすることを目的としていました。その結果、ドメインは独自のテーブルには保管されなくなり、プロジェクトのテーブルにマージされました。
-
ドメインは、プロジェクトの種別の一つとなり、
is_domainフラグで区別されます。 - ドメインは、プロジェクト階層の最上位のプロジェクトを表します。ドメインは、プロジェクト階層のルートです。
projectsサブパスを使用してドメインの作成と取得をするように API が更新されました。-
新規ドメインを作成するには、
is_domainフラグを true に指定してプロジェクトを作成します。 -
ドメインであるプロジェクトを一覧表示します。
is_domainクエリーパラメーターを含むプロジェクトを取得します。
-
新規ドメインを作成するには、
第 1 段階では、ドメインの階層を作成することはできないので、サブドメインはまだ利用できません。また、これによりトークンのスコープは変わらず、keystone 以外のプロジェクトに必要な階層のサポートは実装されません。
5.3. プロジェクトのセキュリティー管理 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーグループとは、プロジェクトのインスタンスに割り当て可能な IP フィルターのルールセットで、インスタンスへのネットワークのアクセス権限を定義します。セキュリティーグループはプロジェクト別になっており、プロジェクトメンバーは自分のセキュリティーグループのデフォルトルールを編集して新規ルールセットを追加することができます。
プロジェクトにはすべて default セキュリティーグループが存在し、他にセキュリティーグループが定義されていないインスタンスに対して適用されます。このセキュリティーグループは、デフォルト値を変更しない限り、インスタンスへの受信トラフィックをすべて拒否し、送信トラフィックのみを許可します。
5.3.1. セキュリティーグループの作成 リンクのコピーリンクがクリップボードにコピーされました!
- Dashboard で プロジェクト > コンピュート > アクセスとセキュリティー を選択します。
- セキュリティーグループ タブで、セキュリティーグループの作成 をクリックします。
- セキュリティーグループに名前と説明を指定して、セキュリティーグループの作成 をクリックします。
5.3.2. セキュリティーグループのルールの追加 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、新しいグループには、送信アクセスのルールのみが指定されます。他のアクセスを指定するには、新しいルールを追加する必要があります。
- Dashboard で プロジェクト > コンピュート > アクセスとセキュリティー を選択します。
- セキュリティーグループ タブで、編集するセキュリティーグループの ルールの管理 をクリックします。
- ルールの追加 をクリックして、新規ルールを追加します。
ルールの値を指定して、追加 をクリックします。
以下のルールのフィールドは必須です。
- ルール
ルールタイプ。ルールテンプレート (例: SSH) を指定する場合には、そのフィールドは自動的に入力されます。
- TCP: 一般的には、システム間のデータの交換や、エンドユーザーの通信に使用されます。
- UDP: 一般的には、システム間のデータ交換に (特にアプリケーションレベルで) 使用されます。
- ICMP: 一般的には、ルーターなどのネットワークデバイスがエラーや監視メッセージを送信するのに使用されます。
- 方向
- 受信 (インバウンド) または送信 (アウトバウンド)
- 開放するポート
TCP または UDP ルールでは、開放する ポート または ポート範囲 (単一のポートまたはポートの範囲) を入力します。
- ポート範囲では、ポート番号 (下限) と ポート番号 (上限) フィールドにポートの値を入力します。
- 単一のポートの場合は ポート フィールドにポートの値を入力します。
- タイプ
- ICMP ルールのタイプ。-1:255 の範囲で指定する必要があります。
- コード
- ICMP ルールのコード。-1:255 の範囲で指定する必要があります。
- 接続相手
このルールが適用されるトラフィックの接続元
- CIDR (Classless Inter-Domain Routing): 指定のブロック内の IP へのアクセスを制限する IP アドレスブロック。ソース フィールドに CIDR を入力します。
- セキュリティーグループ: グループ内のインスタンスが他のグループインスタンスにアクセスできるようにするソースのセキュリティーグループ
5.3.3. セキュリティーグループルールの削除 リンクのコピーリンクがクリップボードにコピーされました!
- Dashboard で プロジェクト > コンピュート > アクセスとセキュリティー を選択します。
- セキュリティーグループ タブで、セキュリティーグループの ルールの管理 をクリックします。
- セキュリティーグループルールを選択し、イメージの削除 ボタンをクリックします。
- 再度、ルールの削除 をクリックします。
削除の操作は元に戻すことはできません。
5.3.4. セキュリティーグループの削除 リンクのコピーリンクがクリップボードにコピーされました!
- Dashboard で プロジェクト > コンピュート > アクセスとセキュリティー を選択します。
- セキュリティーグループ タブで、グループを選択して、セキュリティーグループの削除 をクリックします。
- セキュリティーグループの削除 をクリックします。
削除の操作は元に戻すことはできません。
第6章 ドメインの管理 リンクのコピーリンクがクリップボードにコピーされました!
Identity サービス (keystone) ドメインは、keystone で作成可能な追加の名前空間です。keystone ドメインは、ユーザー、グループ、プロジェクトの分割に使用できます。そのように分離されたドメインは、異なる LDAP または Active Directory 環境でユーザーを認証するために設定することも可能です。詳細は、「 Identity サービスとの統合 」を参照してください。
Identity サービスには、Default という名前のドメインが組み込まれています。このドメインは、サービスアカウント専用に確保し、ユーザーアカウント用には別のドメインを作成することを推奨します。
6.1. ドメイン一覧の表示 リンクのコピーリンクがクリップボードにコピーされました!
openstack domain list でドメインの一覧を表示することができます。以下に例を示します。
このコマンドが利用できない場合には、コマンドラインセッションで keystone v3 が有効化されているかどうかを確認してください。
6.2. 新規ドメインの作成 リンクのコピーリンクがクリップボードにコピーされました!
openstack domain create を使用して新規ドメインを作成することができます。以下に例を示します。
6.3. ドメインの詳細情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
openstack domain show でドメインの詳細情報を表示することができます。以下に例を示します。
6.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 必要な場合には、ドメインを再度有効化することができます。
openstack domain set TestDomain --enable
$ openstack domain set TestDomain --enableCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第7章 アイデンティティー管理 リンクのコピーリンクがクリップボードにコピーされました!
7.1. セキュアな LDAP 通信 リンクのコピーリンクがクリップボードにコピーされました!
Identity サービス (Keystone) が LDAP サーバーに対して認証を行うか、LDAP サーバーから識別情報を取得するように設定した場合に、CA 証明書を使用して Identity サービスの LDAP 通信をセキュリティー保護することができます。
本項では、Active Directory からの CA 証明書の取得、CA 証明書ファイルの Privacy Enhanced Mail (PEM) ファイル形式への変換、Identity サービスのセキュアな LDAP 通信設定の 3 つの方法について説明します。それぞれの方法での手順は、CA 信頼が設定された場所および方法に応じて実行するようにしてください。
7.1.1. Active Directory からの CA 証明書の取得 リンクのコピーリンクがクリップボードにコピーされました!
以下のコードは、Active Directory に対してクエリーを実行して CA 証明書を取得する方法の例を示しています。CA_NAME は証明書の名前に置き換え (mmc.exe で確認可能)、その他のパラメーターは実際の設定に応じて変更することができます。
7.1.2. CA 証明書の PEM ファイル形式への変換 リンクのコピーリンクがクリップボードにコピーされました!
/path/cacert.pem という名前のファイルを作成し、以下の例に示したように、Active Directory から CA 証明書を取得するための LDAP クエリーの内容をヘッダーとフッターの間に追加します。
-----BEGIN CERTIFICATE----- MIIDbzCCAlegAwIBAgIQQD14hh1Yz7tPFLXCkKUOszANB... -----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDbzCCAlegAwIBAgIQQD14hh1Yz7tPFLXCkKUOszANB... -----END
CERTIFICATE-----
トラブルシューティングを行う場合には、以下のクエリーを実行して LDAP が稼働しているかをチェックし、PEN 証明書ファイルが正しく作成されたことを確認してください。
LDAPTLS_CACERT=/path/cacert.pem ldapsearch -xLLL -ZZ -H $LDAPURL -s base -b "" "objectclass=*" currenttime
LDAPTLS_CACERT=/path/cacert.pem ldapsearch -xLLL -ZZ -H $LDAPURL -s base -b "" "objectclass=*" currenttime
このクエリーによって、以下のような結果が返されるはずです。
dn: currentTime: 20141022050611.0Z
dn: currentTime:
20141022050611.0Z
CA 証明書が Web サーバーでホストされていた場合には、以下のコマンドを実行して CA 証明書を取得することができます。
例
- $HOST=redhat.com
- $PORT=443
echo Q | openssl s_client -connect $HOST:$PORT | sed -n -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/ p'
# echo Q | openssl s_client -connect $HOST:$PORT | sed -n -e '/BEGIN CERTIFICATE/,/END CERTIFICATE/ p'
7.1.3. Identity サービスのセキュアな LDAP 通信を設定する方法 リンクのコピーリンクがクリップボードにコピーされました!
7.1.3.1. 方法 1 リンクのコピーリンクがクリップボードにコピーされました!
CA 信頼が PEM ファイルを使用して LDAP レベルで設定されている場合は、この方法を使用してください。CA 証明書ファイルの場所は手動で指定します。以下の手順では、Identity サービスのみでなく、OpenLDAP ライブラリーを使用する全アプリケーションの LDAP 通信がセキュリティー保護されます。
-
CA 証明書チェーンが含まれているファイルを PEM 形式で
/etc/openldap/certsディレクトリーにコピーします。 /etc/openldap/ldap.confを編集して以下のディレクティブを追加します。[CA_FILE] は CA 証明書ファイルの場所と名前に置き換えます。TLS_CACERT /etc/openldap/certs/[CA_FILE]
TLS_CACERT /etc/openldap/certs/[CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow httpd サービスを再起動します。
systemctl restart httpd.service
# systemctl restart httpd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3.2. 方法 2 リンクのコピーリンクがクリップボードにコピーされました!
CA 信頼が Network Security Services (NSS) データベースを介して LDAP ライブラリーレベルで設定されている場合は、この方法を使用してください。certutil コマンドを使用して、OpenLDAP ライブラリーが使用する NSS 証明書データベースに CA 証明書をインポートして信頼します。以下の手順では、Identity サービスのみでなく、OpenLDAP ライブラリーを使用する全アプリケーションの LDAP 通信がセキュリティー保護されます。
証明書をインポートして信頼します。[CA_FILE] は CA 証明書ファイルの場所と名前に置き換えます。
certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE] certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE]
# certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE] # certutil -d /etc/openldap/certs -A -n "My CA" -t CT,, -a -i [CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow CA 証明書が正しくインポートされていることを確認します。
certutil -d /etc/openldap/certs -L
# certutil -d /etc/openldap/certs -LCopy to Clipboard Copied! Toggle word wrap Toggle overflow CA 証明書がリストされ、信頼の属性が CT,, に設定されます。
httpd サービスを再起動します。
systemctl restart httpd.service
# systemctl restart httpd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.3.3. 方法 3 リンクのコピーリンクがクリップボードにコピーされました!
CA 信頼が PEM ファイルを使用して Keystone レベルで設定されている場合は、この方法を使用してください。Identity サービスと LDAP サーバー間の通信をセキュリティー保護する最後のメソッドは、Identity サービスに TLS を設定する方法です。
ただし、上記の 2 つのメソッドとは異なり、このメソッドでは、Identity サービスの LDAP 通信のみがセキュリティー保護され、OpenLDAP ライブラリーを使用する他のアプリケーションの LDAP 通信はセキュリティー保護されません。
以下の手順では、openstack-config コマンドを使用して /etc/keystone/keystone.conf ファイル内の値を編集します。
TLS を有効化します。
openstack-config --set /etc/keystone/keystone.conf ldap use_tls True
# openstack-config --set /etc/keystone/keystone.conf ldap use_tls TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書の場所を指定します。[CA_FILE] は CA 証明書ファイルの名前に置き換えます。
openstack-config --set /etc/keystone/keystone.conf ldap tls_cacertfile [CA_FILE]
# openstack-config --set /etc/keystone/keystone.conf ldap tls_cacertfile [CA_FILE]Copy to Clipboard Copied! Toggle word wrap Toggle overflow LDAP サーバーから受信した TLS セッションに対して実行するクライアント証明書チェックを指定します。[CERT_BEHAVIOR] は以下にあげる動作のいずれか 1 つに置き換えてください。
- demand
- LDAP サーバーにより証明書が常に要求されます。証明書が提供されなかった場合、または提供された証明書が既存の認証局ファイルに対して検証できなかった場合には、セッションは終了します。
- allow
- LDAP サーバーにより証明書が常に要求されます。証明書が提供されなくてもセッションは通常どおりに続行されます。証明書が提供されたが、既存の認証局ファイルに対して検証できなかった場合には、その証明書は無視され、セッションは通常どおりに続行します。
- never
- 証明書は一切要求されません。
openstack-config --set /etc/keystone/keystone.conf ldap tls_req_cert [CERT_BEHAVIOR]
# openstack-config --set /etc/keystone/keystone.conf ldap tls_req_cert [CERT_BEHAVIOR]Copy to Clipboard Copied! Toggle word wrap Toggle overflow httpd サービスを再起動します。
systemctl restart httpd.service
# systemctl restart httpd.serviceCopy 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 _member_Copy to Clipboard Copied! Toggle word wrap Toggle overflow
AppCredsUserとして Dashboard にログインし アプリケーション認証情報を作成します。概要→ユーザー管理→アプリケーション認証情報→+アプリケーション認証情報の作成をクリックします。注記作成されたアプリケーション認証情報のポップアップウィンドウを閉じると再度アクセスできなくなるため、必ずcloud.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 ユーザーとしてソースを提供している場合に認証情報を作成すると、同じロールがアプリケーション認証情報に付与されます。
デフォルトでは、付与されるロールのメンバーシップには、認証情報を作成したアカウントに割り当てられたすべてのロールが含まれます。特定ロールだけを対象にアクセスを委譲して、ロールのメンバーシップを限定することができます。以下に例を示します。
アプリケーション認証情報を削除するには、以下のコマンドを実行します。
openstack application credential delete AppCredsUser
$ openstack application credential delete AppCredsUser
8.4. 運用タスク リンクのコピーリンクがクリップボードにコピーされました!
8.4.1. 既存アプリケーション認証情報の置き換え リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション認証情報は、その認証情報を作成したユーザーアカウントにバインドされます。したがって、そのユーザーアカウントが削除されたり、ユーザーが委譲されたロールにアクセスできなくなったりすると、アプリケーション認証情報は無効になります。そのため、必要に応じて新しいアプリケーション認証情報を生成する準備が必要になります。
8.4.1.1. 設定ファイルを使用する場合 リンクのコピーリンクがクリップボードにコピーされました!
設定ファイルを使用して、アプリケーションに割り当てられたアプリケーション認証情報を更新するには、以下の手順を実施します。
- 新しいアプリケーション認証情報のセットを作成します。
- アプリケーションの設定ファイルに新しい認証情報を追加し、既存の認証情報と置き換えます。この操作は、「アプリケーション認証情報とアプリケーションの統合」に説明があります。
- アプリケーションのサービスを再起動して、変更を適用します。
- 必要に応じて、古いアプリケーション認証情報を削除します。コマンドラインオプションの詳細は、「コマンドラインを使用したアプリケーション認証情報の管理」を参照してください。
8.4.1.2. clouds.yaml ファイルを使用する場合 リンクのコピーリンクがクリップボードにコピーされました!
clouds.yaml によって使用される既存のアプリケーション認証情報を置き換えるには、以下の手順を実施します。
たとえば、clouds.yaml に AppCred1 という名前のアプリケーション認証情報が含まれ、まもなく有効期限が切れるとします。
- AppCred2 という名前のアプリケーション認証情報を作成します。
-
新しい
AppCred2をclouds.yamlファイルに追加し、AppCred1の設定を削除します。 -
clouds.yamlでトークンを生成し、認証情報が予想通りに機能していることを確認します。詳細は、「アプリケーション認証情報を使用したトークンの生成」のステップ 4 を参照してください。