Kf は、複数のチームが Kf クラスタを共有できるようにする Kubernetes のロールのセットを提供します。このページでは、これらのロールとそれを使用する場合のベスト プラクティスについて説明します。
Kf のロールを使用するタイミング
Kf のロールを使用すると、複数のチームで Kf がインストールされている Kubernetes クラスタを共有できます。このロールは、個別の Kf Spaces へのアクセスを提供します。
次の条件に当てはまる場合に、Kf のロールを使用してクラスタへのアクセスを共有します。
- クラスタは信頼できるチームによって使用されます。
- クラスタのワークロードが環境が提供するセキュリティ レベルについて同じ前提条件を共有している。
- クラスタは、厳密に制御されている Google Cloud プロジェクト内に存在します。
Kf のロールでは、次のことはできません。
- 信頼できないデベロッパーやワークロードからクラスタを保護する。詳細については、GKE の共有責任モデルをご覧ください。
- ワークロードを分離する。詳細については、クラスタの強化ガイドをご覧ください。
- Kf とやり取りする追加の Kubernetes のロールの定義を防ぐ。
- Google Cloud プロジェクトまたはクラスタにアクセスできる管理者によるアクセスを防ぐ。
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-auditor 、space-developer 、space-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/ |
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/ |
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/ |
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/ |
Kubernetes Engine Cluster Viewer |
Provides access to get and list GKE clusters. |
|
roles/ |
Kubernetes Engine Default Node Service Account | Least privilege role to use as the default service account for GKE Nodes. | |
roles/ |
Kubernetes Engine Developer |
Provides access to Kubernetes API objects inside clusters. |
|
roles/ |
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/ |
Kubernetes Engine Viewer |
Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects. |
|
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 スペース内のリソースに対する読み取りアクセス権を持ちます。このロールは、
space-auditor
Kf のロールに最も近いものです。 - Cloud Foundry の Space デベロッパーは、CF スペースでアプリケーションのデプロイと管理を行うことができます。このロールは、
space-developer
Kf のロールに最も近いものです。 - Cloud Foundry の スペースの管理者は、CF スペースの設定を変更し、ユーザーにロールを割り当てることができます。このロールは、
space-manager
Kf のロールに最も近いものです。
次のステップ
- セキュリティの概要の GKE セキュリティの詳細を確認する。
- GKE の共有責任モデルについての理解を深める。
- GKE でのアクセス制御の詳細を確認する。
- GKE マルチ テナンシーの概要を読む。
- GKE クラスタの強化について確認する。
- Kf の事前定義ロールを構成する Kubernetes の権限を理解する。