ユーザーまたはグループである各サブジェクトは、次の 2 つの手順で Management API サーバーと Kubernetes クラスタへのアクセス権を取得します。
Management API サーバー アクセス:
ClusterRoleBindingまたはRoleBindingを使用して、Management API サーバーの権限を持つサブジェクトを事前定義されたClusterRoleに付与します。Kubernetes クラスタへのアクセス: Namespace 固有のアクセス権またはクラスタ全体のアクセス権を付与します。
Namespace 固有のアクセスの場合: クラスタ内の特定のプロジェクトの Namespace へのアクセス権を付与するには、
ProjectRoleと対応するProjectRoleBindingを作成します。このプロセスでは、KubernetesRoleとRoleBindingがクラスタ内の KubernetesNamespaceに伝播されます。これは、ProjectRoleとProjectRoleBindingが関連付けられているProjectに対応します。クラスタ全体のアクセスの場合: クラスタ内のすべての Namespace へのアクセス権を付与するには、
OrganizationRoleと対応するOrganizationRoleBindingを作成します。このプロセスでは、KubernetesClusterRoleとClusterRoleBindingが Kubernetes クラスタ全体に伝播されます。
ペルソナ(IO、PA、AO)はロールではなく、特定の権限にマッピングされ、個々のユーザーに割り当てられたユーザーロールのコレクションです。
組織 IAM 管理者とプロジェクト IAM 管理者は、プロジェクト ロールとプロジェクト ロール バインディングを作成して、プロジェクト固有の追加権限を付与できます。ただし、組織の IAM 管理者は、任意のプロジェクトのプロジェクト ロールとプロジェクト ロール バインディングを作成できます。一方、プロジェクト IAM 管理者は、アクセス権のあるプロジェクトのプロジェクト ロールとプロジェクト ロール バインディングのみを作成できます。
ロール バインディングを設定する
チームメンバーに組織レベルまたはプロジェクト レベルでリソースへのアクセス権を付与するロール バインディングを設定できます。
ロール バインディングの設定に必要な権限を取得するには、組織の IAM 管理者に組織の IAM 管理者ロールを付与するよう依頼してください。
承認済みメンバーにロールを割り当てる手順は次のとおりです。
コンソール
- GDC コンソールにログインします。
- [プロジェクトを選択] をクリックして、組織またはプロジェクトを選択します。
- 組織のロール バインディングを設定するには、組織を選択します。
- プロジェクトのロール バインディングを設定するには、プロジェクトを選択します。
- ナビゲーション メニューで、[Identity and Access] > [アクセス] をクリックします。
- [メンバーを追加] をクリックします。
- [ID プロバイダ] リストで、ID プロバイダを選択します。
- 個々のユーザーを追加するか、グループを追加するかを選択します。
- [ユーザー名またはグループ エイリアス] フィールドに、ユーザー名、メールアドレス、エイリアスのいずれかを入力します。
- [ロール] リストで、ユーザーまたはグループに割り当てるロール(組織レベルの組織閲覧者、プロジェクト レベルのプロジェクト作成者など)を選択します。
- [追加] をクリックします。
メンバーが [承認済みメンバー] リストに表示されます。
gdcloud
gdcloud CLI がインストールされていることを確認します。
gdcloud auth loginコマンドを使用してログインし、ID プロバイダで認証します。詳細については、gdcloud CLI 認証をご覧ください。ロール バインディングを設定します。
組織のロール バインディングを設定します。
gdcloud organizations add-iam-policy-binding root \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLE次の変数を置き換えます。
USER_ACCOUNT: ロールを付与するユーザー アカウント。このフラグは、ID プロバイダの接頭辞(user:idpprefix-user@example.com)が付いたユーザーのメールアドレス、またはサービス アカウント プロジェクト(serviceAccount:projectName:serviceAccountName)が付いたサービス アカウント名を受け入れます。ROLE_TYPE: ロール バインディングを設定するClusterRole、Role、またはOrganizationRole。ROLE: ユーザーに割り当てる事前定義ロールまたはカスタムロールの名前(project-creatorなど)。
プロジェクトのロール バインディングを設定します。
gdcloud projects add-iam-policy-binding PROJECT \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLE次の変数を置き換えます。
PROJECT: ロール バインディングを設定するプロジェクトの名前。USER_ACCOUNT: ロールを付与するユーザー アカウント。このフラグは、ID プロバイダの接頭辞(user:idpprefix-user@example.com)が付いたユーザーのメールアドレス、またはサービス アカウント プロジェクト(serviceAccount:projectName:serviceAccountName)が付いたサービス アカウント名を受け入れます。ROLE_TYPE: ロール バインディングを設定するRoleまたはProjectRole。ROLE: ユーザーに割り当てる事前定義ロールまたはカスタムロールの名前(project-viewerなど)。
API
使用するユーザー認証情報をエクスポートします。
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIGロールを割り当てるユーザー アカウントを、ID プロバイダの接頭辞(
idpprefix-paul@example.comなど)を含めてエクスポートします。export USERNAME=IDP_PREFIX-USER_EMAILユーザーが必要とするロールの名前(
project-creatorなど)をエクスポートします。ロールの詳細については、ロールの定義をご覧ください。export ROLE_NAME=ROLE_NAMEユーザーを
ClusterRole、Role、ProjectRole、OrganizationRoleのいずれかに割り当てます。ユーザーを
ClusterRoleに割り当てる:kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ clusterrolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USERNAME}ClusterRoleでClusterRoleBindingではなくRoleBindingが必要な場合は、ロール定義を参照して、ロールに必要なバインディング タイプを確認し、代わりに Namespacegpc-systemに RoleBinding を作成します。kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ rolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USERNAME} --namespace=gpc-systemユーザーを
Roleに割り当てる:バインディングを作成する Namespace をエクスポートします。
export BINDING_NAMESPACE=BINDING_NAMESPACE次のコマンドを実行して
RoleBindingを作成します。kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ rolebinding ${USERNAME}-${ROLE_NAME}-binding \ --role=${ROLE_NAME} --user=${USERNAME} --namespace=${BINDING_NAMESPACE}
ユーザーを
ProjectRoleに割り当てる:projectrolebinding.yamlファイルを作成します。apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectRoleBinding metadata: name: BINDING_NAME namespace: PROJECT_NAME spec: roleRef: apiGroup: resourcemanager.gdc.goog kind: ProjectRole name: ROLE_NAME subjects: - apiGroup: rbac.authorization.k8s.io kind: USER_KIND name: USERNAME次のように置き換えます。
BINDING_NAME: ユーザーがカスタマイズできるバインディングの名前(user-project-creator-bindingなど)。PROJECT_NAME: ロールを付与するプロジェクトの名前。ROLE_NAME: ユーザーに割り当てるProjectRoleの名前。USER_KIND: ユーザーの種類。User、Group、ServiceAccountのいずれかです。USERNAME: ロールを割り当てるユーザーのメールアドレス。ID プロバイダの接頭辞(idpprefix-paul@example.comなど)を含む。これは、エクスポートされたUSERNAMEと一致する必要があります。
projectrolebinding.yamlファイルを適用します。kubectl create -f projectrolebinding.yaml
ユーザーを
OrganizationRoleに割り当てます。organizationrolebinding.yamlファイルを作成します。apiVersion: resourcemanager.gdc.goog/v1 kind: OrganizationRoleBinding metadata: name: BINDING_NAME namespace: gpc-system spec: roleRef: apiGroup: resourcemanager.gdc.goog kind: OrganizationRole name: ROLE_NAME subjects: - apiGroup: rbac.authorization.k8s.io kind: USER_KIND name: USERNAME次のように置き換えます。
BINDING_NAME: ユーザーがカスタマイズできるバインディングの名前(user-organization-creator-bindingなど)。ROLE_NAME: ユーザーに割り当てるOrganizationRoleの名前。USER_KIND: ユーザーの種類。User、Group、ServiceAccountのいずれかです。USERNAME: ロールを割り当てるユーザーのメールアドレス。ID プロバイダの接頭辞(idpprefix-paul@example.comなど)を含む。これは、エクスポートされたUSERNAMEと一致する必要があります。
organizationrolebinding.yamlYAML ファイルを適用します。kubectl create -f organizationrolebinding.yaml
ロール バインディングを削除する
アクセスが不要になったら、メンバーとそれに関連するロール、権限、アクセス権を削除します。
メンバーを削除する手順は次のとおりです。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで、[Identity and Access] > [アクセス] をクリックします。
- [承認済みメンバー] リストで、メンバーを選択します。
- [メンバーを削除] をクリックします。
- 確認画面が表示されたら、[メンバーを削除] をクリックして確定します。
gdcloud
gdcloud CLI がインストールされていることを確認します。
gdcloud auth loginコマンドを使用してログインし、ID プロバイダで認証します。詳細については、gdcloud CLI 認証をご覧ください。ロール バインディングを削除します。
組織のロール バインディングを削除します。
gdcloud organizations remove-iam-policy-binding root \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLE次の変数を置き換えます。
USER_ACCOUNT: ロールを削除するユーザー アカウント。このフラグは、ID プロバイダの接頭辞(user:idpprefix-user@example.com)が付いたユーザーのメールアドレス、またはサービス アカウント プロジェクト(serviceAccount:projectName:serviceAccountName)が付いたサービス アカウント名を受け入れます。ROLE_TYPE: ロール バインディングを削除するClusterRole、Role、またはOrganizationRole。ROLE: ユーザー アカウントから削除する事前定義ロールまたはカスタムロールの名前(project-creatorなど)。
プロジェクトのロール バインディングを削除します。
gdcloud projects remove-iam-policy-binding PROJECT \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLE次の変数を置き換えます。
PROJECT: ロール バインディングを削除するプロジェクトの名前。USER_ACCOUNT: ロールを削除するユーザー アカウント。このフラグは、ID プロバイダの接頭辞(user:idpprefix-user@example.com)が付いたユーザーのメールアドレス、またはサービス アカウント プロジェクト(serviceAccount:projectName:serviceAccountName)が付いたサービス アカウント名を受け入れます。ROLE_TYPE: ロール バインディングを削除するRoleまたはProjectRole。ROLE: ユーザー アカウントから削除する事前定義ロールまたはカスタムロールの名前(project-viewerなど)。
API
使用するユーザー認証情報をエクスポートします。
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIGロールを削除するユーザー アカウントを、ID プロバイダの接頭辞(
idpprefix-paul@example.comなど)を含めてエクスポートします。export USERNAME=IDP_PREFIX-USER_EMAILバインディングが削除される Namespace をエクスポートします。
export BINDING_NAMESPACE=BINDING_NAMESPACEClusterRoleBinding、RoleBinding、ProjectRoleBinding、OrganizationRoleBindingを削除して、ユーザー アカウントに付与された権限を取り消します。ユーザー アカウントから
ClusterRoleBindingを削除します。kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete clusterrolebinding ${USERNAME}-paユーザー アカウントから
RoleBindingを削除します。kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete rolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}ユーザー アカウントから
ProjectRoleBindingを削除します。kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete projectrolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}ユーザー アカウントから
OrganizationRoleBindingを削除します。kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete organizationrolebinding ${USERNAME}-pa \ --namespace=gpc-system
ユーザー アクセスを取り消す
メンバーが組織またはチームを離れる場合は、Google Distributed Cloud(GDC)エアギャップ アプライアンスへのアクセスを取り消すことができます。ユーザーのアクセス権を取り消すと、ユーザーは GDC のエアギャップ アプライアンスからログアウトし、ロールと権限が削除されます。ユーザーのアクティビティとセッションを開始時刻と終了時刻で一覧表示することもできます。
ユーザーのアクセス権を取り消す手順は次のとおりです。
ユーザーの取り消しに必要な権限を取得します。組織の IAM 管理者に、組織セッション管理者(
org-session-admin)ロールを付与するよう依頼します。ユーザーのアクセス権を取り消します。
gdcloud admin auth revoke --accounts USER_EMAILUSER_EMAIL は、アクセス権を取り消すユーザーのメールアドレスに置き換えます。
コマンドを実行すると、次のような出力が表示されます。この例では、ユーザー
ariel@example.comからのアクセスを取り消します。Success: NUMBER of sessions revoked for user ariel@example.comこの例では、変数 NUMBER はユーザーがアクティブにしたセッションの数を指します。
gdcloud admin auth revokeコマンドを再度実行して、ユーザーのアクセス権が取り消されたことを確認します。成功すると、次のように表示されます。No sessions found for account: ariel@example.com
取り消されたすべてのユーザーを一覧表示する
取り消されたすべてのユーザーとそのアクティビティとセッションを表示するには、次の操作を行います。
開始時間と終了時間で取り消されたすべてのユーザーを一覧表示します。
gdcloud admin auth list --format="csv(ACCOUNT, IDENTITY_PROVIDER, CREATION_TIME, EXPIRATION_TIME)"成功すると、次のような出力が表示されます。
account,identity_provider,creation_time,expiration_time ariel@example.com,example-idp,2023-02-15 22:10:52,2023-02-15 23:10:52