This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.第10章 ロールベースアクセス制御 (RBAC) の管理
10.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して RBAC リソースを表示し、管理者 CLI を使用してロールとバインディングを管理することができます。
10.2. ロールとバインディングの表示 リンクのコピーリンクがクリップボードにコピーされました!
ロールは、クラスター全体およびプロジェクトのスコープの両方で各種のアクセスレベルを付与するために使用できます。ユーザーおよびグループは、1 度に複数のロールに関連付けるか、またはバインドすることができます。oc describe
コマンドを使用して、ロールおよびそれらのバインディングの詳細を確認できます。
クラスター全体でバインドされた cluster-admin のデフォルトクラスターロールを持つユーザーはすべてのリソースに対してすべてのアクションを実行できます。ローカルにバインドされた admin のデフォルトクラスターロールを持つユーザーはそのプロジェクト内のロールとバインディングをローカルに管理できます。
「Evaluating Authorization」セクションで動詞の詳細リストを確認してください。
10.2.1. クラスターロールの表示 リンクのコピーリンクがクリップボードにコピーされました!
クラスターロールおよびそれらの関連付けられたルールセットを表示するには、以下を実行します。
10.2.2. クラスターのロールバインディングの表示 リンクのコピーリンクがクリップボードにコピーされました!
各種のロールにバインドされたユーザーおよびグループを示す、クラスターのロールバインディングの現在のセットを表示するには、以下を実行します。
10.2.3. ローカルのロールバインディングの表示 リンクのコピーリンクがクリップボードにコピーされました!
すべてのデフォルトクラスターロールは、ユーザーまたはグループにローカルにバインドできます。
カスタムローカルロールを作成できます。
ローカルのロールバインディングも表示することができます。
各種のロールにバインドされたユーザーおよびグループを示す、ローカルのロールバインディングの現在のセットを表示するには、以下を実行します。
oc describe rolebinding.rbac
$ oc describe rolebinding.rbac
デフォルトでは、ローカルのロールバインディングを表示する際に現在のプロジェクトが使用されます。または、プロジェクトは -n
フラグで指定できます。これは、ユーザーに admin のデフォルトクラスターロールがすでにある場合、別のプロジェクトのローカルのロールバンディングを表示するのに役立ちます。
10.3. ロールバインディングの管理 リンクのコピーリンクがクリップボードにコピーされました!
ロールをユーザーまたはグループに追加、またはバインドすることにより、そのユーザーまたはグループにそのロールによって付与される関連アクセスが提供されます。oc adm policy
コマンドを使用して、ユーザーおよびグループに対するロールの追加および削除を実行できます。
以下の操作を使用し、ローカルのロールバインディングでのユーザーまたはグループの関連付けられたロールを管理する際に、プロジェクトは -n
フラグで指定できます。これが指定されていない場合には、現在のプロジェクトが使用されます。
コマンド | 説明 |
---|---|
|
リソースに対してアクションを実行できるユーザーを示します。 |
|
指定されたロールを現在のプロジェクトの指定ユーザーにバインドします。 |
|
現在のプロジェクトの指定ユーザーから指定されたロールを削除します。 |
|
現在のプロジェクトの指定ユーザーとそれらのロールのすべてを削除します。 |
|
指定されたロールを現在のプロジェクトの指定グループにバインドします。 |
|
現在のプロジェクトの指定グループから指定されたロールを削除します。 |
|
現在のプロジェクトの指定グループとそれらのロールのすべてを削除します。 |
以下の操作を使用して、クラスターのロールバインディングも管理できます。クラスターのロールバインディングは namespace を使用していないリソースを使用するため、-n
フラグはこれらの操作に使用されません。
コマンド | 説明 |
---|---|
|
指定されたロールをクラスターのすべてのプロジェクトの指定ユーザーにバインドします。 |
|
指定されたロールをクラスターのすべてのプロジェクトの指定ユーザーから削除します。 |
|
指定されたロールをクラスターのすべてのプロジェクトの指定グループにバインドします。 |
|
指定されたロールをクラスターのすべてのプロジェクトの指定グループから削除します。 |
たとえば、以下を実行して admin ロールを joe-project の alice ユーザーに追加できます。
oc adm policy add-role-to-user admin alice -n joe-project
$ oc adm policy add-role-to-user admin alice -n joe-project
次に、ローカルのロールバインディングを表示し、出力に追加されていることを確認します。
- 1
- alice ユーザーが admins
RoleBinding
に追加されています。
10.4. ローカルロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトのローカルロールを作成し、これをユーザーにバインドできます。
プロジェクトのローカルロールを作成するには、以下のコマンドを実行します。
oc create role <name> --verb=<verb> --resource=<resource> -n <project>
$ oc create role <name> --verb=<verb> --resource=<resource> -n <project>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドで、以下を指定します: *
<name>
、ローカルロールの名前 *<verb>
、ロールに適用する動詞のカンマ区切りの一覧 *<resource>
、ロールが適用されるリソース *<project>
、プロジェクト名+ たとえば、ユーザーが
blue
プロジェクトで Pod を閲覧できるようにするローカルロールを作成するには、以下のコマンドを実行します。+
oc create role podview --verb=get --resource=pod -n blue
$ oc create role podview --verb=get --resource=pod -n blue
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 新規ロールをユーザーにバインドするには、以下のコマンドを実行します。
oc adm policy add-role-to-user podview user2 --role-namespace=blue -n blue
$ oc adm policy add-role-to-user podview user2 --role-namespace=blue -n blue
10.5. クラスターロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
クラスターロールを作成するには、以下のコマンドを実行します。
oc create clusterrole <name> --verb=<verb> --resource=<resource>
$ oc create clusterrole <name> --verb=<verb> --resource=<resource>
コマンドで以下を指定します。
-
<name>
: ローカルのロール名です。 -
<verb>
: ロールに適用する動詞のカンマ区切りの一覧です。 -
<resource>
: ロールが適用されるリソースです。
たとえば、ユーザーが Pod を閲覧できるようにするクラスターロールを作成するには、以下のコマンドを実行します。
oc create clusterrole podviewonly --verb=get --resource=pod
$ oc create clusterrole podviewonly --verb=get --resource=pod
10.6. クラスターおよびローカルのロールバインディング リンクのコピーリンクがクリップボードにコピーされました!
クラスターのロールバインディングは、クラスターレベルで存在するバインディングですが、ロールバインディングはプロジェクトレベルで存在します。クラスターの view (表示) ロールは、ユーザーがプロジェクトを表示できるようローカルのロールバインディングを使用してユーザーにバインドする必要があります。ローカルロールは、クラスターのロールが特定の状況に必要なパーミッションのセットを提供しない場合にのみ作成する必要があります。
一部のクラスターのロール名は最初は判別しにくい場合があります。クラスターロール cluster-admin
は、ローカルのロールバインディングを使用してユーザーにバインドでき、このユーザーがクラスター管理者の特権を持っているように見せますが、実際にはそうではありません。一方、特定プロジェクトにバインドされる cluster-admin
クラスターロールはそのプロジェクトのスーパー管理者のような機能があり、クラスターロール admin
のパーミッションを付与するほか、レート制限を編集する機能などのいくつかの追加パーミッションを付与します。これは、クラスター管理者にバインドされるクラスターのロールバインディング を一覧表示しない Web コンソール UI を使う場合にとくに分かりにくくなりますが、この Web コンソール UI はローカルのロールバインディング (cluster-admin
をローカルにバインドするために使用される) を一覧表示します。
10.7. ポリシー定義の更新 リンクのコピーリンクがクリップボードにコピーされました!
クラスターのアップグレード時に、また任意のマスターの再起動時は常に、デフォルトのクラスターロールが欠落しているパーミッションを復元するために自動的に調整されます。
デフォルトクラスターロールをカスタマイズしており、ロールの調整によってそれらが変更されないようにするには、以下を実行します。
各ロールを調整から保護します。
oc annotate clusterrole.rbac <role_name> --overwrite rbac.authorization.kubernetes.io/autoupdate=false
$ oc annotate clusterrole.rbac <role_name> --overwrite rbac.authorization.kubernetes.io/autoupdate=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告この設定を含むロールがアップグレード後に新規または必須のパーミッションを組み込むように手動で更新する必要があります。
デフォルトのブートストラップポリシーテンプレートを生成します。
oc adm create-bootstrap-policy-file --filename=policy.json
$ oc adm create-bootstrap-policy-file --filename=policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ファイルの内容は OpenShift Container Platform バージョンによって異なりますが、ファイルにはデフォルトポリシーのみが含まれます。
- policy.json ファイルを、クラスターロールのカスタマイズを組み込むように更新します。
ポリシーを使用し、調整から保護されていないロールおよびロールバインディングを自動的に調整します。
oc auth reconcile -f policy.json
$ oc auth reconcile -f policy.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SCC (Security Context Constraints) を調整します。
oc adm policy reconcile-sccs \ --additive-only=true \ --confirm
# oc adm policy reconcile-sccs \ --additive-only=true \ --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow