IAM 許可ポリシーを作成する

このページでは、Google Kubernetes Engine(GKE)での認可に使用する Identity and Access Management(IAM)許可ポリシーの作成方法について説明します。

Google Cloud、GKE、Kubernetes API の呼び出しのすべてにおいて、リクエストを行うアカウントに必要な権限が付与されている必要があります。デフォルトでは、自身以外のユーザーはプロジェクトやそのリソースにアクセスできません。IAM を使用すると、プロジェクトにアクセスできるユーザーとそのユーザーに許可する操作を管理できます。IAM 権限は、クラスタまたは Namespace の特定のオブジェクトに対するアクセスを詳細に制御する Kubernetes RBAC と連携します。IAM では、プロジェクト レベルと組織レベルの権限が重視されますが、GKE に固有の事前定義ロールもいくつか用意されています。

ユーザーとサービス アカウントに Google Cloud プロジェクトへのアクセス権を付与するには、それらをプロジェクト チームメンバーとして追加してから、チームメンバーにロールを割り当てます。ロールによって、アカウントがアクセスできるGoogle Cloud リソースと実行可能なオペレーションが定義されます。

GKE では、IAM を使用して、クラスタへのアクセスと操作を許可するユーザーおよびサービス アカウントを管理することもできます。

このページは、IAM 許可ポリシーを使用して GKE クラスタの認可を管理するセキュリティ スペシャリストとオペレーター向けです。 Google Cloud のコンテンツで使用されている一般的なロールとタスクの例の詳細については、一般的な GKE ユーザーのロールとタスクをご覧ください。

このページを読む前に、次の内容をよく理解しておいてください。

始める前に

作業を始める前に、次のタスクが完了していることを確認してください。

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API を有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化します。gcloud CLI をインストール済みの場合は、gcloud components update コマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。

Kubernetes RBAC で IAM を使用する

Kubernetes には、ロールベース アクセス制御(RBAC)という組み込みのアクセス制御メカニズムがあります。IAM はプロジェクト レベルでアクセスを制御するのに対し、RBAC はクラスタレベルと Namespace レベルでアクセスを制御します。

IAM と RBAC は連携して使用できます。エンティティには、クラスタ内のリソースを操作するのに十分な RBAC と IAM 権限が必要です。

IAM ロールについて

以降のセクションでは、 Google Cloud リソースへのアクセスを制御するために使用できる IAM ロールのタイプについて説明します。これらのロールタイプと使用するタイミングの詳細については、使用するロールの種類を選択するをご覧ください。

GKE 事前定義ロール

IAM には、特定の Google Cloud リソースへのアクセス権を付与し、それ以外のリソースへの無認可のアクセスを防止する事前定義ロールが用意されています。

IAM には、GKE 用に次の事前定義ロールが用意されています。

Role Permissions

(roles/container.admin)

Provides access to full management of clusters and their Kubernetes API objects.

To set a service account on nodes, you must also have the Service Account User role (roles/iam.serviceAccountUser) on the user-managed service account that your nodes will use.

Lowest-level resources where you can grant this role:

  • Project

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

container.*

  • container.apiServices.create
  • container.apiServices.delete
  • container.apiServices.get
  • container.apiServices.getStatus
  • container.apiServices.list
  • container.apiServices.update
  • container.apiServices.updateStatus
  • container.auditSinks.create
  • container.auditSinks.delete
  • container.auditSinks.get
  • container.auditSinks.list
  • container.auditSinks.update
  • container.backendConfigs.create
  • container.backendConfigs.delete
  • container.backendConfigs.get
  • container.backendConfigs.list
  • container.backendConfigs.update
  • container.bindings.create
  • container.bindings.delete
  • container.bindings.get