デバイスベースのアクセスレベルを作成する

このドキュメントでは、管理者が Access Context Manager を使用してデバイス属性(デバイスベースのアクセスレベル)に基づいてアクセスレベルを作成する方法について説明します。

アクセスレベルは、リクエストに関するコンテキスト情報に基づいてリソースへのアクセスを許可するために使用する一連の属性です。管理者は、Endpoint Verification によって収集されたデバイス属性を使用して、ベーシック アクセスレベルまたはカスタム アクセスレベルを作成できます。

始める前に

アクセスレベルを作成する

コンソール

  1. Google Cloud コンソールで、[Access Context Manager] ページに移動します。

    Access Context Manager に移動

  2. プロンプトが表示されたら、組織を選択します。

  3. [Access Context Manager] ページで [アクセスレベルを作成] をクリックします。

  4. [新しいアクセスレベル] パネルで、ベーシック アクセスレベルまたはカスタム アクセスレベルを作成します。手順については、必須セクションを開いてください。

    ベーシック アクセスレベルを作成する

    1. [アクセスレベルのタイトル] ボックスに、アクセスレベルのタイトルを入力します。

      タイトルは最大 50 文字です。先頭は英字にしてください。その後には、数字、英字、アンダースコア、スペースのみ使用できます。

    2. [条件の作成] セクションで、[基本モード] を選択します。

      .
    3. [条件] セクションで、デバイスの属性を選択します。
      1. [ デバイス ポリシー] をクリックします。
      2. 必須属性を選択します。

        たとえば、デバイスに管理者承認を適用する場合は、[管理者の承認を必須にする] を選択します。

    4. [保存] をクリックします。

    新しく作成されたアクセスレベルは、[Access Context Manager] ページに表示されます。

    カスタム アクセスレベルを作成する

    1. [アクセスレベルのタイトル] ボックスに、アクセスレベルのタイトルを入力します。

      タイトルは最大 50 文字です。先頭は英字にしてください。その後には、数字、英字、アンダースコア、スペースのみ使用できます。

    2. [条件の作成] セクションで、[詳細モード] を選択します。
    3. [条件] セクションで、カスタム アクセスレベルの式を入力します。条件は、1 つのブール値に解決される必要があります。

      CEL 式で使用できるデバイス属性を確認するには、Endpoint Verification によって収集されたデバイス属性をご覧ください。

      次の CEL 式では、暗号化されたデバイスからのアクセスのみを許可します。

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

      Common Expression Language(CEL)のサポートとカスタム アクセスレベルの例と詳細については、カスタム アクセスレベルの仕様をご覧ください。

    4. [保存] をクリックします。

    新しく作成されたアクセスレベルは、[Access Context Manager] ページに表示されます。

gcloud CLI

アクセスレベルを作成するには、 gcloud access-context-manager levels create メソッドを使用します。

  1. .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 によって収集されたデバイス属性をご覧ください。

  2. アクセスレベルを作成します。

    • ベーシック アクセスレベルの場合は、次のコマンドを実行します。

      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 ファイルの名前です。ベーシック アクセスレベルには、デバイス ポリシー属性が含まれています。カスタム アクセスレベルの場合は、1 つの 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"
      }
    }
  }
}

さまざまな条件とアクセスレベルの依存関係を使用してアクセスレベルを作成する方法の詳細については、ベーシック アクセスレベルを作成するをご覧ください。

次のステップ