RBAC 許可について
IAMサービスのアクセスロールは、 IBM Cloud Kubernetes Service クラスター内の Kubernetes のロールベースのアクセス制御(RBAC)に対応しています。 RBAC 役割および RBAC クラスター役割によって、ユーザーがクラスター内の Kubernetes リソースと対話できる方式についての一連の許可が定義されます。
IBM Cloud IAM を使用すると、 IBM Cloud から、ユーザーに IAM サービスアクセスロールを割り当てることで、RBAC を自動的に管理できます。 クラスター内のリソース (サービス・アカウントなど) に対するアクセス権限をカスタマイズするためには、RBAC についてより深く理解することが必要になる場合があります。
- IBM Cloud IAM 役割をサービス・アカウントに割り当てることはできません。 代わりに、直接 RBAC 役割をサービス・アカウントに割り当てることができます。
- ユーザーは、自分の役割の変更を有効にするには
ibmcloud ks cluster configコマンドを実行する必要があります。
RBACロールの種類にはどのようなものがありますか?
- Kubernetes 役割 は、デプロイメントやサービスなど、特定の名前空間内のリソースにスコープ設定されます。
- Kubernetes _クラスター役割_は、ワーカー・ノードなど、クラスター全体のリソースにスコープ設定されることも、ポッドなど、各名前空間で検出できる名前空間スコープ・リソースにスコープ設定されることもあります。
RBACロールバインディングとクラスタロールバインディングとは何ですか?
役割バインディングによって、RBAC 役割または RBAC クラスター役割が特定の名前空間に適用されます。 役割バインディングを使用して役割を適用すると、ユーザー・アクセス権限を、特定の名前空間内の特定のリソースに付与することになります。 役割バインディングを使用してクラスター役割を適用すると、ユーザー・アクセス権限を、各名前空間内で見つかる名前空間に有効範囲設定されたリソース (ポッドなど) に付与することになりますが、特定の名前空間内でのみ有効です。
クラスター役割バインディングによって、RBAC クラスター役割がクラスター内のすべての名前空間に適用されます。 クラスター役割バインディングを使用してクラスター役割を適用すると、ユーザー・アクセス権限を、クラスター全体のリソース (ワーカー・ノードなど)、またはすべての名前空間内の名前空間に有効範囲設定されたリソース (ポッドなど) に付与することになります。
私のクラスターでは、これらの役割はどのようなものになっているのでしょうか?
ユーザーがクラスター内から Kubernetes リソースを操作できるようにするには、IBM CloudIAM サービス・アクセス役割を介してユーザーに 1 つ以上の名前空間に対するアクセス権限を割り当てる必要があります。 サービス・アクセス役割が割り当てられているすべてのユーザーには、対応する RBAC クラスター役割が自動的に割り当てられます。 これらの RBAC クラスター役割は事前定義されており、これらによってユーザーはクラスター内の Kubernetes リソースと対話することが許可されます。 また、特定の名前空間にクラスター役割を適用するために役割バインディングが作成されるか、すべての名前空間にクラスター役割を適用するためにクラスター役割バインディングが作成されます。
各RBACロールで許可されているアクションの詳細については、「 IBM Cloud 」のIAMサービスアクセスロールに関するリファレンストピックをご覧ください。 各 RBAC 役割によって付与される、個々の Kubernetes リソースに対する権限を確認するには、RBAC 役割別の Kubernetes リソースの許可を確認してください。
カスタムロールやクラスタロールを作成することはできますか?
独自のカスタム RBAC ポリシーを作成する場合は、クラスター内の既存の IBM 役割バインディングを編集したり、既存の IBM バインディングと同じ名前でカスタム役割バインディングを作成したりしないようにしてください。 IBM提供の RBAC 役割バインディングに対して行った変更は、更新時に保持されません。
クラスター役割 view、edit、admin、および cluster-admin は、対応する IBM Cloud IAM サービス・アクセス役割をユーザーに割り当てたときに自動的に作成される事前定義役割です。 他の Kubernetes 許可を付与するには、カスタム RBAC 許可を作成できます。 カスタム RBAC ロールは、サービスアクセスロールで設定されている
RBAC ロールに追加されるものであり、それらを変更したり上書きしたりすることはありません。 注:カスタム RBAC 権限を作成するには、「IAM Manager 」サービスアクセスロール、または「 cluster-admin 」 Kubernetes RBAC ロールを付与する「 Administrator 」プラットフォームロールが必要です。 ただし、独自のカスタム Kubernetes
RBAC 役割を管理する場合、他のユーザーには IAM サービス・アクセス役割は必要ありません。
カスタム・クラスター役割バインディングおよび役割バインディングをいつ使用する必要がありますか?
クラスター内でポッドを作成したりアップデートしたりできる権限を与える場合があります。 Pod セキュリティポリシー(PSP)では、クラスターに付属する既存のクラスターロールのバインディングを使用することも、独自のバインディングを作成することもできます。
クラスターにアドオンを組み込む場合もあります。 たとえば、 クラスタ内で Helm を設定 する場合などです。
ユーザー、グループ、またはサービス・アカウントに対するカスタム RBAC 許可の作成
クラスター役割 view、edit、admin、および cluster-admin は、対応する IBM Cloud IAM サービス・アクセス役割を割り当てると、自動的に作成されます。 これらの事前定義許可で実行されるものよりも粒度の高いクラスター・アクセス・ポリシーが必要ですか? 問題ありません。 カスタム RBAC 役割およびカスタム RBAC クラスター役割を作成できます。
カスタム RBAC 役割およびカスタム RBAC クラスター役割を個別のユーザー、ユーザー・グループ、またはサービス・アカウントに割り当てることができます。 グループに対してバインディングが作成されると、そのグループに追加またはそのグループから削除されるすべてのユーザーに影響を与えます。 ユーザーをグループに追加すると、ユーザーは、付与された個別のアクセス権限に加えて、グループのアクセス権限を得ます。 ユーザーを削除した場合、アクセス権限は取り消されます。 なお、サービスアカウントアクセスグループに追加することはできません。
継続的デリバリーのツールチェーンなど、ポッド内で実行されるコンテナプロセスへのアクセス権を割り当てたい場合は、 Kubernetes ServiceAccountsを使用できます。 Travisおよび
Jenkins 用のアカウントの設定方法、およびそれらのアカウントカスタムRBACロールを割り当てる方法について解説したチュートリアルをご覧になるには、ブログ記事「 Kubernetes ServiceAccounts 自動化システムでの使用向け 」をご参照ください。
変更の中断を防ぐために、事前定義された view クラスター役割、edit クラスター役割、admin クラスター役割、cluster-admin クラスター役割は変更しないでください。 カスタム RBAC ロールは、 IBM Cloud の IAM サービスアクセスロールで設定されている RBAC ロールに追加されるものであり、それらを変更したり上書きしたりすることはありません。
-
名前空間アクセス: 特定の名前空間内のリソースへのアクセスをユーザー、アクセス・グループ、またはサービス・アカウントに許可するには、以下の組み合わせのいずれかを選択します。
- 役割を作成して、役割バインディングをそれに適用します。 このオプションは、1 つの名前空間にのみ存在する固有リソース (アプリのデプロイメントなど) へのアクセスを制御する場合に役立ちます。
- クラスター役割を作成して、役割バインディングをそれに適用します。 このオプションは、1 つの名前空間内の一般リソース (ポッドなど) へのアクセスを制御する場合に役立ちます。
-
クラスター全体のアクセス: クラスター全体のリソースまたはすべての名前空間内のリソースへのアクセスをユーザーまたはアクセス・グループに許可するには、クラスター役割を作成して、クラスター役割バインディングをそれに適用します。 このオプションは、有効範囲が名前空間に設定されていないリソース (ワーカー・ノードなど)、またはクラスターのすべての名前空間内のリソース (各名前空間のポッドなど) へのアクセスを制御する場合に役立ちます。
-
アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
-
すべてのネームスペースの Manager IAM サービス・アクセス・ロール または Administrator プラットフォーム・ロールがあることを確認します。
-
個々のユーザーまたはアクセスグループ内のユーザーにアクセス権を割り当てるには、そのユーザーまたはグループに、 IBM Cloud Kubernetes Service サービスレベルで少なくとも 1 つの IAM プラットフォームアクセスロールが割り当てられていることを確認してください。
カスタム RBAC 許可を作成するには、以下のようにします。
-
以下のような
.yamlファイルを作成して、roleまたはcluster roleを定義します。kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: default name: my_role rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "watch", "list"] - apiGroups: ["apps", "extensions"] resources: ["daemonsets", "deployments"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]YAMLパラメータを理解する パラメーター 説明 kind特定の名前空間内のリソースへのアクセス権限を付与する場合は Roleを使用します。 クラスター全体のリソース (ワーカー・ノードなど)、または名前空間に有効範囲が設定されたリソース (すべての名前空間のポッドなど) へのアクセス権限を付与する場合はClusterRoleを使用します。metadata.namespacekind が Roleのみの場合: アクセス権限を付与する Kubernetes 名前空間を指定します。rules.apiGroupsユーザーが操作できるようにしたい Kubernetes APIグループ ( "apps"、"batch"、"extensions"など)を指定します。 REST パスapi/v1にあるコア API グループに対するアクセス権限については、[""]のようにグループをブランクにします。rules.resourcesアクセスを許可する Kubernetes リソースの種類を指定します。例: "daemonsets"、"deployments"、"events"、"ingresses"など。"nodes"を指定する場合、kind はClusterRoleでなければなりません。rules.verbsユーザーに許可したい アクションの種類を指定します。たとえば、 "get"、"list"、"describe"、"create"、"delete"などです。 -
クラスター内に役割またはクラスター役割を作成します。
kubectl apply -f my_role.yaml -
役割またはクラスター役割が作成されたことを確認します。
- 役割:
kubectl get roles -n <namespace> ``` * クラスター役割: ```sh {: pre} kubectl get clusterroles ``` -
.yamlファイルを作成して、ユーザーを役割またはクラスター役割にバインドします。 各件名 (subject) の name に使用している固有の URL に注目してください。kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: my_role_binding namespace: default subjects: - kind: User name: IAM#user1@example.com apiGroup: rbac.authorization.k8s.io - kind: Group name: team1 apiGroup: rbac.authorization.k8s.io - kind: ServiceAccount name: <service_account_name> namespace: <kubernetes_namespace> roleRef: kind: Role name: my_role apiGroup: rbac.authorization.k8s.ioYAMLパラメータを理解する パラメーター 説明 kindRoleBindingを名前空間固有のRoleまたはClusterRoleに対して指定します。- クラスター全体の
ClusterRoleBindingの場合ClusterRoleを指定します。
apiVersionrbac.authorization.k8s.io/v1を使用します。metadata.namespace- kind
RoleBindingの場合: アクセス権限の付与先となる Kubernetes 名前空間を指定します。 - kind が
ClusterRoleBindingの場合:namespaceフィールドは使用しません。
metadata.name役割バインディングまたはクラスター役割バインディングの名前を指定します。 subjects.kindkind を次のいずれかとして指定します:
User: RBAC 役割またはクラスター役割を自分のアカウントにおける個別ユーザーにバインドします。Group: RBAC 役割またはクラスター役割を自分のアカウントにおける IBM Cloud IAM アクセス・グループにバインドします。ServiceAccount: RBAC 役割またはクラスター役割を自分のクラスターにおける名前空間内のサービス・アカウントにバインドします。
subjects.nameUser:IAM#:IAM#user@email.com.Group: アカウント IBM Cloud IAMアクセス・グループ 名を指定する。ServiceAccountの場合: サービス・アカウント名を指定します。
subjects.apiGroupUserまたはGroup:rbac.authorization.k8s.ioを使用する。ServiceAccountの場合: このフィールドを含めないでください。
subjects.namespaceServiceAccountonly: サービスアカウントがデプロイされる Kubernetes ネームスペースの名前を指定します。roleRef.kind役割用の kindファイルの.yamlと同じ値 (RoleまたはClusterRole) を入力します。roleRef.name役割用の .yamlファイルの名前を入力します。roleRef.apiGrouprbac.authorization.k8s.ioを使用します。 -
クラスター内に役割バインディングまたはクラスター役割バインディングのリソースを作成します。
kubectl apply -f my_role_binding.yaml -
バインディングが作成されたことを確認します。
kubectl get rolebinding -n <namespace> -
オプション: 他の名前空間で同じレベルのユーザー・アクセスを実行するには、他の名前空間にこれらの役割またはクラスター役割に対する役割バインディングをコピーします。
- 役割バインディングを、ある名前空間から別の名前空間にコピーします。
kubectl get rolebinding <role_binding_name> -o yaml | sed 's/<namespace_1>/<namespace_2>/g' | kubectl -n <namespace_2> create -f - ``` 例えば、`custom-role` 名前空間の `default` 役割バインディングを `testns` 名前空間にコピーします。 ```sh {: pre} kubectl get rolebinding custom-role -o yaml | sed 's/default/testns/g' | kubectl -n testns create -f - ``` 2. 役割バインディングがコピーされたことを確認します。 IBM Cloud IAM アクセス・グループを役割バインディングに追加した場合は、アクセス・グループ ID としてではなく、そのグループの各ユーザーが個別に追加されます。 ```sh {: pre} kubectl get rolebinding -n <namespace_2> ```
カスタム Kubernetes RBAC 役割またはクラスター役割を作成してバインドしたので、ユーザーをフォローアップします。 役割を介して実行許可を持っているアクション (ポッドを削除するなど) をテストするようにユーザーに依頼してください。
クラスター役割の集約による既存の許可の拡張
クラスター役割を他のクラスター役割と集約または結合することにより、ユーザーの既存の許可を拡張できます。 ユーザーに IBM Cloud サービス・アクセス役割を割り当てると、そのユーザーは対応する Kubernetes RBAC クラスター役割に追加されます。 ただし、特定のユーザーには、より多くの操作を行えるようにしたい場合もあるでしょう。
例えば、名前空間スコープ設定の admin クラスター役割を持つユーザーは、kubectl top pods コマンドを使用して名前空間におけるすべてのポッドについてポッド・メトリックを表示できるわけではありません。 admin クラスター役割のユーザーに top pods コマンドの実行が許可されるように、クラスター役割を集約できます。 詳細については、 Kubernetes のドキュメントを参照してください。
デフォルトのクラスターロールの権限を拡張したい場合、どのような一般的な操作が考えられますか?
各デフォルトのRBACクラスタロールで許可されている操作 を確認し、ユーザーが実行できることを把握した上で、許可されている操作と、ユーザーに実行させたい操作とを比較してください。
同じクラスター役割のユーザーに、同じタイプの操作で以下のようなエラーが発生した場合、クラスター役割を拡張してこの操作を含めることができます。
Error from server (Forbidden): pods.metrics.k8s.io is forbidden: User "IAM#myname@example.com" can't list resource "pods" in API group "metrics.k8s.io" in the namespace "mynamespace"
始める前に: アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
-
クラスター役割の YAML ファイルを作成します。
labelsセクションで、許可を集約する既存のクラスター役割を指定します。 以下の例では、事前定義されたadminクラスター役割を拡張して、ユーザーにkubectl top podsの実行を許可しています。 その他の例については、 『 Kubernetes 』のドキュメントを参照してください。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: view-pod-metrics labels: rbac.authorization.k8s.io/aggregate-to-admin: "true" rules: - apiGroups: - "metrics.k8s.io" resources: - pods verbs: - listYAMLパラメータを理解する パラメーター 説明 metadata.nameクラスタロールの名前を入力してください。 view、edit、admin、cluster-adminといった、あらかじめ定義されたクラスタロール名は使用しないでください。metadata.labels集約先のクラスター役割に適合するラベルをフォーマット
rbac.authorization.k8s.io/aggregate-to-<cluster_role>: "true"で追加します。 事前定義されたクラスター役割のラベルは以下のとおりです。- 名前空間にスコープ設定された IAM マネージャー・サービス・アクセス役割:
rbac.authorization.k8s.io/aggregate-to-admin: "true" - IAM ライター・サービス・アクセス役割:
rbac.authorization.k8s.io/aggregate-to-edit: "true" - IAM リーダー・サービス・アクセス役割:
rbac.authorization.k8s.io/aggregate-to-view: "true"
rules.apiGroupsユーザーが操作できるようにしたい Kubernetes APIグループ ( "apps"、"batch"、"extensions"など)を指定します。 REST パスapi/v1にあるコア API グループに対するアクセス権限については、[""]のようにグループをブランクにします。rules.resourcesアクセスを許可する Kubernetes リソースの種類を指定します。例: "daemonsets"、"deployments"、"events"、"ingresses"など。rules.verbsユーザーに許可したい アクションの種類を指定します。たとえば、 "get"、"list"、"describe"、"create"、"delete"などです。 - 名前空間にスコープ設定された IAM マネージャー・サービス・アクセス役割:
-
クラスター内にクラスター役割を作成します。
adminクラスタロールにロールバインディングを持つユーザーは、view-pod-metricsクラスタロールから付与される追加の権限を持つようになりました。kubectl apply -f <cluster_role_file.yaml> -
adminクラスター役割を持つユーザーをフォローアップします。 クラスター構成をリフレッシュして、kubectl top podsなどのアクションをテストするように要求してください。
RBAC 役割の確認
IBM Cloud Kubernetes Service クラスターで、カスタム RBAC 役割、または IAM サービス・アクセスと同期された RBAC 役割を確認します。
UI を使用した RBAC 役割の確認
-
コンソールにログインします。
-
RBAC 役割を確認するクラスターをクリックします。
-
**「Kubernetes ダッシュボード」**をクリックします。
プライベート・ネットワーク専用のクラスターの場合、VPN 上でないとダッシュボードを開くことができない可能性があります。 プライベート・クラウド・サービス・エンドポイントを介したクラスターへのアクセスを参照してください。
-
「クラスター」セクションで、「クラスター役割バインディング (Cluster Role Bindings)」、「クラスター役割 (Cluster Roles)」、「役割バインディング (Role Bindings)」、および**「役割」**を確認します。
CLI を使用した RBAC 役割の確認
-
アカウントにログインします。 該当する場合は、適切なリソース・グループをターゲットにします。 クラスターのコンテキストを設定します。
-
ユーザーが RBAC 役割に追加されていることを確認します。 対象となる役割バインディングより高い許可を持っているユーザーは、その役割バインディングに追加されません。 例えば、ユーザーがクラスター役割を割り当てられており、クラスター役割バインディング内にいる場合は、個別の名前空間の役割バインディングには追加されません。
ロールバインディングとクラスタロールバインディングを確認するには、クラスタ管理者である必要があります。 クラスタ管理者は、すべてのネームスペースで Manager サービス・アクセス・ロールまたは Administrator プラットフォーム・アクセス・ロールを持ちます。
- 読者:
kubectl get rolebinding ibm-view -o yaml -n <namespace> ``` * ライター: ```sh {: pre} kubectl get rolebinding ibm-edit -o yaml -n <namespace> ``` * 管理者 (1 つの名前空間が対象): ```sh {: pre} kubectl get rolebinding ibm-operate -o yaml -n <namespace> ``` * マネージャー、すべての名前空間: ```sh {: pre} kubectl get clusterrolebinding ibm-admin -o yaml ```
出力例
ユーザー user@email.com とアクセス・グループ team1 にリーダー・サービス・アクセス役割を割り当て、kubectl get rolebinding ibm-view -o yaml -n default を実行した場合は、以下の出力例が示されます。
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
creationTimestamp: 2018-05-23T14:34:24Z
name: ibm-view
namespace: default
resourceVersion: "8192510"
selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/ibm-view
uid: 63f62887-5e96-11e8-8a75-b229c11ba64a
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: IAM#user@email.com
- apiGroup: rbac.authorization.k8s.io
kind: group
name: team1
Kubernetes サービス・アクセス役割と対応する RBAC 役割
以下の表は、各サービス・アクセス役割およびそれに対応する RBAC 役割によって付与される Kubernetes リソース許可を示しています。
| サービス・アクセス・ロール | 対応する RBAC 役割、バインディング、およびスコープ | Kubernetes リソース許可 |
|---|---|---|
| リーダー役割 | 有効範囲を 1 つの名前空間に設定する場合: **ibm-view役割バインディングによってその名前空間で適用されるview**クラスター役割。-有効範囲をすべての名前空間に設定する場合: ** ibm-view役割バインディングによってクラスターの各名前空間で適用されるview**クラスター役割。
IBM Cloud コンソールおよび CLI でクラスターを表示することもできます。 |
|
| ライター役割 | 有効範囲が 1 つの名前空間に限定されている場合: その名前空間内の**ibm-edit役割バインディングによって適用されるeditクラスター役割。
有効範囲がすべての名前空間に設定されている場合: ibm-edit**役割バインディングによって適用されるクラスター役割 |
-名前空間内のリソースに対する読み取り/書き込みアクセス権限 -役割および役割バインディングに対する読み取り/書き込みアクセス権限なし < -Kubernetes ダッシュボードにアクセスして、名前空間内のリソースを表示します。 |
| マネージャー役割 | 有効範囲を 1 つの名前空間に設定する場合: **admin役割バインディングによってその名前空間で適用されるibm-operateクラスター役割
有効範囲をすべての名前空間に設定する場合: すべての名前空間に適用される cluster-adminクラスター役割バインディングによって適用されるibm-admin**クラスター役割 |
1つのネームスペースに範囲を限定する場合:
|
RBAC 役割ごとの Kubernetes リソース許可
IBM Cloud IAM サービス・アクセス役割が割り当てられたユーザーには必ず、対応する事前定義の Kubernetes 役割ベース・アクセス制御 (RBAC) 役割も自動的に割り当てられます。 独自のカスタム Kubernetes RBAC 役割を管理する場合は、ユーザー、グループ、またはサービス・アカウントに対するカスタム RBAC 許可の作成を参照してください。 ユーザー名について詳しくは、RBAC ユーザーの IBM Cloud IAM 発行者の詳細を参照してください。
名前空間内のリソースに対して特定の kubectl コマンドを実行する正しい許可があるかどうか不明な場合は、 kubectl auth can-i コマンドを試行します。
以下の表は、各 RBAC 役割によって個々の Kubernetes リソースに付与される許可を示しています。 権限は、そのロールを持つユーザーがリソースに対して実行できる verbs (またはアクション)として表示されます。例えば、「get」、「list」、「describe」、「create」、または「delete」などです。
| Kubernetes リソース | view |
edit |
admin および cluster-admin |
|---|---|---|---|
bindings |
get、list、watch | get、list、watch | get、list、watch cluster-admin のみ: create、delete、update |
configmaps |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
cronjobs.batch |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
daemonsets.apps |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
daemonsets.extensions |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
deployments.apps |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
deployments.apps/rollback |
|
create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
deployments.apps/scale |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
deployments.extensions |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
deployments.extensions/rollback |
|
create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
deployments.extensions/scale |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
endpoints |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
events |
get、list、watch | get、list、watch | get、list、watch |
horizontalpodautoscalers.autoscaling |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
ingresses.extensions |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
jobs.batch |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
limitranges |
get、list、watch | get、list、watch | get、list、watch |
localsubjectaccessreviews |
|
|
create |
namespaces |
get、list、watch | get、list、watch | get、list、watch cluster-admin のみ: create、delete |
namespaces/status |
get、list、watch | get、list、watch | get、list、watch |
networkpolicies |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
networkpolicies.extensions |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
node |
なし | なし | 1 つの名前空間を有効範囲とするadmin : なし
|
persistentvolume |
なし | なし | create、delete、 deletecollection、get、list、patch、update、watch |
persistentvolumeclaims |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
poddisruptionbudgets.policy |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
pods |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、 top、patch、update、watch |
pods/attach |
|
create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
pods/exec |
|
create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
pods/log |
get、list、watch | get、list、watch | get、list、watch |
pods/portforward |
|
create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
pods/proxy |
|
create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
pods/status |
get、list、watch | get、list、watch | get、list、watch |
replicasets.apps |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
replicasets.apps/scale |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
replicasets.extensions |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
replicasets.extensions/scale |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
replicationcontrollers |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
replicationcontrollers/scale |
get、list、watch | cr}作成、削除、 deletecollection、取得、一覧表示、パッチ適用、更新、監視 |
create、delete、 deletecollection、get、list、patch、update、watch |
replicationcontrollers/status |
get、list、watch | get、list、watch | get、list、watch |
replicationcontrollers.extensions/scale |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
resourcequotas |
get、list、watch | get、list、watch | get、list、watch |
resourcequotas/status |
get、list、watch | get、list、watch | get、list、watch |
rolebindings |
|
|
create、delete、 deletecollection、get、list、patch、update、watch |
roles |
|
|
create、delete、 deletecollection、get、list、patch、update、watch |
secrets |
|
create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
serviceaccounts |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch、 impersonate |
create、delete、 deletecollection、get、list、patch、update、watch、 impersonate |
services |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
services/proxy |
|
create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
statefulsets.apps |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
statefulsets.apps/scale |
get、list、watch | create、delete、 deletecollection、get、list、patch、update、watch |
create、delete、 deletecollection、get、list、patch、update、watch |
RBAC ユーザーの IBM Cloud IAM 発行者の詳細
IAM で IBM Cloud Kubernetes Service に対するサービス・アクセス役割を付与されたユーザーには、RBAC の対応するユーザー役割が付与されます。 RBAC ユーザーの詳細には、固有の発行者 ID、サブジェクト ID クレーム、および Kubernetes ユーザー名が含まれます。 これらの詳細は、クラスターの Kubernetes のバージョンによって異なります。 古いバージョンからクラスターを更新すると、詳細も自動的に更新されます。
RBAC ユーザー名の前には IAM# が付いています。 OpenID の認証の仕組みに関する詳細については、『 Kubernetes 』のドキュメントを参照してください。
Kubernetes API サーバーでの認証にユーザーの詳細を使用する自動化ツールをクラスターに作成する場合は、この情報を使用できます。
| バージョン | 発行者 | クレーム | 大/小文字* |
|---|---|---|---|
| Kubernetes | https://iam.cloud.ibm.com/identity |
realmed_sub_<account_ID> |
小文字 |
*: 小文字は「user.name@company.com」のようになります。 キャメル・ケースは「User.Name@company.com」のようになります。