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

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

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

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

始める前に

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

ユーザー グループの作成

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

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

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

組織レベルの IAM 権限を追加するのに十分な権限で承認されていることを確認してください。少なくとも、組織管理者ロールと Cloud アクセス バインディング管理者ロールが必要です。

コンソール

  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 メソッドを呼び出すことで取得できます。