このページでは、ユーザー グループに基づくコンテキストアウェア アクセス ポリシーを使用して証明書ベースのアクセス(CBA)を適用する方法について説明します。
アクセスを制限するユーザー グループに CBA アクセスレベルをバインドすることにより、すべての Google Cloud サービスへのアクセスを制限できます。この制限は、 Google CloudAPI を呼び出すすべてのクライアント アプリケーションに適用されます。
必要に応じて、制限を特定のクライアント アプリケーションに適用したり、特定のアプリケーションを除外したりできます。アプリケーションには、サードパーティ製アプリケーションと、Google が構築したファーストパーティ製アプリケーションの両方が含まれます。たとえば、 Google Cloud コンソールの Cloud Console
や、Google Cloud CLI
の Google Cloud SDK
などです。
始める前に
リソースへのアクセスを決定するときに証明書を必要とする CBA アクセスレベルを作成していることを確認します。
ユーザー グループの作成
CBA アクセスレベルに基づいてアクセス権を付与するメンバーを含むユーザー グループを作成します。
Cloud アクセス バインディング管理者ロールを割り当てる
ユーザー グループに Cloud アクセス バインディング管理者ロールを割り当てます。
組織レベルの IAM 権限を追加するのに十分な権限で承認されていることを確認してください。少なくとも、組織管理者ロールと Cloud アクセス バインディング管理者ロールが必要です。
コンソール
コンソールで [IAM] ページに移動します。
[権限] タブで [アクセス権を付与] をクリックし、次のように構成します。
- 新しいプリンシパル: ロールを付与するグループを指定します。
- [ロールを選択] オプションで、[Access Context Manager] > [Cloud アクセス バインディング管理者] を選択します。
- [保存] をクリックします。
gcloud
ログイン:
gcloud auth login
次のコマンドを実行して
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 アクセスレベルは、指定したユーザー グループのすべてのクライアント アプリケーションに適用されます。
コンソールで [Chrome Enterprise Premium] ページに移動します。
組織を選択して、[選択] をクリックします。
[アクセスの管理] をクリックして、アクセスを許可するユーザー グループを選択します。
[追加] をクリックして、以下を構成します。
- メンバー グループ: アクセス権を付与するグループを指定します。選択できるのは、アクセスレベルにまだバインドされていないグループのみです。
- アクセスレベルを選択する: グループに適用する CBA アクセスレベルを選択します。
- [保存] をクリックします。
CBA アクセスレベルをユーザー グループと特定のアプリケーションにバインドする
クライアント証明書をサポートするアプリケーションなど、一部のユースケースでは、CBA アクセスレベルをユーザー グループにバインドすると範囲が広すぎる場合があります。このオプションを使用すると、クライアント証明書をサポートするアプリケーションに CBA アクセスレベルを適用できます。
次の例では、CBA アクセスレベルを Google Cloud コンソール、gcloud CLI、ユーザーの OAuth アプリケーションにバインドします。
gcloud CLI にログインします。
gcloud auth application-default login
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
の形式)。
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
メソッドを呼び出すことで取得できます。(省略可)既存のアクセスレベル バインディングを更新します。
gcloud access-context-manager cloud-bindings update \ --binding='BINDING_NAME' \ --binding-file=.../policy_file.json
BINDING_NAME は、バインディングの作成時に自動生成されたバインディング名に置き換えます。
アプリケーションをバインディングから除外する
クライアント証明書をサポートしていないクライアント アプリケーションをブロックせずに CBA アクセスレベルを適用するもう 1 つの方法は、これらのアプリケーションをポリシーから除外することです。
次の手順では、リソースへのアクセスを決定するときに証明書を必要とする CBA アクセスレベルを作成済みであることを前提としています。
次のいずれかの方法で除外アクセスレベルを作成します。
- カスタム アクセスレベル: CEL 式の条件の値として
true
を指定します。 - 基本アクセスレベル: IP サブネットワーク
0.0.0.0/0
と::/0
(それぞれ IPv4 と IPv6 に対応)を指定して、IP 範囲ベースのアクセスレベルを作成します。
- カスタム アクセスレベル: CEL 式の条件の値として
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
形式の免除アクセスレベル名。
除外バインディング ポリシーを作成します。
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
メソッドを呼び出すことで取得できます。