すべてのサブジェクト(ユーザーまたはグループ)は、Management API サーバーと Kubernetes クラスタへのアクセス権を取得するために、次の 2 つの手順を行います。
Management API サーバーへのアクセス: Management API サーバーの権限を持つサブジェクトに、
ClusterRoleBindingまたはRoleBindingを使用して、 事前定義されたClusterRoleを付与します。Kubernetes クラスタへのアクセス: Namespace 固有のアクセス権またはクラスタ全体のアクセス権を付与します。
Namespace 固有のアクセス権の場合: クラスタ内の特定のプロジェクトの Namespace へのアクセス権を付与するには、
ProjectRoleと対応するProjectRoleBindingを作成します。このプロセスでは、Kubernetes のRoleとRoleBindingが、ProjectとProjectRoleBindingが関連付けられているProjectに対応するクラスタ内の KubernetesNamespaceに伝播されます。ProjectRoleクラスタ全体のアクセス権の場合: クラスタ内のすべての Namespace へのアクセス権を付与するには、
OrganizationRoleと対応するOrganizationRoleBindingを作成します。このプロセスでは、Kubernetes のClusterRoleとClusterRoleBindingが Kubernetes クラスタ全体に伝播されます。
このページは、組織内の権限を管理するプラットフォーム管理者グループ内のユーザーを対象としています。
組織 IAM 管理者とプロジェクト IAM 管理者の両方が、プロジェクト固有の追加権限を付与するために、プロジェクト ロールとプロジェクト ロール バインディングを作成できます。ただし、組織 IAM 管理者は、任意のプロジェクトのプロジェクト ロールとプロジェクト ロール バインディングを作成できます。一方、プロジェクト IAM 管理者は、アクセス権を持つプロジェクトのプロジェクト ロールとプロジェクト ロール バインディングのみを作成できます。
始める前に
ロール バインディングの管理またはアクセス権の取り消しを行う前に、必要な権限をリクエストして環境を準備する必要があります。必要な特定のロールは、ロール バインディングを管理するか、ユーザー アクセス権を取り消すかによって異なります。
IAM ロールをリクエストする
実行する必要があるタスクに基づいてロールをリクエストするには、組織 IAM 管理者にお問い合わせください。
- 組織 IAM 管理者 (
organization-iam-admin): 組織レベルとプロジェクト レベルでロール バインディングを作成、更新、削除します。 - 組織セッション管理者 (
org-session-admin): 特定のゾーン内のユーザーのアクティブ セッションとアクセス権を取り消します。
環境を準備する
コマンドライン ツールを使用してロール バインディングを管理またはアクセス権を取り消すには、次の設定を行います。
- gdcloud CLI を ダウンロードして インストールします(まだインストールしていない場合)。
kubectlで API を使用するには、追加の設定が必要です。
ロール バインディングを設定する
チームメンバーに組織レベルまたはプロジェクト レベルでリソースへのアクセス権を付与するロール バインディングを設定できます。
ロール バインディングの設定に必要な権限を取得するには、組織 IAM 管理者に組織 IAM 管理者ロールの付与を依頼してください。
承認されたメンバーにロールを割り当てる手順は次のとおりです。
コンソール
- GDC コンソールにログインします。
- [プロジェクトを選択] をクリックして、組織またはプロジェクトを選択します。
- 組織のロール バインディングを設定するには、組織を選択します。
- プロジェクトのロール バインディングを設定するには、プロジェクトを選択します。
- ナビゲーション メニューで、[ID とアクセス] > [アクセス] をクリックします。
- [メンバーを追加] をクリックします。
- [ID プロバイダ] リストで、ID プロバイダを選択します。
- 個々のユーザーまたはグループを追加するかどうかを選択します。
- [ユーザー名またはグループ エイリアス] フィールドに、ユーザー名、メールアドレス、またはエイリアスを入力します。
- In the [Role] list, select the role that you want to assign to the user or group, such as [Organization Viewer] at the organization level or [Project Creator] at the project level.
- [追加] をクリックします。
メンバーが [承認済みメンバー] リストに表示されます。
gdcloud
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でRoleBindingではなくClusterRoleBindingが必要な場合は、ロールに必要なバインディング タイプを確認し、Namespacegpc-systemに RoleBinding を作成します。詳細については、 Role definitions をご覧ください。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 コンソールにログインします。
- ナビゲーション メニューで、[ID とアクセス] > [アクセス] をクリックします。
- [承認済みメンバー] リストで、メンバーを選択します。
- [メンバーを削除] をクリックします。
- 確認画面が表示されたら、[メンバーを削除] をクリックして確定します。
gdcloud
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