このドキュメントでは、管理者が Access Context Manager を使用して、デバイス属性(デバイスベースのアクセスレベル)に基づいてアクセスレベルを作成する方法について説明します。
アクセスレベルは、リクエストのコンテキスト情報に基づいてリソースへのアクセスを許可するために使用される属性のセットです。管理者は、Endpoint Verification によって収集されたデバイス属性を使用して、ベーシック アクセスレベルまたはカスタム アクセスレベルを作成できます。
始める前に
このページのタスクを完了するには、次のいずれかのロールが必要です。
- Access Context Manager 管理者(
roles/accesscontextmanager.policyAdmin
) - Access Context Manager 編集者(
roles/accesscontextmanager.policyEditor
)
- Access Context Manager 管理者(
アクセスレベルを作成する
コンソール
Google Cloud コンソールで、[Access Context Manager] ページに移動します。
プロンプトが表示されたら、組織を選択します。
[Access Context Manager] ページで、[
アクセスレベルを作成] をクリックします。[新しいアクセスレベル] パネルで、ベーシック アクセスレベルまたはカスタム アクセスレベルを作成します。手順については、該当するセクションを開いてください。
ベーシック アクセスレベルを作成する
[アクセスレベルのタイトル] ボックスに、アクセスレベルのタイトルを入力します。
タイトルは最大 50 文字です。先頭は英字にしてください。その後には、数字、英字、アンダースコア、スペースのみ使用できます。
[条件の作成] セクションで、[基本モード] を選択します。
.- [条件] セクションで、デバイスの属性を選択します。
- [ デバイス ポリシー] をクリックします。
必要な属性を選択します。
たとえば、デバイスで管理者の承認を適用する場合は、[管理者の承認が必要] を選択します。
- [保存] をクリックします。
新しく作成したアクセスレベルが [Access Context Manager] ページに表示されます。
カスタム アクセスレベルを作成する
[アクセスレベルのタイトル] ボックスに、アクセスレベルのタイトルを入力します。
タイトルは最大 50 文字です。先頭は英字にしてください。その後には、数字、英字、アンダースコア、スペースのみ使用できます。
- [条件の作成] セクションで、[詳細モード] を選択します。
[条件] セクションで、カスタム アクセスレベルの式を入力します。条件は、1 つのブール値に解決される必要があります。
CEL 式で使用可能なデバイス属性を確認するには、Endpoint Verification によって収集されるデバイス属性をご覧ください。
次の CEL 式では、暗号化されたデバイスからのアクセスのみが許可されます。
device.encryption_status == DeviceEncryptionStatus.ENCRYPTED
Common Expression Language(CEL)のサポートとカスタム アクセスレベルの例と詳細については、カスタム アクセスレベルの仕様をご覧ください。
- [保存] をクリックします。
新しく作成したアクセスレベルが [Access Context Manager] ページに表示されます。
gcloud CLI
アクセスレベルを作成するには、 gcloud access-context-manager levels create メソッドを使用します。
.yaml
ファイルを作成します。ベーシック アクセスレベルでは、アクセスレベルのデバイス ポリシー属性を指定します。
例: 暗号化されたデバイス ストレージを使用するユーザーのみにアクセスを制限するには、
.yaml
ファイルに次のように入力します。- devicePolicy: allowedEncryptionStatuses - ENCRYPTED
カスタム アクセスレベルの場合は、単一の Key-Value ペア形式の CEL 式を指定します。
expression: "CEL_EXPRESSION"
例: 暗号化されたデバイス ストレージを使用するユーザーと、承認済みデバイス ステータスのユーザーのみにアクセスを制限するには、
.yaml
ファイルに次のように入力します。expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && device.is_admin_approved_device"
デバイス ポリシーのアクセスレベル属性とその YAML 形式の一覧については、デバイス ポリシーの属性をご覧ください。考えられるすべての属性の包括的な YAML ファイルについては、こちらのアクセスレベル YAML ファイルの例をご覧ください。
カスタムレベル仕様に使用できるデバイス属性を確認するには、Endpoint Verification によって収集されたデバイス属性をご覧ください。
アクセスレベルを作成します。
ベーシック アクセスレベルの場合は、次のコマンドを実行します。
gcloud access-context-manager levels create ACCESS_LEVEL_NAME \ --title=TITLE \ --basic-level-spec=FILE_NAME.yaml\ --policy=POLICY_NAME
カスタムアクセスレベルの場合は、次のコマンドを実行します。
gcloud access-context-manager levels create ACCESS_LEVEL_NAME \ --title=TITLE \ --custom-level-spec=FILE_NAME.yaml\ --policy=POLICY_NAME
ここで
ACCESS_LEVEL_NAME はアクセスレベルの一意の名前です。 形式は
accessPolicies/POLICY_ID/accessLevels/LEVEL_ID
にする必要があります。LEVEL_ID はアクセスレベルの名前です。 名前は最大 50 文字です。先頭は英字にしてください。その後には、数字、英字、アンダースコアのみ使用できます。
TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。
FILE_NAME は
.yaml
ファイルの名前です。ベーシック アクセスレベルには、デバイス ポリシー属性が含まれています。カスタム アクセスレベルの場合、単一の Key-Value ペア「expression: "CEL_EXPRESSION"」としてフォーマットされた CEL 式が含まれます。POLICY_NAME は組織のアクセス ポリシーの名前です。
次のような出力が表示されます。
Create request issued for: NAME Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done. Created level NAME.
API
accessPolicies.accessLevels.create メソッドを使用してアクセスレベルを作成します。
ベーシック アクセスレベルを作成する
リクエストのデータを使用する前に、次のように置き換えます。
- POLICY_ID: 組織のアクセス ポリシーの ID。
- LEVEL_ID: アクセスレベルの名前。名前は最大 50 文字です。先頭は英字にしてください。その後には、数字、英字、アンダースコアのみ使用できます。
- ACCESS_LEVEL_NAME: アクセスレベルの一意の名前。形式は
accessPolicies/POLICY_ID/accessLevels/LEVEL_ID
にする必要があります。 - TITLE: 人が読める形式のタイトル。タイトルはポリシーに固有のものでなければなりません。
- DESCRIPTION: アクセスレベルとその使用の説明。
- CONDITION: 付与するアクセスレベルの要件のリスト。
HTTP メソッドと URL:
POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels
リクエストの本文(JSON):
For basic access levels: { "name": ACCESS_LEVEL_NAME, "title": TITLE, "description": DESCRIPTION, "basic": { "conditions": [ { CONDITION } ], } }, }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "operations/accessPolicies/84961948973/accessLevels/deviceEncrypted/create/1666896068847514", "metadata": { "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata" }, "done": true, "response": { "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel", "name": "accessPolicies/84961948973/accessLevels/deviceEncrypted", "title": "accessPolicies/84961948973/accessLevels/deviceEncrypted", "basic": { "conditions": [ { "devicePolicy": { "allowedEncryptionStatuses": [ "ENCRYPTED" ] } } ] } } }
カスタム アクセスレベルを作成する
リクエストのデータを使用する前に、次のように置き換えます。
- POLICY_ID: 組織のアクセス ポリシーの ID。
- LEVEL_ID: アクセスレベルの名前。名前は最大 50 文字です。先頭は英字にしてください。その後には、数字、英字、アンダースコアのみ使用できます。
- ACCESS_LEVEL_NAME: アクセスレベルの一意の名前。形式は
accessPolicies/POLICY_ID/accessLevels/LEVEL_ID
にする必要があります。 - TITLE: 人が読める形式のタイトル。タイトルはポリシーに固有のものでなければなりません。
- DESCRIPTION: アクセスレベルとその使用の説明。
- CEL_EXPRESSION: ブール値に評価される CEL 式。
HTTP メソッドと URL:
POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels
リクエストの本文(JSON):
{ "name": ACCESS_LEVEL_NAME, "title": TITLE, "description": DESCRIPTION, "custom": { "conditions": [ { "expr": { CEL_EXPRESSION } } ] } }, }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "operations/accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName/create/1666936427127701", "metadata": { "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata" }, "done": true, "response": { "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel", "name": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName", "title": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelTitle", "custom": { "expr": { "expression": "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED" } } } }
さまざまな条件とアクセスレベルの依存関係を使用してアクセスレベルを作成する方法の詳細については、ベーシック アクセスレベルを作成するをご覧ください。