このページでは、ユーザー グループに基づくコンテキストアウェア アクセス ポリシーを使用して証明書ベースのアクセス(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 アクセス バインディング管理者ロールが必要です。
コンソール
コンソールで、IAM に移動します。
On the [Permissions] tab, click [Grant access], then configure the following:
- [**新しいプリンシパル**]: ロールを付与するグループを指定します。
- [**ロールを選択**] オプションで、 [**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 アクセスレベルは、指定したユーザー グループのすべてのクライアント アプリケーションに適用されます。
コンソールで、[コンソールと API のアクセス ポリシー] ページに移動します。
組織を選択し、[選択] をクリックします。
[アクセスの管理] をクリックして、アクセスを許可するユーザー グループを選択します。
[追加] をクリックし、次のように構成します。
- [**メンバー グループ**]: アクセス権を付与するグループを指定します。選択できるのは、アクセスレベルにまだバインドされていないグループのみです。
- [アクセスレベルの選択]: グループに適用する CBA アクセスレベルを選択します。
- [保存] をクリックします。
CBA アクセスレベルをユーザー グループと特定のアプリケーションにバインドする
クライアント証明書をサポートするアプリケーションなど、一部のユースケースでは、CBA アクセスレベルをユーザー グループにバインドすると範囲が広くなりすぎる場合があります。このオプションを使用すると、クライアント証明書をサポートするアプリケーションに CBA アクセスレベルを適用できます。
次の例では、CBA アクセスレベルを Cloud de Confiance コンソール、 gcloud CLI、ユーザーの OAuth アプリケーションにバインドします。
gcloud CLI にログインします。
gcloud auth application-default loginpolicy_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の形式)。
CBA アクセスレベル バインディングを作成します。
gcloud access-context-manager cloud-bindings create \ --group-key='GROUP_KEY' \ --organization='ORG_ID' \ --binding-file=policy_file.yaml次のように置き換えます。
GROUP_KEY: 一意のグループ IDORG_ID: 組織 ID
gcloud
一意のグループ ID を GROUP_KEY として使用できます。一意のグループ ID を取得するには、次のコマンドを使用します。
gcloud identity groups describe EMAILEMAIL は、グループのメールアドレスに置き換えます。一意のグループ ID は、グループ名の
/の後に返される値です。 たとえば、groups/01gf8i8311xalqgの一意のグループ ID は01gf8i8311xalqgです。REST
一意のグループ ID を GROUP_KEY として使用できます。REST API を使用して 一意のグループ ID を取得するには、グループ リソースの
getメソッドを呼び出して取得します。一意のグループ ID は、グループ リソースのidフィールドに返されます。省略可: 既存のアクセスレベル バインディングを更新します。
gcloud access-context-manager cloud-bindings update \ --binding='BINDING_NAME' \ --binding-file=policy_file.yamlBINDING_NAME は、バインディングの作成時に自動生成されたバインディング名に置き換えます。
アプリケーションをバインディングから除外する
クライアント証明書をサポートしていないクライアント アプリケーションをブロックせずに CBA アクセスレベルを適用するもう 1 つの方法は、これらのアプリケーションをポリシーから除外することです。
次の手順では、リソースへのアクセスを決定するときに証明書を必要とする CBA アクセスレベルが作成済みであることを前提としています。
次のいずれかの方法で除外アクセスレベルを作成します。
- カスタム アクセスレベル: CEL 式の条件の値として
trueを指定します。 - 基本アクセスレベル: IP サブネットワーク
0.0.0.0/0と::/0(それぞれ IPv4 と IPv6 に対応)を指定して、IP 範囲ベースのアクセスレベルを作成します。
- カスタム アクセスレベル: CEL 式の条件の値として
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
除外バインディング ポリシーを作成します。
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