プロジェクトの ID とアクセスを管理する

このページでは、Google Distributed Cloud(GDC)エアギャップ アプライアンスの Application Operator(AO)の Identity and Access Management(IAM)プラクティスについて説明します。

ID プロバイダ(IdP)は、プリンシパルの ID 情報を作成、維持、管理するシステム エンティティです。IdP は、フェデレーションまたは分散ネットワーク内のアプリケーションに認証サービスも提供します。

ログイン

このセクションでは、ウェブ ユーザー インターフェース(UI)またはコマンドライン インターフェース(CLI)を使用してワークロードにアクセスする方法について説明します。

ウェブ UI にログインする

このページでは、Google Distributed Cloud(GDC)エアギャップ アプライアンス内のワークロードとリソースにアクセスして管理する方法について説明します。認証方法、Management API サーバーと Kubernetes クラスタの両方の kubeconfig ファイルの生成方法、セッションの非アクティブ状態の管理方法について説明します。これらのプロセスを理解することで、プロジェクトとワークロードへの安全で信頼性の高いアクセスが保証されます。

GDC コンソールまたは gdcloud CLI を使用してワークロードにアクセスします。

ログイン

GDC コンソールまたはクラスタにログインするには、次の手順を行います。

コンソール

新しいブラウザタブで次の URL を開いて、GDC エアギャップ アプライアンスのユーザー インターフェース(UI)にアクセスします。

https://GDC_URL

GDC_URL は、インフラストラクチャ オペレーター(IO)が提供する GDC へのアクセスに使用するドメイン名に置き換えます。URL を初めて開くと、インフラストラクチャ オペレーター(IO)がページを構成している場合、GDC は ID プロバイダのログインページにリダイレクトします。

たとえば、`org-1` という名前の組織のコンソールにログインすると、次のページが表示されます。org-1 プロジェクトのようこそ画面が表示されているコンソール。

CLI

アクセス権のあるクラスタには、すべてログインできます。すべてのクラスタの CLI ログイン プロセスは同じです。クラスタ名と関連する kubeconfig ファイルのみを指定し、各クラスタに個別にログインする必要があります。

ログインする前に、次のことを確認してください。

  • gdcloud CLI バイナリをダウンロードして、システムにインストールします。詳細については、gdcloud CLI をダウンロードするをご覧ください。
  • gdcloud CLI のデフォルト構成を設定して初期化します。ログイン構成エンドポイントの取得に使用される正しい組織 URL を設定してください。詳細については、gdcloud CLI のインストールをご覧ください。
  • 認証プラグイン gdcloud-k8s-auth-plugin をインストールします。詳細については、gdcloud CLI 認証をご覧ください。

クラスタにログインする手順は次のとおりです。

  1. gdcloud CLI インスタンスを認証してログインします。認証方法は次の 2 つです。

    • 標準のブラウザ ログイン: ブラウザからログインする場合は、この認証フローを使用します。

      gdcloud auth login
      
    • セカンダリ デバイスのログイン: メイン デバイスでブラウザを使用できない場合は、この認証フローを使用します。このフローでは、ブラウザ アクセス権のないメインのデバイスでログインを開始し、ブラウザ アクセス権のあるセカンダリ デバイスでログインを続行します。

      1. ブラウザのないメインのデバイスでログインを開始します。

        gdcloud auth login --no-browser
        

        プライマリ デバイスのコマンドは、手順 c でセカンダリ デバイスで実行する必要がある別の gdcloud コマンドを出力します。

      2. クラスタにログインするの手順 1 を繰り返して、セカンダリ デバイスに証明書をダウンロードします。

      3. 手順 a でプライマリ デバイスに表示されたコマンドを入力して、セカンダリ デバイスでのログインを完了します。

    この操作により、構成された ID プロバイダ(IdP)にログインするためのブラウザが開きます。初期の gdcloud CLI 設定時に設定したユーザーとパスワードを入力してログインします。

  2. ユーザー ID kubeconfig ファイルを変数としてエクスポートします。

    export KUBECONFIG=/tmp/admin-kubeconfig-with-user-identity.yaml
    
  3. ユーザー ID を含む kubeconfig ファイルを生成します。

    gdcloud clusters get-credentials CLUSTER_NAME
    

    ユーザー ID を含む kubeconfig ファイルが生成されます。次の YAML ファイルに例を示します。

    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: <REDACTED>
        server: https://10.200.0.32:443
      name: cluster-name
    contexts:
    - context:
        cluster: cluster-name
        user: cluster-name-anthos-default-user
      name: cluster-name-cluster-name-anthos-default-user
    current-context: cluster-name-cluster-name-anthos-default-user
    kind: Config
    preferences: {}
    users:
    - name: cluster-name-anthos-default-user
      user:
        exec:
            apiVersion: client.authentication.k8s.io/v1
            args:
            - --audience=root-admin
            command: gdcloud-k8s-auth-plugin
            env: null
            installHint: Run 'gdcloud components install gdcloud-k8s-auth-plugin' to use plugin
            interactiveMode: Never
            provideClusterInfo: false
    
  4. クラスタにアクセスできることを確認するには、生成された kubeconfig ファイルを使用してユーザー ID でログインします。

    kubectl --kubeconfig /tmp/admin-kubeconfig-with-user-identity.yaml version
    

ログアウト

GDC コンソールからログアウトする手順は次のとおりです。

コンソール

メニューバーの [ログアウト] をクリックします。

CLI

CLI からログアウトします。

gdcloud auth revoke

kubeconfig ファイルを手動で生成する

KRM API を直接呼び出して kubectl CLI でリソースを管理している場合は、管理するリソースのタイプに応じて、リソースをホストするクラスタの kubeconfig ファイルを生成する必要があります。必要な kubeconfig ファイルを特定するには、リソースのドキュメントをご覧ください。

リソースタイプに基づいて、該当する設定を完了します。

Management API サーバー リソース

次の手順に沿って、Management API サーバーの kubeconfig ファイルを生成します。

  1. MANAGEMENT_API_SERVER 環境変数を設定します。

    export MANAGEMENT_API_SERVER="root-admin"
    
  2. Management API サーバーの kubeconfig ファイルを生成し、認証情報を検証します。

    export KUBECONFIG=${HOME}/${MANAGEMENT_API_SERVER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${MANAGEMENT_API_SERVER:?}
    [[ $(kubectl config current-context) == *${MANAGEMENT_API_SERVER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    コマンド rm ${KUBECONFIG:?} は、ホーム ディレクトリ内の既存の kubeconfig ファイルを削除します。新しい kubeconfig ファイルを生成すると、既存のファイルが上書きされます。既存のファイルを上書きまたは削除したくない場合は、別の安全な場所にバックアップしてください。

Kubernetes クラスタ リソース

ベアメタル Kubernetes クラスタの kubeconfig ファイルを生成する手順は次のとおりです。

  1. KUBERNETES_CLUSTER 環境変数を設定します。

    export KUBERNETES_CLUSTER="root-infra"
    
  2. Kubernetes クラスタの kubeconfig ファイルを生成し、認証情報を検証します。

    export KUBECONFIG=${HOME}/${KUBERNETES_CLUSTER:?}-kubeconfig.yaml
    rm ${KUBECONFIG:?}
    gdcloud clusters get-credentials ${KUBERNETES_CLUSTER:?}
    [[ $(kubectl config current-context) == *${KUBERNETES_CLUSTER:?}* ]] && echo "Success. Your kubeconfig is at $KUBECONFIG" || echo "Failure"
    

    コマンド rm ${KUBECONFIG:?} は、ホーム ディレクトリ内の既存の kubeconfig ファイルを削除します。新しい kubeconfig ファイルを生成すると、既存のファイルが上書きされます。既存のファイルを上書きまたは削除したくない場合は、別の安全な場所にバックアップしてください。

セッションの非アクティブ ログアウト

セッションで 15 分以上操作がないと、GDC コンソールと gdcloud CLI からログアウトされます。GDC では、セッションの非アクティブ状態とは、開いているセッション中にカーソルやキーボードの操作など、ユーザーによるアクティブな操作がない期間を指します。アクティブ セッションは、ユーザー アクティビティがある場合、最大 12 時間継続します。

コンソール

セッションが非アクティブになると、GDC コンソールからログアウトされます。GDC コンソールが非アクティブ状態のためにログアウトする 2 分前に、ログアウトを警告するダイアログが表示されます。

操作がないためユーザーをログアウトするまでの残り時間を示す 99 秒のタイマーが表示されたダイアログを示すコンソール UI。

操作がないためログアウトすると、次の画面が表示されます。

セッションのログアウトに関するテキストを含むバナーが表示されたログイン画面を示すコンソール UI: 「セッションが長時間アクティブでなかったため、システムからログアウトされました。もう一度ログインするか、管理者にお問い合わせください。」

GDC コンソールに再度ログインするには、ID プロバイダを選択してログイン認証情報を追加します。モニタリング ダッシュボードなどのサービスを使用しているときに、GDC コンソールが非アクティブ状態のためにログアウトした場合は、再度ログインしてアクセスしてください。

CLI

セッションが非アクティブになると、gdcloud CLI からログアウトします。gdcloud CLI からログアウトした後、コマンドを実行しようとすると、承認エラーが表示されます。

Error: error when creating kube client: unable to create k8sclient: Unauthorized

gdcloud CLI に再度ログインするには、ログインの CLI の手順に沿って操作します。

kubectl

gdcloud CLI は、セッションが非アクティブになると kubeconfig ファイルを期限切れにします。非アクティブ状態の後に kubectl コマンドを実行しようとすると、認証エラーが発生します。

error: You must be logged in to the server (Unauthorized)

再度ログインして kubeconfig ファイルを使用するには、ログインの CLI の手順に沿って操作します。セッションがタイムアウトするたびに、kubeconfig ファイルを再生成する必要があります。

IAM 許可ポリシーを設定する

事前定義ロールの説明

アプリケーション オペレータ(AO)は、プラットフォーム管理者(PA)組織内の開発チームのメンバーです。AO はプロジェクト レベルのリソースとやり取りします。チームメンバーには、次の事前定義ロールを割り当てることができます。

  • プロジェクト IAM 管理者: プロジェクトの IAM 許可ポリシーを管理します。
  • AI OCR デベロッパー: 光学式文字認識サービスにアクセスして、画像内のテキストを検出します。
  • AI Speech Developer: Speech-to-Text サービスにアクセスして、音声を認識し、音声を文字に変換します。
  • AI Translation デベロッパー: Vertex AI Translation サービスにアクセスしてテキストを翻訳します。
  • Artifact Management Admin: プロジェクト Namespace 内のすべての Harbor プロジェクトのリソースに対する管理者権限があります。
  • Artifact Management Editor: プロジェクト Namespace 内のすべての Harbor プロジェクトのリソースに対する読み取り / 書き込みアクセス権を持ちます。
  • Certificate Authority Service 管理者: プロジェクト内の認証局と証明書リクエストを管理する権限があります。
  • Certificate Service 管理者: プロジェクト内の証明書と証明書発行者を管理する権限があります。
  • ダッシュボード編集者: Dashboard カスタム リソースに対する読み取り / 書き込みアクセス権があります。
  • ダッシュボード閲覧者: Dashboard カスタム リソースに対する読み取り専用アクセス権があります。
  • Harbor インスタンス管理者: プロジェクト内の Harbor インスタンスを管理するための完全なアクセス権を持ちます。
  • Harbor インスタンス閲覧者: プロジェクト内の Harbor インスタンスを表示する読み取り専用アクセス権があります。
  • Harbor プロジェクト作成者: Harbor インスタンス プロジェクトを管理する権限があります。
  • K8s ネットワーク ポリシー管理者: Kubernetes クラスタのネットワーク ポリシーを管理します。
  • LoggingRule 作成者: プロジェクト Namespace に LoggingRule カスタム リソースを作成します。
  • LoggingRule エディタ: プロジェクト Namespace の LoggingRule カスタム リソースを編集します。
  • LoggingRule 閲覧者: プロジェクト Namespace の LoggingRule カスタム リソースを表示します。
  • LoggingTarget 作成者: プロジェクト Namespace に LoggingTarget カスタム リソースを作成します。
  • LoggingTarget エディタ: プロジェクト Namespace の LoggingTarget カスタム リソースを編集します。
  • LoggingTarget 閲覧者: プロジェクト Namespace の LoggingTarget カスタム リソースを表示します。
  • ロードバランサ管理者: プロジェクト Namespace 内のすべてのロードバランサ リソースに対する読み取り / 書き込み権限を持ちます。
  • MonitoringRule 編集者: MonitoringRule リソースに対する読み取り / 書き込みアクセス権があります。
  • MonitoringRule 閲覧者: MonitoringRule カスタム リソースに対する読み取り専用アクセス権があります。
  • MonitoringTarget 編集者: MonitoringTarget カスタム リソースに対する読み取り / 書き込みアクセス権があります。
  • MonitoringTarget 閲覧者: MonitoringTarget カスタム リソースに対する読み取り専用アクセス権があります。
  • NAT 閲覧者: Kubernetes クラスタのデプロイに対する読み取り専用アクセス権があります。
  • Namespace 管理者: プロジェクト Namespace 内のすべてのリソースを管理します。
  • ObservabilityPipeline 編集者: ObservabilityPipeine カスタム リソースに対する読み取り / 書き込みアクセス権があります。
  • ObservabilityPipeline 閲覧者: ObservabilityPipeline カスタム リソースに対する読み取り専用アクセス権があります。
  • プロジェクト バケット管理者: バケット内のストレージ バケットとオブジェクトを管理します。
  • プロジェクト バケット オブジェクト管理者: プロジェクト内のバケットに対する読み取り専用アクセス権と、それらのバケット内のオブジェクトに対する読み取り / 書き込みアクセス権があります。
  • プロジェクト バケット オブジェクト閲覧者: プロジェクト内のバケットとそれらのバケット内のオブジェクトに対する読み取り専用アクセス権があります。
  • Project Cortex Alertmanager Editor: プロジェクト Namespace の Cortex Alertmanager インスタンスを編集する権限を付与します。
  • Project Cortex Alertmanager Viewer: プロジェクト Namespace の Cortex Alertmanager インスタンスにアクセスする権限を付与します。
  • Project Cortex Prometheus Viewer: プロジェクト Namespace の Cortex Prometheus インスタンスにアクセスする権限を付与します。
  • プロジェクト Grafana 閲覧者: フリート管理クラスタのプロジェクト Namespace の Grafana インスタンスにアクセスします。
  • プロジェクト NetworkPolicy 管理者: プロジェクト Namespace のプロジェクト ネットワーク ポリシーを管理します。
  • プロジェクト閲覧者: プロジェクト Namespace 内のすべてのリソースに対する読み取り専用アクセス権を持ちます。
  • プロジェクト VirtualMachine 管理者: プロジェクト名前空間の VM を管理します。
  • プロジェクト VirtualMachine Image 管理者: プロジェクト Namespace の VM イメージを管理します。
  • Secret 管理者: プロジェクト内の Kubernetes Secret を管理します。
  • Secret 閲覧者: プロジェクト内の Kubernetes Secret を表示します。
  • サービス構成管理者: プロジェクト Namespace 内のサービス構成に対する読み取り / 書き込みアクセス権があります。
  • サービス構成閲覧者: プロジェクト Namespace 内のサービス構成に対する読み取りアクセス権があります。
  • ボリューム レプリケーション管理者: ボリューム レプリケーション リソースを管理します。
  • Workbench Notebooks 管理者: プロジェクト Namespace 内のすべてのノートブック リソースに対する読み取り / 書き込みアクセス権を取得します。
  • Workbench Notebooks 閲覧者: プロジェクト Namespace 内のすべてのノートブック リソースへの読み取り専用アクセス権を取得し、Vertex AI Workbench ユーザー インターフェースを表示します。
  • ワークロード閲覧者: プロジェクト内のワークロードに対する読み取りアクセス権があります。

一般的なロール

次の事前定義された共通ロールは、すべての認証済みユーザーに適用されます。

  • AI Platform 閲覧者: 事前トレーニング済みサービスを表示する権限を付与します。
  • DNS サフィックス ビューア: ドメイン ネーム サービス(DNS)サフィックス構成マップにアクセスします。
  • フローログ管理者: すべてのフローログ リソースに対する読み取り / 書き込みアクセス権を持ちます。
  • フローログ閲覧者: すべてのフローログ リソースに対する読み取り専用アクセス権があります。
  • プロジェクト検出閲覧者: 認証されたすべてのユーザーにプロジェクト ビューへの読み取りアクセス権を付与します。
  • 公開イメージ閲覧者: Namespace vm-images の公開 VM イメージに対するすべての認証済みユーザーの読み取りアクセス権があります。
  • システム Artifact Registry anthos-creds シークレット モニター: anthos-creds Namespace のシークレットに対する読み取り専用アクセス権を持ちます。
  • システム Artifact Registry gpc-system シークレット モニター: gpc-system Namespace のシークレットに対する読み取り専用アクセス権を持ちます。
  • システム Artifact Registry harbor-system Secret モニター: harbor-system Namespace の Secret への読み取り専用アクセス権があります。
  • 仮想マシンタイプの閲覧者: クラスタ スコープの仮想マシンタイプに対する読み取りアクセス権があります。
  • VM タイプ閲覧者: 管理クラスタの事前定義された仮想マシンタイプに対する読み取りアクセス権があります。

ロール定義

このセクションの表では、さまざまな事前定義ロールとその権限について説明します。テーブルには次の列が含まれています。

  • 名前: ユーザー インターフェース(UI)に表示されるロールの名前。
  • Kubernetes リソース名: 対応する Kubernetes カスタム リソースの名前。
  • レベル: このロールが組織またはプロジェクトによってスコープ設定されているかどうかを指定します。
  • タイプ: このロールのタイプ。たとえば、RoleProjectRoleClusterRoleProjectClusterRole などの値が考えられます。
  • バインディング タイプ: このロールに適用する必要があるバインディングのタイプ。
  • Management API サーバーまたは Kubernetes クラスタの権限: このロールが Management API サーバーまたは Kubernetes クラスタに対して持つ権限。たとえば、read、write、read and write、not applicable(N/A)などの値が考えられます。
  • エスカレーション先: このロールが他のロールにエスカレーションするかどうかを指定します。

AO ペルソナ、事前定義された ID とアクセスロール

AO ペルソナ
名前 Kubernetes リソース名 初期管理者 レベル
プロジェクト IAM 管理者 project-iam-admin 正しい プロジェクト Role
AI OCR デベロッパー ai-ocr-developer 誤り プロジェクト Role
AI Platform 閲覧者 ai-platform-viewer 誤り プロジェクト Role
AI Speech デベロッパー ai-speech-developer 誤り プロジェクト Role
AI Translation デベロッパー ai-translation-developer 誤り プロジェクト Role
Artifact Management 管理者 artifact-management-admin 誤り プロジェクト Role
アーティファクト管理編集者 artifact-management-editor 誤り プロジェクト Role
Certificate Authority Service 管理者 certificate-authority-service-admin 誤り プロジェクト Role
証明書サービス管理者 certificate-service-admin 誤り プロジェクト Role
ダッシュボード エディタ dashboard-editor 誤り プロジェクト Role
ダッシュボード閲覧者 dashboard-viewer 誤り プロジェクト Role
Harbor インスタンス管理者 harbor-instance-admin 誤り プロジェクト Role
Harbor インスタンス閲覧者 harbor-instance-viewer 誤り プロジェクト Role
Harbor プロジェクト作成者 harbor-project-creator 誤り プロジェクト Role
K8s ネットワーク ポリシー管理者 k8s-networkpolicy-admin 誤り プロジェクト ProjectRole
ロードバランサ管理者 load-balancer-admin 誤り プロジェクト ProjectRole
LoggingRule 作成者 loggingrule-creator 誤り プロジェクト Role
LoggingRule エディタ loggingrule-editor 誤り プロジェクト Role
LoggingRule 閲覧者 loggingrule-viewer 誤り プロジェクト Role
LoggingTarget Creator loggingtarget-creator 誤り プロジェクト Role
LoggingTarget エディタ loggingtarget-editor 誤り プロジェクト Role
LoggingTarget 閲覧者 loggingtarget-viewer 誤り プロジェクト Role
MonitoringRule エディタ monitoringrule-editor 誤り プロジェクト Role
MonitoringRule 閲覧者 monitoringrule-viewer 誤り プロジェクト Role
MonitoringTarget 編集者 monitoringtarget-editor 誤り プロジェクト Role
MonitoringTarget 閲覧者 monitoringtarget-viewer 誤り プロジェクト Role
Namespace Admin namespace-admin 誤り プロジェクト ProjectRole
NAT 閲覧者 nat-viewer 誤り プロジェクト ProjectRole
ObservabilityPipeline 編集者 observabilitypipeline-editor 誤り プロジェクト Role
ObservabilityPipeline 閲覧者 observabilitypipeline-viewer 誤り プロジェクト Role
プロジェクト バケット管理者 project-bucket-admin 誤り プロジェクト Role
プロジェクト バケット オブジェクト管理者 project-bucket-object-admin 誤り プロジェクト Role
プロジェクト バケット オブジェクト閲覧者 project-bucket-object-viewer 誤り プロジェクト Role
Project Cortex Alertmanager 編集者 project-cortex-alertmanager-editor 誤り プロジェクト Role
Project Cortex Alertmanager 閲覧者 project-cortex-alertmanager-viewer 誤り プロジェクト Role
Project Cortex Prometheus Viewer project-cortex-prometheus-viewer 誤り プロジェクト Role
プロジェクト Grafana 閲覧者 project-grafana-viewer 誤り プロジェクト Role
プロジェクトの NetworkPolicy 管理者 project-networkpolicy-admin 誤り プロジェクト Role
プロジェクト閲覧者 project-viewer 誤り プロジェクト Role
プロジェクト VirtualMachine 管理者 project-vm-admin 誤り プロジェクト Role
プロジェクト VirtualMachine イメージ管理者 project-vm-image-admin 誤り プロジェクト Role
シークレット管理者 secret-admin 誤り プロジェクト Role
シークレット閲覧者 secret-viewer 誤り プロジェクト Role
サービス構成管理者 service-configuration-admin 誤り プロジェクト Role
サービス構成閲覧者 service-configuration-viewer 誤り プロジェクト Role
Workbench Notebooks 管理者 workbench-notebooks-admin 誤り プロジェクト Role
ボリューム レプリケーション管理者 app-volume-replication-admin 誤り クラスタ Role
Workbench Notebooks 閲覧者 workbench-notebooks-viewer 誤り プロジェクト Role
ワークロード閲覧者 workload-viewer 誤り プロジェクト Role

AO ペルソナ、事前定義された ID とアクセスロール

AO ペルソナ
名前 バインディング タイプ Management API サーバーの権限 Kubernetes クラスタの権限 エスカレーション先
プロジェクト IAM 管理者 RoleBinding
  • RoleBindingClusterRoleBindingRoleClusterRoleProjectRoleProjectClusterRoleProjectRoleBindingProjectClusterRoleBinding: 作成、読み取り、更新、削除、バインド
  • ProjectServiceAccount: 作成、読み取り、更新、削除
  • プロジェクトの名前空間を一覧表示する
なし その他のすべての AO ロール
AI OCR デベロッパー RoleBinding OCR リソース: 読み取りと書き込み なし なし
AI Speech デベロッパー RoleBinding 音声リソース: 読み取りと書き込み なし なし
AI Translation デベロッパー RoleBinding 翻訳リソース: 読み取りと書き込み なし なし
Artifact Management 管理者 RoleBinding HarborProjects: 管理者、作成、読み取り、書き込み、削除、表示 なし なし
アーティファクト管理編集者 RoleBinding HarborProjects: 読み取り、書き込み、表示 なし なし
Certificate Authority Service 管理者 RoleBinding 認証局と証明書リクエスト: 取得、一覧表示、監視、更新、作成、削除、パッチ適用 なし なし
証明書サービス管理者 RoleBinding 証明書と証明書発行者: 取得、一覧表示、監視、更新、作成、削除、パッチ適用 なし なし
ダッシュボード エディタ RoleBinding Dashboard カスタム リソース: 取得、読み取り、作成、更新、削除、パッチ適用 なし なし
ダッシュボード閲覧者 RoleBinding Dashboard: 取得と読み取り なし なし
Harbor インスタンス管理者 RoleBinding Harbor インスタンス: 作成、読み取り、更新、削除、パッチ適用 なし なし
Harbor インスタンス閲覧者 RoleBinding Harbor インスタンス: 読み取り なし なし
Harbor プロジェクト作成者 RoleBinding Harbor インスタンス プロジェクト: 作成、取得、監視 なし なし
K8s NetworkPolicy 管理者 ProjectRoleBinding なし NetworkPolicy リソース: 作成、読み取り、取得、更新、削除、パッチ適用 なし
ロードバランサ管理者 RoleBinding なし
  • Backend: 取得、監視、一覧表示、作成、パッチ適用、更新、削除
  • HealthCheck: 取得、監視、一覧表示、作成、パッチ適用、更新、削除
  • BackendService: 取得、監視、一覧表示、作成、パッチ適用、更新、削除
  • ForwardingRuleExternal: 取得、監視、一覧表示、作成、パッチ適用、更新、削除
  • ForwardingRuleInternal: 取得、監視、一覧表示、作成、パッチ適用、更新、削除
なし
LoggingRule 作成者 RoleBinding LoggingRule カスタム リソース: 作成、読み取り、更新、削除、パッチ適用 なし なし
LoggingRule エディタ RoleBinding LoggingRule カスタム リソース: 作成、読み取り、更新、削除、パッチ適用 なし なし
LoggingRule 閲覧者 RoleBinding LoggingRule カスタム リソース: 読み取り なし なし
LoggingTarget Creator RoleBinding LoggingTarget カスタム リソース: 作成、読み取り、更新、削除、パッチ適用 なし なし
LoggingTarget エディタ RoleBinding LoggingTarget カスタム リソース: 作成、読み取り、更新、削除、パッチ適用 なし なし
LoggingTarget 閲覧者 RoleBinding LoggingTarget カスタム リソース: 読み取り なし なし
MonitoringRule エディタ RoleBinding MonitoringRule カスタム リソース: 作成、読み取り、更新、削除、パッチ適用 なし なし
MonitoringRule 閲覧者 RoleBinding MonitoringRule カスタム リソース: 読み取り なし なし
MonitoringTarget 編集者 RoleBinding MonitoringTarget カスタム リソース: 作成、読み取り、更新、削除、パッチ適用 なし なし
MonitoringTarget 閲覧者 RoleBinding MonitoringTarget カスタム リソース: 読み取り なし なし
Namespace Admin ProjectRoleBinding なし すべてのリソース: プロジェクト Namespace の読み取り / 書き込みアクセス なし
NAT 閲覧者 ProjectRoleBinding なし Deployments: 取得と読み取り なし
ObservabilityPipeline 編集者 RoleBinding ObservabilityPipeline リソース: 取得、読み取り、作成、更新、削除、パッチ適用 なし なし
ObservabilityPipeline 閲覧者 RoleBinding ObservabilityPipeline リソース: 取得と読み取り なし なし
プロジェクト バケット管理者 RoleBinding バケット: プロジェクトの Namespace での読み取りと書き込み なし なし
プロジェクト バケット オブジェクト管理者 RoleBinding
  • バケット: 読み取り
  • オブジェクト: 読み取りと書き込み
なし なし
プロジェクト バケット オブジェクト閲覧者 RoleBinding バケットとオブジェクト: 読み取り なし なし
Project Cortex Alertmanager 編集者 RoleBinding Cortex システムと Cortex Alertmanager: 読み取りと書き込み なし なし
Project Cortex Alertmanager 閲覧者 RoleBinding Cortex システムと Cortex Alertmanager: 読み取り なし なし
Project Cortex Prometheus Viewer RoleBinding Cortex システムと Cortex Prometheus: 読み取り なし なし
プロジェクト Grafana 閲覧者 RoleBinding Grafana システムと Grafana: 読み取りと書き込み なし なし
プロジェクトの NetworkPolicy 管理者 RoleBinding プロジェクト ネットワーク ポリシー: プロジェクト Namespace での読み取りと書き込み なし なし
プロジェクト閲覧者 RoleBinding プロジェクト Namespace 内のすべてのリソース: 読み取り なし なし
プロジェクト VirtualMachine 管理者 RoleBinding
  • 仮想マシン、ディスク、アクセス リクエスト、外部アクセス、バックアップ リクエスト、バックアップ、復元リクエスト、バックアップ削除リクエスト、復元、パスワード リセット リクエスト: 読み取り、作成、更新、削除
  • 仮想マシンの再起動: Put
  • 仮想マシンイメージ、バックアップ プラン、バックアップ プラン テンプレート: 読み取り
なし なし
プロジェクト VirtualMachine イメージ管理者 RoleBinding
  • VM イメージ: 読み取り
  • VM イメージのインポート: 読み取りと書き込み
なし なし
シークレット管理者 RoleBinding Kubernetes Secret: 読み取り、作成、更新、削除、パッチ適用 なし なし
シークレット閲覧者 RoleBinding Kubernetes Secret: 読み取り なし なし
サービス構成管理者 RoleBinding ServiceConfigurations: 読み取りと書き込み なし なし
サービス構成閲覧者 RoleBinding ServiceConfigurations: 既読 なし なし
ボリューム レプリケーション管理者 ClusterRoleBinding Volume failovers, volume relationship replicas: 作成、取得、一覧表示、監視、削除 なし なし
Workbench Notebooks 管理者 RoleBinding なし
  • プロジェクト名前空間の Notebook カスタム リソース(CR): 作成、読み取り、更新、削除
  • ClusterInfo オブジェクト: 読み取り
なし
Workbench Notebooks 閲覧者 RoleBinding なし
  • プロジェクト名前空間の Notebook カスタム リソース(CR): 読み取り
なし
ワークロード閲覧者 ProjectRoleBinding なし
  • プロジェクト Namespace の Pod カスタム リソース: 読み取り
  • プロジェクト Namespace の Deployment カスタム リソース: 読み取り
なし

一般的な事前定義の ID とアクセスロール

一般的なロール
名前 Kubernetes リソース名 初期管理者 レベル
AI Platform 閲覧者 ai-platform-viewer 誤り プロジェクト Role
DNS サフィックス閲覧者 dnssuffix-viewer 誤り 組織 Role
フローログ管理者 flowlog-admin 誤り 組織 ClusterRole
フローログ ビューア flowlog-viewer 誤り プロジェクト ClusterRole
プロジェクト ディスカバリ閲覧者 projectdiscovery-viewer 誤り プロジェクト ClusterRole
公開画像ビューア public-image-viewer 誤り 組織 Role
システム Artifact Registry anthos-creds シークレット モニター sar-anthos-creds-secret-monitor 誤り 組織 Role
システム Artifact Registry gpc-system シークレット モニター sar-gpc-system-secret-monitor 誤り 組織 Role
システム Artifact Registry harbor-system シークレット モニター sar-harbor-system-secret-monitor 誤り 組織 Role
Virtual Machine Type ビューア virtualmachinetype-viewer 誤り 組織 OrganizationRole
VM タイプ閲覧者 vmtype-viewer 誤り 組織 Role

一般的な事前定義の ID とアクセスロール

一般的なロール
名前 バインディング タイプ 管理クラスタの権限 Kubernetes クラスタの権限 エスカレーション先
AI Platform 閲覧者 RoleBinding 事前トレーニング済みサービス: 読み取り なし なし
DNS サフィックス閲覧者 ClusterRoleBinding DNS サフィックス構成マップ: 読み取り なし なし
フローログ管理者 ClusterRoleBinding フローログリソース: 取得と読み取り フローログリソース: 取得と読み取り なし
フローログ ビューア ClusterRoleBinding フローログ リソース: 作成、取得、読み取り、パッチ適用、更新、削除 フローログ リソース: 作成、取得、読み取り、パッチ適用、更新、削除 なし
プロジェクト ディスカバリ閲覧者 ClusterRoleBinding プロジェクト: 読み取り なし なし
公開画像ビューア RoleBinding VM イメージ: 読み取り なし なし
システム Artifact Registry anthos-creds シークレット モニター RoleBinding anthos-creds シークレット: 取得と読み取り anthos-creds シークレット: 取得と読み取り なし
システム Artifact Registry gpc-system シークレット モニター RoleBinding gpc-system シークレット: 取得と読み取り gpc-system シークレット: 取得と読み取り なし
システム Artifact Registry harbor-system シークレット モニター RoleBinding harbor-system シークレット: 取得と読み取り harbor-system シークレット: 取得と読み取り なし
Virtual Machine Type ビューア OrganizationRoleBinding なし VM タイプ: 読み取り なし
VM タイプ閲覧者 ClusterRoleBinding VM タイプ: 読み取り なし なし

リソースへのアクセス権を付与する方法は 2 つあります。

CLI を使用してロール バインディングを設定する

管理クラスタでの AO アクセス

Infrastructure Operator(IO)と Platform Administrator(PA)とは異なり、GDC は Application Operator(AO)を ClusterRoleBinding ではなく RoleBinding を介して Project にバインドします。

AO に管理クラスタへのアクセス権を付与する手順は次のとおりです。

  1. AO アクセスに使用しているメールアドレスをエクスポートします。たとえば、ao-alice@example.com などのメールアドレス。

    export AO_EMAIL=AO_EMAIL
    
  2. ロール バインディングを作成して、iam-test Namespace で ${AO_EMAIL} プロジェクト IAM 管理者アクセス権を付与します。

    kubectl create --kubeconfig PA_KUBECONFIG \
    rolebinding $AO_EMAIL-project-iam-admin \
    --role=project-iam-admin --user=$AO_EMAIL \
    --namespace=iam-test
    

    project-iam-admin ロールは、GDC の事前定義ロールです。iam-test Kubernetes Namespace は、管理クラスタの iam-test プロジェクトに対応しています。

  3. AO アカウントに iam-test Namespace でロール バインディングを作成する権限があることを確認します。

    kubectl --kubeconfig AO_KUBECONFIG auth can-i create rolebinding -n iam-test
    

    次の出力が表示されます。

    yes
    
  4. ロール バインディングを作成して、bar Namespace で ${AO_EMAIL} プロジェクト閲覧者のアクセス権を付与します。

    kubectl create --kubeconfig PA_KUBECONFIG \
    rolebinding $AO_EMAIL-project-viewer \
    --role=project-viewer --user=$AO_EMAIL \
    --namespace=bar
    

    project-viewer ロールは、GDC のプリセット ロールです。bar Kubernetes Namespace は、組織管理クラスタの bar プロジェクトに対応しています。

  5. AO アカウントに bar Namespace でロール バインディングを作成する権限がないことを確認します。

    kubectl --kubeconfig AO_KUBECONFIG auth can-i create rolebinding -n bar
    

    次の出力が表示されます。

    no
    
  6. 省略可: ロール バインディングを削除して、AO アカウントに付与された権限を取り消します。

    kubectl --kubeconfig PA_KUBECONFIG delete rolebinding $AO_EMAIL-project-iam-admin -n iam-test
    

ユーザー クラスタでの AO アクセス

AO は ProjectRole リソースと ProjectRoleBinding リソースを使用して、ユーザー クラスタへの Namespace アクセス権を取得します。ただし、PA は、プリセットの OrganizationRole リソースと ProjectRoleBinding リソースを使用して、ユーザー クラスタで AO に組織全体の権限を付与できます。

次の手順に沿って、ユーザー クラスタへのアクセス権を AO に付与します。

ユーザー クラスタへのアクセス権を付与するには、プロジェクト IAM 管理者のロールが必要です。

  1. iam-test Namespace 内のすべてのユーザー クラスタで ${AO_EMAIL} Namespace 管理者アクセス権を付与する ProjectRoleBinding リソースを作成します。

    kubectl --kubeconfig AO_KUBECONFIG apply -f - <<EOF
    apiVersion: resourcemanager.gdc.goog/v1
    kind: ProjectRoleBinding
    metadata:
      name: ${AO_EMAIL%@*}-namespace-admin
      namespace: iam-test
    spec:
      roleRef:
        apiGroup: resourcemanager.gdc.goog
        kind: ProjectRole
        name: namespace-admin
      subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: User
        name: ${AO_EMAIL}
    EOF
    
  2. CLI と kubectl でログインするの手順に沿って、ユーザー クラスタのユーザー認証情報を取得し、AO_USER_CLUSTER_KUBECONFIG 変数にエクスポートします。

    export AO_USER_CLUSTER_KUBECONFIG=GENERATED_KUBECONFIG
    
  3. AO アカウントに iam-test Namespace で Deployment を作成する権限があることを確認します。

    kubectl --kubeconfig ${AO_USER_CLUSTER_KUBECONFIG} auth can-i create deployment -n iam-test
    

    次の出力が表示されます。

    yes
    
  4. 省略可: プロジェクトのロール バインディングを削除して、テスト AO アカウントに付与された権限を取り消します。

    kubectl --kubeconfig ${AO_USER_CLUSTER_KUBECONFIG} delete projectrolebinding ${AO_EMAIL%@*}-namespace-admin -n iam-test
    

UI を使用してプロジェクト全体のロール バインディングを設定する

アプリケーション オペレーターは、プロジェクト リソースにアクセスできるように、他のアプリケーション オペレーターをプロジェクトに追加します。

ロール バインディングの設定に必要な権限を取得するには、プロジェクト IAM 管理者にプロジェクト IAM 管理者ロールの付与を依頼してください。

ロール バインディングを設定する手順は次のとおりです。

  1. GDC エアギャップ アプライアンス コンソールにログインします。
  2. プロジェクトを選択します。
  3. ナビゲーション メニューで、[アクセス管理] をクリックします。
  4. [メンバーを追加] をクリックします。
  5. [ID プロバイダ] リストで、ID プロバイダを選択します。
  6. 個々のユーザーを追加するか、グループを追加するかを選択します。
  7. [ユーザー名またはグループ エイリアス] フィールドに、ユーザー名、メールアドレス、エイリアスのいずれかを入力します。
  8. [ロール] リストで、ユーザーまたはグループに割り当てるロール([プロジェクト閲覧者] など)を選択します。
  9. [追加] をクリックします。

UI を使用してロール バインディングを削除する

アクセスが不要になったら、メンバーとそれに関連するロール、権限、アクセス権を削除します。

メンバーを削除する手順は次のとおりです。

  1. GDC エアギャップ アプライアンス コンソールにログインします。
  2. プロジェクトを選択します。
  3. ナビゲーション メニューで、[アクセス管理] をクリックします。
  4. [承認済みメンバー] リストで、メンバーを選択します。
  5. [メンバーを削除] をクリックします。
  6. 確認画面が表示されたら、[メンバーを削除] をクリックして確定します。