このドキュメントでは、Google Distributed Cloud(GDC)エアギャップでプロジェクトを整理する既存のタグの Key-Value ペアを管理する方法について説明します。タグは、Identity and Access Management(IAM)権限を使用して管理者が表示できます。タグの Key-Value ペアの権限を設定して、プロジェクトにバインドされたときに誰が閲覧できるかを制御できます。既存のタグ属性を表示して、組織内でタグがどのように適用されているかを把握することもできます。たとえば、次のようになります。
タグの詳細については、タグの概要をご覧ください。
このドキュメントは、GDC ユニバースでプロジェクトの整理と管理を担当するプラットフォーム管理者グループ内の IT 管理者を対象としています。詳細については、GDC エアギャップの対象ユーザーに関するドキュメントをご覧ください。
始める前に
他のユーザーにタグ権限を付与したり、タグのキーと値のペアの Namespace を検査したりするために必要な権限を取得するには、組織 IAM 管理者にタグ管理者ロール(
tag-admin)の付与を依頼してください。タグ付きプロジェクトを一覧表示するために必要な権限を取得するには、組織 IAM 管理者にプロジェクト閲覧者ロール(
project-viewer)の付与を依頼してください。
タグの Key-Value ペアに権限を適用する
各タグキーとタグ値には、ユーザーがアクセスして管理するための特定のロール バインディングが必要です。
タグキーと値に適切なロールを設定して、権限を適用します。
目的のロール名と、そのロールを適用するために必要な Namespace を特定します。詳細については、タグの使用状況をご覧ください。
定義された各 Namespace に
RoleBindingリソースを適用して、タグのロール権限を付与します。kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: BINDING_NAME namespace: NAMESPACE subjects: - kind: GROUP_SUBJECT name: GROUP_NAME apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: TAG_ROLE_NAME apiGroup: rbac.authorization.k8s.io EOF次のように置き換えます。
BINDING_NAME: ロール バインディングのカスタム名。NAMESPACE: ロール バインディングを適用する Namespace(platform、タグキーの管理 Namespace、タグ値のポリシー Namespaceなど)。GROUP_SUBJECT: ロールの権限を適用するサブジェクトの種類。この値はUser、Group、ServiceAccountのいずれかです。詳細については、サブジェクトの参照に関する Kubernetes のドキュメントをご覧ください。GROUP_NAME: カスタム グループ名。TAG_ROLE_NAME: 適用するタグロールの名前(tag-adminやtag-KEY_NAME-adminなど)。
たとえば、タグのキーと値のペアに対する
tag-adminロールの権限をユーザーに付与するには、次のRoleBindingカスタム リソースをplatformNamespace、タグキーのmanagementNamespace、タグ値のpolicyNamespaceにデプロイします。kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: tag-admin-binding namespace: platform subjects: - kind: User name: user-1 apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: tag-admin apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: tag-admin-mgmt-binding namespace: g-t-tag-key-1 subjects: - kind: User name: user-1 apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: tag-admin apiGroup: rbac.authorization.k8s.io --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: tag-admin-policy-binding namespace: g-t-tag-value-1 subjects: - kind: User name: user-1 apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: tag-admin apiGroup: rbac.authorization.k8s.io EOF
管理 Namespace を見つける
管理名前空間は、タグキー用に作成されたシステム生成の名前空間です。
特定のタグキーの管理 Namespace を見つけます。
kubectl get tagkey TAG_KEY_NAME --namespace platform \ -o jsonpath='{.status.managementNamespace}'TAG_KEY_NAMEは、タグキーの名前に置き換えます。
ポリシーの Namespace を見つける
ポリシー Namespace は、タグ値用に作成されたシステム生成の Namespace です。
特定のタグ値のポリシー Namespace を見つけます。
kubectl get tagvalue TAG_VALUE_NAME --namespace MANAGEMENT_NAMESPACE \ -o jsonpath='{.status.policyNamespace}'次のように置き換えます。
TAG_VALUE_NAME: タグ値の名前。MANAGEMENT_NAMESPACE: タグ値に対応するタグキーの管理用名前空間の名前。詳細については、管理 Namespace を見つけるをご覧ください。
タグ付きのプロジェクトを一覧表示する
特定の Key-Value ペアにバインドされているすべてのプロジェクトを一覧表示するには、次の操作を行います。
タグの Key-Value ペアに一致するすべてのプロジェクトを一覧表示します。
kubectl get project --namespace platform --label tag.resourcemanager.gdc.goog/TAG_KEY_NAME=TAG_VALUE_NAME次のように置き換えます。
TAG_KEY_NAME: タグキーの名前。TAG_VALUE_NAME: タグ値の名前。
出力は次のようになります。
NAME AGE project-1 17d project-2 10d project-3 4d