このページでは、ユーザー グループに基づくコンテキストアウェア アクセス ポリシーを使用して証明書ベースのアクセス(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.gcpAccessAdminORG_IDは、組織 ID です。組織 ID を把握していない場合は、次のコマンドを使用して確認できます。gcloud organizations listEMAILは、ロールを付与するユーザーまたはグループのメールアドレスです。
CBA アクセスレベルをユーザー グループにバインドする
このバインド オプションでは、CBA アクセスレベルは、指定したユーザー グループのすべてのクライアント アプリケーションに適用されます。
コンソールで [Chrome Enterprise Premium] ページに移動します。
組織を選択して、[選択] をクリックします。
[アクセスの管理] をクリックして、アクセスを許可するユーザー グループを選択します。
[追加] をクリックして、以下を構成します。
- [メンバー グループ]: アクセス権を付与するグループを指定します。選択できるのは、アクセスレベルにまだバインドされていないグループのみです。
- [アクセスレベルの選択]: グループに適用する CBA アクセスレベルを選択します。
- [保存] をクリックします。
CBA アクセスレベルをユーザー グループと特定のアプリケーションにバインドする
クライアント証明書をサポートするアプリケーションなど、一部のユースケースでは、CBA アクセスレベルをユーザー グループにバインドすると範囲が広くなりすぎる場合があります。このオプションを使用すると、クライアント証明書をサポートするアプリケーションに CBA アクセスレベルを適用できます。
次の例では、CBA アクセスレベルを Google Cloud コンソール、gcloud CLI、ユーザーの OAuth アプリケーションにバインドします。
gcloud CLI にログインします。
gcloud auth application-default loginpolicy_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メソッドを呼び出すことで取得できます。