第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