このドキュメントでは、gdcloud CLI を使用して、Google Distributed Cloud(GDC)エアギャップの標準クラスタの権限を管理する方法について説明します。標準クラスタは、プロジェクト スコープの構成可能な Kubernetes 環境です。最小限のデフォルト サービスで、カスタム ワークロードの柔軟性と制御性を高めます。
標準クラスタと他のクラスタタイプについて詳しくは、Kubernetes クラスタ構成をご覧ください。
このページは、GDC プロジェクト内のリソースを管理して保護する必要がある、デベロッパー オペレーションやデータ サイエンティストなどのアプリケーション オペレーター グループ内のユーザーを対象としています。詳細については、GDC エアギャップの対象ユーザーに関するドキュメントをご覧ください。
始める前に
- 組織 IAM 管理者に、プロジェクト IAM 管理者(
project-iam-admin)ロールの付与を依頼します。ロールの詳細については、ロールの定義をご覧ください。 - まだインストールしていない場合は、gdcloud CLI をインストールします。
標準クラスタ アクセスの権限を付与する
プロジェクト IAM 管理者(project-iam-admin)ロールを持つユーザーは、次の手順で、標準クラスタ内のアクセスを管理するために必要なロールを他のユーザーに付与します。
gdcloud CLI を使用して、構成済みの ID プロバイダでログインします。
ユーザーにプロジェクトのクラスタ管理者(
cluster-admin)ロールを付与します。このコマンドは、ユーザーをロールにバインドし、標準クラスタ内のアクセスを管理できるようにします。ロールの詳細については、事前定義ロールの説明とプロジェクトのロール定義をご覧ください。
gdcloud projects add-iam-policy-binding PROJECT \ --role=ROLE \ --member=user:USER_ACCOUNT次の変数を置き換えます。
PROJECT: 標準クラスタが存在するプロジェクトの名前。ROLE: 付与するロールの名前(cluster-adminやcluster-developerなど)。USER_ACCOUNT: ロールを付与するユーザー アカウント。組織に関連付けられた ID プロバイダの接頭辞(idpprefix-user@example.comなど)を含みます。使用される接頭辞は、組織の IdP 構成によって異なります。詳細については、ID プロバイダに接続するをご覧ください。
次の例では、プロジェクト
fooの ID プロバイダの接頭辞がfop-であると仮定して、クラスタ管理者ロールをuser@example.comに付与します。gdcloud projects add-iam-policy-binding foo \ --role=cluster-admin \ --member=user:fop-user@example.com
標準クラスタ内のアクセスを管理する
前のセクションで cluster-admin ロールが付与されたユーザーは、次の手順を行います。
gdcloud CLI を使用して、構成済みの ID プロバイダでログインします。
--standardフラグを使用して、標準クラスタの kubeconfig ファイルを生成します。標準クラスタをターゲットにするには、このフラグが必要です。export KUBECONFIG=KUBECONFIG_FILE gdcloud get-credentials STANDARD_CLUSTER_NAME --standard --project=PROJECT次の変数を置き換えます。
KUBECONFIG_FILE:standard-cluster-kubeconfig.yamlなどの kubeconfig ファイルのパス。STANDARD_CLUSTER_NAME: Standard クラスタの名前。PROJECT: 標準クラスタが存在するプロジェクトの名前。
kubectlを使用して、標準クラスタ内の権限を定義します。cluster-admin権限を持つユーザーは、カスタムのRoleオブジェクトとClusterRoleオブジェクトを作成できます。これらの権限を付与するには、対応するRolebindingオブジェクトとClusterRoleBindingオブジェクトを作成して、ロールをユーザーやサービス アカウントなどの特定のサブジェクトにバインドします。次の例では、
kubectlを使用して、test名前空間にtest-roleという名前のカスタムRoleのサンプルを作成します。kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: test-role namespace: test rules: - apiGroups: - "" resources: - configmaps verbs: - get EOF次の例では、
test名前空間にRoleのRoleBinding(test-roleという名前)を作成します。これにより、ID プロバイダの接頭辞fop-を持つユーザー alice@example.com と、defaultNamespace のmy-service-accountという名前のServiceAccountに権限が付与されます。kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: test-role-binding namespace: test subjects: - kind: User name: fop-alice@example.com apiGroup: rbac.authorization.k8s.io - kind: ServiceAccount name: my-service-account namespace: default roleRef: kind: Role name: test-role apiGroup: rbac.authorization.k8s.io EOF