このページでは、ベーシック アクセスレベルの作成方法ついて説明します。カスタム アクセスレベルを作成して Google Cloud Console で詳細モードを使用するには、カスタム アクセスレベルの作成をご覧ください。
このページでは、アクセスレベルの具体的な実装方法について説明します。次の例をご覧ください。
始める前に
- アクセスレベルについて学習します。
ベーシック アクセスレベルを作成する
コンソール
ベーシック アクセスレベルを作成するには:
Google Cloud コンソールで [Access Context Manager] ページを開きます。
プロンプトが表示されたら、組織を選択します。
[Access Context Manager] ページの上部にある [新規] をクリックします。
[新しいアクセスレベル] パネルで、次の操作を行います。
[アクセスレベルのタイトル] フィールドに、アクセスレベルのタイトルを入力します。 タイトルは最大 50 文字です。先頭は英字にしてください。その後には、数字、英字、アンダースコア、スペースのみ使用できます。
[条件] セクションで、追加する属性のタイプの追加ボタンをクリックし、その属性に適用する値を指定します。
追加できる属性の完全なリストについては、アクセスレベルの属性をお読みください。
たとえば、ネットワーク内のどこからリクエストが発信されているかをアクセスレベルで考慮する場合は、[IP サブネットワーク] 属性を選択します。
同じ条件に複数の属性を追加するには、この手順を繰り返します。 条件に複数の属性を設定した場合は、それらすべての属性を満たしているアクセス リクエストのみが対象になります。
アクセスレベル条件には、それぞれの属性タイプを 1 つずつ指定できます。[Device Policy] 属性などの一部の属性では、追加オプションも設定できます。
アクセスレベルでは、ユーザー ID に基づく条件がサポートされています。ただし、条件に ID を追加するには、gcloud CLI または API を使用してアクセスレベルを作成または更新する必要があります。
[条件が満たされている場合に返す] オプションを使用して、リクエストが指定された属性をすべて満たすことを条件とするかどうか(TRUE)、またはリクエストがこれらの属性以外を満たす必要があるかどうか(FALSE)を設定します。
たとえば、ネットワークの特定の IP アドレス範囲からのリクエストを拒否する場合は、IP サブネットワーク属性を使用して IP アドレス範囲を指定し、条件を FALSE に設定します。
必要に応じて、[ADD ANOTHER CONDITION] をクリックしてアクセスレベルに条件を追加してから、前の 2 つの手順を繰り返します。
たとえば、より広い IP アドレス範囲内の IP アドレスのサブセットへのアクセスを拒否する場合は、新しい条件を作成し、IP サブネットワーク属性にサブセット IP アドレス範囲を指定して、FALSE を返すように条件を設定します。
同じアクセスレベルに複数の条件を追加するには、この手順を繰り返します。
複数の条件を作成した場合は、[Combine condition with] を使用して、アクセスレベルで 1 つの条件のみ(OR)、またはすべての条件(AND)を満たすリクエストが必要かどうかを指定します。
[保存] をクリックします。
gcloud
始める前に
- まだ存在していない場合は、組織のアクセス ポリシーを作成します。
gcloud
コマンドライン ツールを使用してアクセスレベルを作成するには、gcloud access-context-manager levels create
コマンドを使用します。
gcloud access-context-manager levels create LEVEL_NAME OPTIONS \ --policy=POLICY
ここで
LEVEL_NAME はアクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。名前は、最大 50 文字です。
OPTIONS は必須オプションです。次の表に示す複数のオプションから構成されます。
オプション basic-level-spec
アクセスレベルの 1 つ以上の条件を指定する YAML ファイル。
title
アクセスレベルの短いタイトル。アクセスレベルのタイトルは Google Cloud コンソールに表示されます。
combine-function
(省略可)条件を組み合わせる方法を指定します。
有効な値:
AND
、OR
description
(省略可)アクセスレベルの詳細な説明。
POLICY は、組織のアクセス ポリシーの ID です。デフォルトのポリシーが設定されている場合、このパラメータは省略できます。
必要に応じて、gcloud の各フラグを含めることもできます。
basic-level-spec YAML ファイル
gcloud
コマンドライン ツールを使用してアクセスレベルを作成するときは、basic-level-spec
オプションに YAML ファイルを指定する必要があります。YAML ファイルは、アクセスレベルの 1 つ以上の条件を定義します。条件には少なくとも 1 つの属性を含める必要があります。条件に複数の属性が含まれる場合、AND 演算(すべてが true であること)または NAND 演算(true を含めないこと)として組み合わせてることができます。これは、条件に negate
属性が含まれているかどうかによって異なります。
YAML ファイルに含めることが可能な属性の完全なリストについては、アクセスレベルの属性をお読みください。
アクセスレベルと YAML の詳細については、アクセスレベルの YAML の例をご覧ください。
コマンドの例
gcloud access-context-manager levels create Device_Trust \
--basic-level-spec=corpdevspec.yaml \
--combine-function=AND \
--description='Access level that conforms to corporate spec.' \
--title='Device_Trust Extended' \
--policy=1521580097614100
API
始める前に
- まだ存在していない場合は、組織のアクセス ポリシーを作成します。
アクセスレベルを作成するには、accessLevels.create
を呼び出します。
POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
ここで
- POLICY は、組織のアクセス ポリシーの ID です。
リクエストの本文
リクエスト本文には、新しいアクセスレベルに必要な条件を指定する AccessLevel
リソースを含める必要があります。
それぞれの Condition
に、AND 演算(すべて true であること)または NAND 演算(true を含めないこと)として評価される属性が 1 つ以上含まれます。これは、negate
フィールドが true
に設定されているかどうかによって異なります。結果の評価により、条件が満たされているかどうかが判別されます。
レスポンスの本文
成功した場合は、呼び出しのレスポンス本文に Operation
リソースが含まれ、これにより POST
オペレーションの詳細がわかります。
実装の例
次の例では、組織がアクセスレベルを実装する際に採用できる、いくつかの実用的な手法について説明します。こうした例では、組織がすでにアクセス ポリシーを実施していることを想定しています。
企業ネットワークへのアクセスを制限する
この例では、指定された範囲の IP アドレス(企業ネットワーク内のアドレスなど)からのアクセスのみを許可するアクセスレベル条件の作成方法について説明します。
アクセスが許可される IP アドレスの範囲を制限することで、組織の内外にいる攻撃者がデータを入手することを困難にします。
この例では、sensitive-data という名前のプロジェクトの Cloud Logging サービスに、内部監査者のグループがアクセスできるようなアクセスレベルを作成すると仮定します。監査者用のすべてのデバイスには、203.0.113.0 から 203.0.113.127 の範囲にあるサブネット上の IP が割り当てられています。監査者が使用しているデバイス以外は、そのサブネットに割り当てられません。
プライベート IP アドレス範囲(192.168.0.0/16
や 172.16.0.0/12
など)を使用する場合は、追加情報と VPC Service Controls を使用した実装例について、内部 IP アドレスから保護されたリソースへのアクセスを許可するをご覧ください。
コンソール
Google Cloud コンソールで [Access Context Manager] ページを開きます。
プロンプトが表示されたら、組織を選択します。
[Access Context Manager] ページの上部にある [新規] をクリックします。
[新しいアクセスレベル] パネルの [条件] セクションで、[属性を追加]、[IP サブネットワーク] の順にクリックします。
[IP サブネットワーク] ボックスで、[パブリック IP] または [プライベート IP] を選択します。
[パブリック IP] を選択した場合は、CIDR ブロックとしてフォーマットされた 1 つ以上の IPv4 または IPv6 の範囲を入力します。
この例では、アクセス権を監査者だけに制限するために、[IP サブネットワーク] ボックスに「
203.0.113.0/25
」と入力します。[プライベート IP] を選択した場合は、[VPC ネットワークを選択] をクリックします。VPC ネットワークは、[インポート オプション] リストで使用可能な 3 つのオプションのいずれかを使用して指定できます。
オプション 1:
[組織内の VPC ネットワークを参照] を選択し、VPC ネットワークを選択します。
[選択した VPC ネットワークを追加] をクリックします。
[IP サブネットを選択] をクリックし、サブネットを選択します。
[IP サブネットを追加] をクリックします。
オプション 2:
[VPC ネットワーク アドレスを手動で入力] を選択し、1 つ以上の VPC ネットワークを入力します。
[VPC ネットワークを追加] をクリックします。
[IP サブネットを選択] をクリックし、サブネットを選択します。
[IP サブネットを追加] をクリックします。
オプション 3:
CSV ファイルのアップロード(既存のネットワークの上書き)を選択します。
CSV ファイルを使用して VPC ネットワークとサブネットをアクセスレベルに追加すると、Access Context Manager によって、以前に選択した VPC ネットワークとサブネットが上書きされます。
[参照] をクリックして、CSV ファイルをアップロードします。CSV ファイルで、VPC ネットワークとサブネットを次の形式で指定する必要があります。
VPC_NETWORK_NAME_1 | IP_RANGE_1 | IP_RANGE_2 | ... VPC_NETWORK_NAME_2 | . | . | ... . | . | . | ... . | . | . | ...
[ネットワークをインポート] をクリックします。
Access Context Manager は CSV ファイルを使用して、VPC ネットワーク名とサブネット情報をそれぞれ [VPC ネットワーク アドレス] ボックスと [IP サブネットワーク] ボックスに入力します。
VPC ネットワーク名とプライベート IP アドレス形式については、アクセスレベルで内部 IP アドレスを使用するをご覧ください。
[保存] をクリックします。
gcloud
CIDRブロックとしてフォーマットされた 1 つ以上の IPv4 または IPv6 の範囲が含まれるアクセスレベルの YAML ファイルを作成します。
この例では、アクセス権を監査者だけに制限するために、YAML ファイルに次のように入力します。
- ipSubnetworks: - 203.0.113.0/25
プライベート IP アドレスを使用する場合は、YAML ファイルに次の情報を入力する必要があります。
- vpcNetworkSources: - vpcSubnetwork: network: VPC_NETWORK_NAME vpcIpSubnetworks: - IP_RANGE
VPC_NETWORK_NAME と IP_RANGE は、アクセスレベルで内部 IP アドレスを使用するセクションで説明されている値に置き換えます。
ファイルを保存します。この例では、ファイルの名前は CONDITIONS.yamlCONDITIONS.yaml です。
アクセスレベルを作成します。
gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --policy=POLICY
ここで
NAME はアクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。
TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。
POLICY は、組織のアクセス ポリシーの ID です。デフォルトのポリシーが設定されている場合、このパラメータは省略できます。
次のような出力が表示されます。
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
CIDR ブロックとしてフォーマットされた 1 つ以上の IPv4 または IPv6 の範囲が含まれる
AccessLevel
リソース用のリクエスト本文を作成します。この例では、アクセス権を監査者だけに制限するために、リクエスト本文に次のように入力します。
{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "ipSubnetworks": [ "203.0.113.0/25" ] } ] } }
ここで
NAME はアクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。
TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。
プライベート IP アドレスを使用する場合は、リクエスト本文に次の情報を入力する必要があります。
{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "vpcNetworkSources": [ { "vpcSubnetwork": { "network": VPC_NETWORK_NAME, "vpcIpSubnetworks": [ IP_RANGE ] } } ] } ] } }
VPC_NETWORK_NAME と IP_RANGE は、アクセスレベルで内部 IP アドレスを使用するセクションで説明されている値に置き換えます。
accessLevels.create
を呼び出してアクセスレベルを作成します。POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
ここで
- POLICY は、組織のアクセス ポリシーの ID です。
デバイスの属性によってアクセスを制限する
この例では、特定のオペレーティング システム(OS)バージョンなど、指定された一連の要件を満たすデバイスにのみアクセスを許可するアクセスレベルの作成方法について説明します。
デバイスに関する情報は、Endpoint Verification 経由で Access Context Manager に提供されます。 アクセスを許可するかどうかを決定するときに、次の条件を確認できます。
- 画面ロックが有効であること
- ストレージ暗号化が有効であること
- デバイスで、指定された種類とバージョンのオペレーティング システムが稼働していること
この例では、組織で Chrome OS または Windows のいずれかがインストールされているコンピュータのみを使用しているとします。セキュリティのレイヤを追加するには、他のオペレーティング システムを使用している人物によるアクセスを防止するアクセスレベルを作成します。さらに、リスクを管理するために、特定のバージョンの OS だけがアクセスできるようにする必要があります。
コンソール
Google Cloud コンソールで [Access Context Manager] ページを開きます。
プロンプトが表示されたら、組織を選択します。
[Access Context Manager] ページの上部にある [新規] をクリックします。
[新しいアクセスレベル] パネルの [条件] セクションで、[属性を追加]、[Device Policy] の順にクリックします。
デバイス ポリシー属性を追加します。
[OS ポリシーを追加]、[Chrome OS ポリシー] の順にクリックします。
[Minimum version] ボックスに、許可する Chrome OS の最小バージョンを入力します。
[Windows OS ポリシー] に対して手順 1 と 2 を繰り返します。
[保存] をクリックします。
gcloud
OS の制約があるデバイス ポリシーが含まれるアクセスレベルの YAML ファイルを作成します。
この例では、Chrome OS と Windows の最小許容バージョンのデバイスのみを許可するために、YAML ファイルに次のように入力します。
- devicePolicy: osConstraints: - osType: DESKTOP_CHROME_OS minimumVersion: 11316.165.0 - osType: DESKTOP_WINDOWS minimumVersion: 10.0.1809
ファイルを保存します。この例では、ファイルの名前は CONDITIONS.yamlCONDITIONS.yaml です。
アクセスレベルを作成します。
gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --policy=POLICY
ここで
NAME はアクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。
TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。
POLICY は、組織のアクセス ポリシーの ID です。デフォルトのポリシーが設定されている場合、このパラメータは省略できます。
次のような出力が表示されます。
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
OS の制約があるデバイス ポリシーが含まれる
AccessLevel
リソース用のリクエスト本文を作成します。この例では、Chrome OS と Windows の最小許容バージョンのデバイスのみを許可するために、リクエスト本文に次のように入力します。
{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "devicePolicy": { "osConstraints": [ { "osType": "DESKTOP_CHROME_OS", "minimumVersion": "11316.165.0" }, { "osType": "DESKTOP_WINDOWS", "minimumVersion": "10.0.1809" } ] { } ] } }
ここで
NAME はアクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。
TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。
accessLevels.create
を呼び出してアクセスレベルを作成します。POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
ここで
- POLICY は、組織のアクセス ポリシーの ID です。
ユーザーまたはサービス アカウントによるアクセスを許可する
ID に基づくアクセス許可は、サービス アカウントと組み合わせて使用すると便利です。たとえば、Cloud Functions でデータにアクセスできるようになります。
この例では、既存のアクセスレベルを含め、ネストしたアクセスレベルの例を示しながら、特定のユーザーとサービス アカウントにアクセス権を付与する方法について説明します。この場合、指定したユーザーは、既存のアクセスレベルで指定された条件を満たしているかどうかにかかわらず、このアクセスレベルに含まれます。この新しいアクセスレベルは、既存のアクセスレベルよりも制限が緩い階層と見なすことができます。
コンソール
現在、Google Cloud コンソールでは、アクセスレベルへのプリンシパルの追加はサポートされていません。アクセスレベルにプリンシパルを追加するには、gcloud
gcloud コマンドライン ツールまたは API を使用する必要があります。
gcloud
アクセスを許可するプリンシパルを一覧表示する条件が含まれる YAML ファイルを作成します。
この例では、システム管理者(
sysadmin@example.com
)とサービス アカウント(service@project.iam.gserviceaccount.com
)を追加します。- members: - user:sysadmin@example.com - serviceAccount:service@project.iam.gserviceaccount.com
このアクセスレベルに含める既存のアクセスレベルを一覧表示する条件を追加します。
この例では、アクセスレベルの名前が
Device_Trust
とIP_Trust
であり、247332951433
がアクセス ポリシーの名前であると仮定しています。- members: - user:sysadmin@example.com - serviceAccount:service@project.iam.gserviceaccount.com - requiredAccessLevels: - accessPolicies/247332951433/accessLevels/Device_Trust - accessPolicies/247332951433/accessLevels/IP_Trust
ファイルを保存します。この例では、ファイルの名前は CONDITIONS.yamlCONDITIONS.yaml です。
create
コマンドを使用してアクセスレベルを作成します。gcloud access-context-manager levels create NAME \ --title TITLE \ --basic-level-spec CONDITIONS.yaml \ --combine-function=OR \ --policy=POLICY
ここで
NAME はアクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。
TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。
POLICY は、組織のアクセス ポリシーの ID です。デフォルトのポリシーが設定されている場合、このパラメータは省略できます。
combine-function
はOR
に設定されています。デフォルト値AND
では、アクセスレベルが付与される前にすべての条件が満たされる必要があります。他の条件が満たされていない場合でも、OR
値によってプリンシパルにアクセス権が付与されます。
次のような出力が表示されます。
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
アクセスを許可するプリンシパルを一覧表示する条件が含まれる、
AccessLevel
リソース作成用のリクエスト本文を作成します。この例では、システム管理者(
sysadmin@example.com
)とサービス アカウント(service@project.iam.gserviceaccount.com
)を追加します。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project.iam.gserviceaccount.com" ] } ] } }
ここで
NAME はアクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。
TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。
このアクセスレベルに含める既存のアクセスレベルを一覧表示する条件を追加します。
この例では、アクセスレベルの名前が
Device_Trust
とIP_Trust
であり、247332951433
がアクセス ポリシーの名前であると仮定しています。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project.iam.gserviceaccount.com" ] }, { "requiredAccessLevels": [ "accessPolicies/247332951433/accessLevels/Device_Trust", "accessPolicies/247332951433/accessLevels/IP_Trust" ] } ] } }
combiningFunction
をOR
に設定する。combiningFunction
のデフォルト値であるAND
では、アクセスレベルが付与される前に、すべての条件が満たされる必要があります。IP アドレスや、その他の必須アクセスレベルから継承された条件など、他の条件が満たされていない場合でも、OR
値によってプリンシパルにアクセス権が付与されます。{ "name": "NAME", "title": "TITLE", "basic": { "conditions": [ { "members": [ "user:sysadmin@example.com", "serviceAccount:service@project.iam.gserviceaccount.com" ] }, { "requiredAccessLevels": [ "accessPolicies/247332951433/accessLevels/Device_Trust", "accessPolicies/247332951433/accessLevels/IP_Trust" ] } ], "combiningFunction": "OR" } }
accessLevels.create
を呼び出してアクセスレベルを作成します。POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
ここで
- POLICY は、組織のアクセス ポリシーの ID です。