アクセス権の付与と取り消し

すべてのサブジェクト(ユーザーまたはグループ)は、2 段階のプロセスを経てグローバル API サーバーへのアクセス権を取得します。IAMRoleBinding を使用して、グローバル API サーバーの権限を持つサブジェクトを事前定義された IAMRole に付与します。すべてのロールとロール バインディングはグローバルです。

ペルソナ(IO、PA、AO)はロールではなく、特定の権限にマッピングされ、個々のユーザーに割り当てられたユーザーロールのコレクションです。

ロール バインディングを設定する

チームメンバーに組織レベルまたはプロジェクト レベルでリソースへのアクセス権を付与するロール バインディングを設定できます。

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

承認済みメンバーにロールを割り当てる手順は次のとおりです。

コンソール

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

メンバーが [承認済みメンバー] リストに表示されます。

gdcloud

  1. gdcloud CLI がインストールされていることを確認します。

  2. gdcloud auth login コマンドを使用してログインし、ID プロバイダで認証します。詳細については、gdcloud CLI 認証をご覧ください。

  3. ロール バインディングを設定します。

    • 組織のロール バインディングを設定します。

      gdcloud organizations add-iam-policy-binding ORGANIZATION \
        --member=USER_ACCOUNT \
        --role= ROLE
      

      次の変数を置き換えます。

      • ORGANIZATION: ロール バインディングを設定する組織の名前。
      • USER_ACCOUNT: ロールを付与するユーザー アカウント。このフラグは、ID プロバイダの接頭辞(user:idpprefix-user@example.com)が付いたユーザーのメールアドレス、またはサービス アカウント プロジェクト(serviceAccount:projectName:serviceAccountName)が付いたサービス アカウント名を受け入れます。
      • ROLE: ユーザーに割り当てる事前定義ロールまたはカスタムロールの名前。
    • プロジェクトのロール バインディングを設定します。

      gdcloud projects add-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role= ROLE
      

      次の変数を置き換えます。

      • PROJECT: ロール バインディングを設定するプロジェクトの名前。
      • USER_ACCOUNT: ロールを付与するユーザー アカウント。このフラグは、ID プロバイダの接頭辞(user:idpprefix-user@example.com)が付いたユーザーのメールアドレス、またはサービス アカウント プロジェクト(serviceAccount:projectName:serviceAccountName)が付いたサービス アカウント名を受け入れます。
      • ROLE: ユーザーに割り当てる事前定義ロールまたはカスタムロールの名前。

API

  1. 使用するユーザー認証情報をエクスポートします。

    export GLOBAL_API_SERVER_KUBECONFIG=GLOBAL_API_SERVER_KUBECONFIG
    
  2. ロールを割り当てるユーザー アカウントを、ID プロバイダの接頭辞(idpprefix-paul@example.com など)を含めてエクスポートします。

    export USERNAME=IDP_PREFIX-USER_EMAIL
    
  3. ユーザーが必要とするロールの名前(project-creator など)をエクスポートします。ロールの定義を参照して、対応するロールを確認してください。

    export ROLE_NAME=ROLE_NAME
    
  4. バインディングを作成する Namespace をエクスポートします。

    export BINDING_NAMESPACE=BINDING_NAMESPACE
    

    組織スコープのロールの場合は BINDING_NAMESPACEplatform に置き換え、プロジェクト スコープのロールの場合はターゲット プロジェクトの Namespace の名前に置き換えます。

    ロールとそのスコープの一覧については、ロールの定義をご覧ください。

  5. IAMRoleBinding カスタム リソースを作成して適用します。

    cat <<EOF | kubectl --kubeconfig ${GLOBAL_API_SERVER_KUBECONFIG} apply -f -
    apiVersion: iam.global.gdc.goog/v1
    kind: IAMRoleBinding
    metadata:
      name: ${USERNAME}-${ROLE_NAME}-binding
      namespace: ${BINDING_NAMESPACE}
    spec:
      roleRef:
        apiGroup: iam.global.gdc.goog
        kind: IAMRole
        name: ${ROLE_NAME}
      subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: User
        name: ${USERNAME}
    EOF
    

ロール バインディングを削除する

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

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

コンソール

  1. GDC コンソールにログインします。
  2. ナビゲーション メニューで、[Identity and Access > Access] をクリックします。
  3. [承認済みメンバー] リストで、メンバーを選択します。
  4. [メンバーを削除] をクリックします。
  5. 確認画面が表示されたら、[メンバーを削除] をクリックして確定します。

gdcloud

  1. gdcloud CLI がインストールされていることを確認します。

  2. gdcloud auth login コマンドを使用してログインし、ID プロバイダで認証します。詳細については、gdcloud CLI 認証をご覧ください。

  3. ロール バインディングを削除します。

    • 組織のロール バインディングを削除します。

      gdcloud organizations remove-iam-policy-binding ORGANIZATION \
        --member=USER_ACCOUNT \
        --role= ROLE
      

      次の変数を置き換えます。

      • ORGANIZATION: ロール バインディングを削除する組織の名前。
      • USER_ACCOUNT: ロールを削除するユーザー アカウント。このフラグは、ID プロバイダの接頭辞(user:idpprefix-user@example.com)が付いたユーザーのメールアドレス、またはサービス アカウント プロジェクト(serviceAccount:projectName:serviceAccountName)が付いたサービス アカウント名を受け入れます。
      • ROLE: ユーザー アカウントから削除する事前定義ロールまたはカスタムロールの名前。
    • プロジェクトのロール バインディングを削除します。

      gdcloud projects remove-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role= ROLE
      

      次の変数を置き換えます。

      • PROJECT: ロール バインディングを削除するプロジェクトの名前。
      • USER_ACCOUNT: ロールを削除するユーザー アカウント。このフラグは、ID プロバイダの接頭辞(user:idpprefix-user@example.com)が付いたユーザーのメールアドレス、またはサービス アカウント プロジェクト(serviceAccount:projectName:serviceAccountName)が付いたサービス アカウント名を受け入れます。
      • ROLE: ユーザー アカウントから削除する事前定義ロールまたはカスタムロールの名前。

API

IAMRoleBinding を削除して、PA アカウントに付与された権限を取り消します。

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG \
delete iamrolebinding USERNAME-ROLE_NAME-binding -n BINDING_NAMESPACE

次のように置き換えます。

  • GLOBAL_API_SERVER_KUBECONFIG: グローバル API サーバーにアクセスするための kubeconfig ファイルのパス。
  • USERNAME: ロールを削除するユーザー アカウント。ID プロバイダの接頭辞(idpprefix-paul@example.com など)を含む。
  • ROLE_NAME: 削除するロールの名前(project-creator など)。
  • BINDING_NAMESPACE: 組織スコープのロールの場合は platform に、プロジェクト スコープのロールの場合はターゲット プロジェクトの名前空間の名前に置き換えます。

ユーザー アクセスを取り消す

組織またはチームからメンバーが離脱した場合は、Google Distributed Cloud(GDC)エアギャップへのアクセスを取り消すことができます。ユーザーのアクセスを取り消すと、Distributed Cloud からログアウトし、ロールと権限が削除されます。ユーザーのアクティビティとセッションを開始時刻と終了時刻で一覧表示することもできます。

GDC ユニバース全体でユーザーのアクセス権を取り消すには、個々のゾーンごとにアクセス権を取り消す必要があります。各ゾーンで次の操作を行います。

  1. アクセス権を取り消すゾーンにログインしていることを確認します。たとえば、gdcloud CLI のゾーン URL 構成を設定してから、ログインします。

    gdcloud config set organization_console_url ZONE_URL
    gdcloud auth login
    

    ZONE_URL は、ユーザー アクセスを取り消すゾーンの GDC コンソール URL に置き換えます。これは https://console.ORG_NAME.ZONE_NAME.ORG_SUFFIX のようになります。

    ゾーン コンテキストの切り替えの詳細については、ゾーン間のリソースを管理するをご覧ください。

  2. ユーザーの取り消しに必要な権限を取得します。組織の IAM 管理者に、組織セッション管理者(org-session-admin)ロールを付与するよう依頼します。

  3. ユーザーのゾーンへのアクセス権を取り消します。

    gdcloud admin auth revoke --accounts USER_EMAIL
    

    USER_EMAIL は、アクセス権を取り消すユーザーのメールアドレスに置き換えます。

    コマンドを実行すると、次のような出力が表示されます。この例では、ユーザー ariel@example.com からのアクセスを取り消します。

    Success: NUMBER of sessions revoked for user ariel@example.com
    

    この例では、変数 NUMBER はユーザーがアクティブにしたセッションの数を指します。

  4. gdcloud admin auth revoke コマンドを再度実行して、ユーザーのアクセス権が取り消されたことを確認します。成功すると、次のように表示されます。

    No sessions found for account: ariel@example.com
    
  5. ユニバース内の各ゾーンに対して、前の手順を繰り返します。