ユーザー グループに対する証明書ベースのアクセスを適用する

このページでは、ユーザー グループに基づくコンテキストアウェア アクセス ポリシーを使用して証明書ベースのアクセス(CBA)を適用する方法について説明します。

アクセスを制限するユーザー グループに CBA アクセスレベルをバインドすることにより、すべての Cloud de Confiance by S3NS サービスへのアクセスを制限できます。この制限は、API を呼び出すすべてのクライアント アプリケーションに適用されます。 Cloud de Confiance

必要に応じて、制限を特定のクライアント アプリケーションに適用したり、特定のアプリケーションを除外したりできます。アプリケーションには、サードパーティ製 アプリケーションと、Google が構築したファーストパーティ製アプリケーション( Cloud Console コンソールの Cloud de Confiance 、Google Cloud SDK Google Cloud CLI の )の両方が含まれます。

始める前に

リソースへのアクセスを決定するときに証明書を必要とする CBA アクセスレベルを作成します。

ユーザー グループの作成

ユーザー グループを作成し、CBA アクセスレベルに基づいてアクセス権を付与する メンバーを含めます。

Cloud アクセス バインディング管理者ロールを割り当てる

ユーザー グループに Cloud アクセス バインディング管理者 ロールを割り当てます。

組織レベルで IAM 権限を追加するには、十分な権限が必要です。少なくとも、 組織管理者Cloud アクセス バインディング管理者ロールが必要です。

コンソール

  1. コンソールで、IAM に移動します。

    IAM に移動

  2. On the [Permissions] tab, click [Grant access], then configure the following:

    1. [**新しいプリンシパル**]: ロールを付与するグループを指定します。
    2. [**ロールを選択**] オプションで、 [**Access Context Manager** > **Cloud アクセス バインディング管理者**] を選択します。
    3. [保存] をクリックします。

gcloud

  1. ログイン:

    gcloud auth login
    
  2. 次のコマンドを実行して GcpAccessAdmin ロールを割り当てます。

    gcloud organizations add-iam-policy-binding ORG_ID \
      --member=user:EMAIL \
      --role=roles/accesscontextmanager.gcpAccessAdmin
    
    • ORG_ID は、組織 ID です。組織 ID を把握していない場合は、次のコマンドを使用して確認できます。

       gcloud organizations list
      
    • EMAIL は、ロールを付与するユーザーまたはグループのメールアドレスです。

CBA アクセスレベルをユーザー グループにバインドする

このバインド オプションでは、CBA アクセスレベルは、指定したユーザー グループのすべてのクライアント アプリケーションに適用されます。

  1. コンソールで、[コンソールと API のアクセス ポリシー] ページに移動します。

    [コンソールと API のアクセス ポリシー] に移動

  2. 組織を選択し、[選択] をクリックします。

  3. [アクセスの管理] をクリックして、アクセスを許可するユーザー グループを選択します。

  4. [追加] をクリックし、次のように構成します。

    1. [**メンバー グループ**]: アクセス権を付与するグループを指定します。選択できるのは、アクセスレベルにまだバインドされていないグループのみです。
    2. [アクセスレベルの選択]: グループに適用する CBA アクセスレベルを選択します。
    3. [保存] をクリックします。

CBA アクセスレベルをユーザー グループと特定のアプリケーションにバインドする

クライアント証明書をサポートするアプリケーションなど、一部のユースケースでは、CBA アクセスレベルをユーザー グループにバインドすると範囲が広くなりすぎる場合があります。このオプションを使用すると、クライアント証明書をサポートするアプリケーションに CBA アクセスレベルを適用できます。

次の例では、CBA アクセスレベルを Cloud de Confiance コンソール、 gcloud CLI、ユーザーの OAuth アプリケーションにバインドします。

  1. gcloud CLI にログインします。

    gcloud auth application-default login
    
  2. policy_file.yaml ファイルを作成します。

    アプリケーションは、OAuth クライアント ID を使用して指定できます。Google アプリケーションを指定するには、アプリケーション名(Cloud Consoleコンソールの Cloud de Confiance など)を使用します。サポートされているのは、 Cloud de Confiance コンソールと Google Cloud SDK の Google アプリケーションのみです。

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedClientApplication:
            name: Cloud Console
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            name: Google Cloud SDK
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            clientId: CLIENT_ID_1
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    

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

    • CLIENT_ID_1: OAuth クライアント ID。
    • CBA_ACCESS_LEVEL: CBA アクセスレベルの名前( accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME の形式)。
  3. CBA アクセスレベル バインディングを作成します。

    gcloud access-context-manager cloud-bindings create \
       --group-key='GROUP_KEY' \
       --organization='ORG_ID' \
       --binding-file=policy_file.yaml
    

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

    • GROUP_KEY: 一意のグループ ID
    • ORG_ID: 組織 ID

    gcloud

    一意のグループ ID を GROUP_KEY として使用できます。一意のグループ ID を取得するには、次のコマンドを使用します。

    gcloud identity groups describe EMAIL
    

    EMAIL は、グループのメールアドレスに置き換えます。一意のグループ ID は、グループ名の / の後に返される値です。 たとえば、groups/01gf8i8311xalqg の一意のグループ ID は 01gf8i8311xalqg です。

    REST

    一意のグループ ID を GROUP_KEY として使用できます。REST API を使用して 一意のグループ ID を取得するには、グループ リソースの get メソッドを呼び出して取得します。一意のグループ ID は、グループ リソースの id フィールドに返されます。

  4. 省略可: 既存のアクセスレベル バインディングを更新します。

    gcloud access-context-manager cloud-bindings update \
       --binding='BINDING_NAME' \
       --binding-file=policy_file.yaml
    

    BINDING_NAME は、バインディングの作成時に自動生成されたバインディング名に置き換えます。

アプリケーションをバインディングから除外する

クライアント証明書をサポートしていないクライアント アプリケーションをブロックせずに CBA アクセスレベルを適用するもう 1 つの方法は、これらのアプリケーションをポリシーから除外することです。

次の手順では、リソースへのアクセスを決定するときに証明書を必要とする CBA アクセスレベルが作成済みであることを前提としています。

  1. 次のいずれかの方法で除外アクセスレベルを作成します。

  2. exemption_file.yaml ファイルを作成します。

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedClientApplication:
            clientId: CLIENT_ID_2
      activeSettings:
        accessLevels:
        - EXEMPT_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            name: APPLICATION_NAME_2
      activeSettings:
        accessLevels:
        - EXEMPT_ACCESS_LEVEL
    

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

    • CLIENT_ID_2: OAuth クライアント ID
    • APPLICATION_NAME_2: アプリケーション名
    • EXEMPT_ACCESS_LEVEL: 形式の除外アクセスレベル名 accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
  3. 除外バインディング ポリシーを作成します。

    gcloud access-context-manager cloud-bindings create \
       --group-key='GROUP_KEY' \
       --organization='ORG_ID' \
       --binding-file=exemption_file.yaml
    

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

    • GROUP_KEY: 一意のグループ ID
    • ORG_ID: 組織 ID