Oracle Cloud Infrastructureドキュメント

アクセス制御とContainer Engine for Kubernetesについて

Kubernetesクラスタで操作を実行するには、クラスタにアクセスするための適切な権限が必要です。

Container Engine for Kubernetesによって作成および管理されるKubernetesクラスタのほとんどの操作では、Oracle Cloud Infrastructure Identity and Access Management (IAM)はアクセス制御を提供します。 クラスタにアクセスするためのユーザー権限は、そのグループに属しています。 グループの権限は、ポリシーによって定義されます。 ポリシーは、グループのメンバーが実行できるアクションと、どのコンパートメントを定義します。 ユーザーは、クラスタにアクセスし、メンバーであるグループに設定されたポリシーに基づいて操作を実行できます。

IAM次のものを制御します:

  • ユーザーがクラスタを作成または削除できるかどうか
  • ユーザーがノード・プールを追加、削除、または変更できるかどうか
  • which Kubernetes object create/delete/view操作は、コンパートメント内またはテナンシ内のすべてのクラスタで実行できます

「クラスタの作成とデプロイメントのためのポリシー構成」も参照してください。

IAMに加えて、Kubernetes RBAC Authorizerは、Kubernetes RBACロールとクラスタ・ロールを使用して、特定のクラスタ上のユーザーに対して細かい詳細なアクセス制御を実行できます。 Kubernetes RBACロールは、アクセス許可のコレクションです。 たとえば、ロールには、ポッドに対する読み取り権限とポッドに対する権限の一覧が含まれます。 Kubernetes RBAC clusterroleはロールのようなものですが、クラスタ内のどこでも使用できます。 Kubernetes RBACロール・バインディングは、役割をユーザーまたはユーザーのセットにマップし、そのユーザーにそのネームスペース内のリソースに対する役割のアクセス許可を付与します。 同様に、Kubernetes RBAC clusterrolebindingは、clusterroleをユーザーまたはユーザーのセットにマップし、そのクラスタ・ロール権限をクラスタ全体のユーザーに許可します。

IAM Kubernetes RBAC Authorizerは連携して、少なくとも1人が正常に認証されたユーザーがリクエストされたKubernetes操作を完了できるようにします。

ユーザーがクラスタ上で操作を実行しようとすると(create roleおよびcreate clusterrole操作を除く)、IAMは最初に、ユーザーが所属するグループに適切で十分な権限があるかどうかを判断します。 そうであれば、操作は成功します。 試行された操作でKubernetes RBACロールまたはclusterroleを介して付与された追加のアクセス権が必要な場合は、Kubernetes RBAC Authorizerがユーザーに適切なKubernetesロールまたはclusterroleが付与されているかどうかを判断します。

通常、Kubernetesクラスタをデプロイするときは、独自のKubernetes RBACロールとクラスタ・ロールを定義して、きめ細かな制御を追加したいと考えています。 ロールの作成またはクラスタ・ロール操作の作成を実行しようとすると、Kubernetes RBAC Authorizerはまず、十分なKubernetes権限を持っているかどうかを判断します。 ロールまたはclusterroleを作成するには、作成しようとしている新しいロール(またはclusterrole)と少なくとも同等以上の権限を持つ既存のKubernetes RBACロール(またはclusterrole)が割り当てられている必要があります。

デフォルトでは、ユーザーにはKubernetes RBACロール(またはクラスタ・ロール)が割り当てられません。 したがって、新しいロール(またはclusterrole)を作成する前に、適切な権限を持つロール(またはclusterrole)を割り当てる必要があります。 このようなロールとクラスタ・ロールは、cluster-admin clusterrole (Kubernetesドキュメントの「デフォルト・ロールとロール・バインディング」を参照)のように、常にデフォルトで作成されます。 cluster-admin clusterroleは基本的にスーパーユーザー権限を与えます。 cluster-admin clusterroleを付与されたユーザーは、指定されたクラスタ内のすべてのネームスペースで操作を実行できます。

例: Kubernetes RBACクラスタ管理者clusterroleの付与
例: 開発者ユーザーに新しいクラスタ内のポッドを読み取る機能を与える