ユーザーまたはグループである各サブジェクトは、次の 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.yaml
YAML ファイルを適用します。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_NAMESPACE
ClusterRoleBinding
、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_EMAIL
USER_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