ロールベース アクセス制御

Kf は、複数のチームが Kf クラスタを共有できるようにする Kubernetes のロールのセットを提供します。このページでは、これらのロールとそれを使用する場合のベスト プラクティスについて説明します。

Kf のロールを使用するタイミング

Kf のロールを使用すると、複数のチームで Kf がインストールされている Kubernetes クラスタを共有できます。このロールは、個別の Kf Spaces へのアクセスを提供します。

次の条件に当てはまる場合に、Kf のロールを使用してクラスタへのアクセスを共有します。

  • クラスタは信頼できるチームによって使用される。
  • クラスタのワークロードが環境が提供するセキュリティ レベルについて同じ前提条件を共有している。
  • クラスタは、厳密に制御されている Google Cloud プロジェクト内に存在する。

Kf のロールでは、次のことはできません。

Kf のロール

以降のセクションでは、Kf が提供する Kubernetes RBAC のロールと、Google Kubernetes Engine(GKE)IAM との相互作用について説明します。

事前定義ロール

Kf には、さまざまな役割を担う異なるサブジェクトにアクセスできるように、いくつかの Kubernetes ロールが事前に定義されています。事前定義ロールは、Kf Space で管理される Kubernetes Namespace 内のサブジェクトにバインドできます。

サブジェクトが Kubernetes Namespace 内のロールにバインドされている場合、そのロールに付与された権限に一致する Namespace に存在するオブジェクトにアクセスが制限されます。Kf では、一部のリソースはクラスタ スコープで定義されます。Kf は、Namespace 内のサブジェクトの変更を監視し、クラスタ スコープで追加の制限付きのロールを付与します。

ロール 役職 説明 スコープ
space-auditor Space 監査者 Space への読み取り専用アクセスを許可します。 Space
space-developer Space デベロッパー アプリケーションのデベロッパーに、Space 内でのアプリケーションのデプロイと管理を許可します。 Space
space-manager Space マネージャー 管理作業の実施と Space の監査者、デベロッパー、マネージャーの管理が許可されます。 Space
SPACE_NAME-manager 動的スペースの管理者 単一の Space オブジェクトへの書き込みアクセス権を付与します。指定された Space 内で space-manager ロールを持つすべてのサブジェクトに自動的に付与されます。 クラスタ
kf-cluster-reader クラスタ閲覧者 クラスタ スコープの Kf オブジェクトに対する読み取り専用アクセスを許可します。すべての space-auditorspace-developerspace-manager に自動的に付与されます。 クラスタ

事前定義ロールを構成するポリシールールについては、Kf ロールのリファレンス ドキュメントをご覧ください。

IAM ロール

Kf ロールは、Kubernetes クラスタ内のオブジェクトに対するアクセス制御を提供します。クラスタに対する認証を行うための IAM のロールも付与する必要があります。

  • プラットフォーム管理者には roles/container.admin IAM ロールを付与する必要があります。Kf のインストール、アップグレード、削除が許可されます。また、Spaces や ClusterServiceBrokers などのクラスタ スコープの Kf オブジェクトの作成、削除も許可されます。

  • Kf エンドユーザーには roles/container.viewer IAM ロールを付与する必要があります。このロールは、Kf のロールで拡張可能な制限付きの権限を使用したクラスタ認証を許可します。

IAM では、より高度なユースケースを解決するため、GKE 用に追加の事前定義ロールが用意されています。

Role Title Description Lowest resource
roles/container.admin Kubernetes Engine 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.

  • Project
roles/container.cloudKmsKeyUser Kubernetes Engine KMS Crypto Key User Allow the Kubernetes Engine service agent in the cluster project to call KMS with user provided crypto keys to sign payloads.
roles/container.clusterAdmin Kubernetes Engine Cluster Admin

Provides access to management of clusters.

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.

  • Project
roles/container.clusterViewer Kubernetes Engine Cluster Viewer

Provides access to get and list GKE clusters.

roles/container.defaultNodeServiceAccount Kubernetes Engine Default Node Service Account Least privilege role to use as the default service account for GKE Nodes.
roles/container.developer Kubernetes Engine Developer

Provides access to Kubernetes API objects inside clusters.

  • Project
roles/container.hostServiceAgentUser Kubernetes Engine Host Service Agent User

Allows the Kubernetes Engine service account in the host project to configure shared network resources for cluster management. Also gives access to inspect the firewall rules in the host project.

roles/container.viewer Kubernetes Engine Viewer

Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects.

  • Project

Cloud Foundry のロールを Kf にマッピングする

Cloud Foundry のロールは Kf の事前定義ロールに似ています。Cloud Foundry には 2 つの主要なタイプのロールがあります。

  • ユーザー アカウントと認証(UAA)サブシステムによって割り当てられたロール。すべての Cloud Foundry API エンドポイントに適用される、大まかな OAuth スコープを提供します。
  • Cloud Controller API(CAPI)で付与されるロール。API リソースに対するきめ細かいアクセスを提供します。

UAA のロール

UAA によって提供されるロールは、プロジェクト レベルの IAM ロールとほぼ同じです。

  • Cloud Foundry の管理者ユーザーは、すべての Cloud Foundry 組織とスペースに対して管理アクティビティを実行できます。このロールは、roles/container.admin IAM のロールに最も近いものです。
  • Cloud Foundry の読み取り専用管理者ユーザーは、すべての Cloud Foundry API エンドポイントにアクセスできます。このロールは、roles/container.admin IAM のロールに最も近いものです。
  • Cloud Foundry のグローバル監査者ユーザーは、シークレットを除くすべての Cloud Foundry API エンドポイントに対する読み取りアクセス権を持ちます。同等の IAM ロールはありませんが、同様の権限を持つカスタムロールを作成できます。

Cloud Controller API のロール

CAPI によって提供されるロールは、クラスタ内でサブジェクトに付与される Kf ロールに最も近く、所有するプロジェクトに対する roles/container.viewer IAM ロールを持ちます。

  • Cloud Foundry の Space 監査者は、CF スペース内のリソースに対する読み取りアクセス権を持ちます。このロールは、Kf のロール space-auditor に最も近いものです。
  • Cloud Foundry の Space デベロッパーは、CF スペースでアプリケーションのデプロイと管理を行うことができます。このロールは、Kf のロール space-developer に最も近いものです。
  • Cloud Foundry のスペースの管理者は、CF スペースの設定を変更し、ユーザーにロールを割り当てることができます。このロールは、Kf のロール space-manager に最も近いものです。

次のステップ