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

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

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

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

始める前に

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

ユーザー グループの作成

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

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

ユーザー グループに Cloud Access Binding Admin ロールを割り当てます。

組織レベルの IAM 権限を追加するのに十分な権限で承認されていることを確認してください。少なくとも、組織管理者ロールと Cloud Access Binding 管理者ロールが必要です。

コンソール

  1. コンソールで [IAM] ページに移動します。

    IAM に移動

  2. [権限] タブで [アクセス権を付与] をクリックし、次のように構成します。

    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. コンソールで [Chrome Enterprise Premium] ページに移動します。

    Chrome Enterprise Premium に移動

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

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

  4. [追加] をクリックして、以下を構成します。

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

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

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

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

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

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

    アプリケーションは、OAuth クライアント ID を使用して指定できます。Google アプリケーションを指定するには、アプリケーション名(Google Cloud コンソールの場合は Cloud Console など)を使用します。Google Cloud コンソールと 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.json

    GROUP_KEY はコンテキスト対応アクセス グループに、ORG_ID は組織 ID に置き換えます。

    GROUP_KEY を利用できない場合は、グループ リソースの get メソッドを呼び出すことで取得できます。

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

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

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

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

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

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

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

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

    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.json

    GROUP_KEY はコンテキスト対応アクセス グループに、ORG_ID は組織 ID に置き換えます。

    GROUP_KEY を利用できない場合は、グループ リソースで get メソッドを呼び出すことで取得できます。