アクセスレベルを管理する

このページでは、既存のアクセスレベルを管理する方法について説明します。次のことが可能です。

始める前に

  • Google Cloud CLI を使用するためのデフォルトのアクセス ポリシーを設定する。

    または

    ポリシーの名前を入手する。ポリシー名は、gcloud CLI を使用して API 呼び出しを行うコマンドに必要です。デフォルトのアクセス ポリシーを設定する場合は、gcloud CLI のポリシーを指定する必要はありません。

  • アクセスレベルを管理できる、組織レベルの Identity and Access Management(IAM)の役割を持っていることを確認してください。管理者に、次のいずれかの役割の付与、または同じ権限を持つカスタム役割の割り当てを依頼します。

アクセスレベルを一覧表示する

コンソール

すべてのアクセスレベルを一覧表示するには、 Google Cloud コンソールの [Access Context Manager] ページを開き、プロンプトが表示されたら組織を選択します。このページには、各アクセスレベルの構成に関する詳細を含めて、組織のアクセスレベルがグリッドに表示されます。

[Access Context Manager] ページを開く

gcloud

すべてのアクセスレベルを一覧表示するには、list コマンドを使用します。

gcloud access-context-manager levels list \
  [--policy=POLICY_NAME]

次のように置き換えます。

出力は次のようになります。

NAME             TITLE                  LEVEL_TYPE
Device_Trust     Device_Trust Extended  Basic
Service_Group_A  Service_Group_A        Basic

API

ポリシーのすべてのアクセスレベルを一覧表示するには、accessLevels.list を呼び出します。

GET https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels

次のように置き換えます。

  • POLICY_NAME: 組織のアクセス ポリシーの名前。

リクエストの本文

リクエストの本文は空にする必要があります。

オプション パラメータ

必要に応じて、次のクエリ パラメータを 1 つ以上含めます。

パラメータ
pageSize

number

デフォルトでは、accessLevels.list によって返されるアクセスレベルのリストはページ分けされます。各ページは 100 のアクセスレベルに制限されています。

このパラメータを使用して、ページごとに返されるアクセスレベルの数を変更できます。

pageToken

string

呼び出しによって返されたアクセスレベルの数がページサイズを超えた場合、レスポンスの本文にページトークンが含まれます。

このパラメータを後続の呼び出しで使用して、結果の次のページを取得できます。

accessLevelFormat

enum(LevelFormat)

通常、アクセスレベルは、BasicLevel または CustomLevel として定義されているとおりに返されます。

このパラメータに値 CEL を指定して、Cloud Common Expression Language で BasicLevels を CustomLevels として返すことができます。

レスポンスの本文

成功した場合、呼び出しのレスポンス本文に、アクセスレベルを一覧表示する AccessLevels オブジェクトと nextPageToken 文字列が含まれています。nextPageToken は、返されるアクセスレベルの数がページサイズを超えた場合にのみ値を持ちます。それ以外の場合、nextPageToken は空の文字列として返されます。

アクセスレベルを一覧表示する(形式)

gcloud CLI を使用すると、アクセスレベルのリストを YAML または JSON 形式で取得できます。

アクセスレベルの整形されたリストを取得するには、list コマンドを使用します。

gcloud access-context-manager levels list \
  --format=FORMAT \
  [--policy=POLICY_NAME]

次のように置き換えます。

  • FORMAT: 次のいずれかの値。

    • list(YAML 形式)

    • json(JSON 形式)

  • POLICY_NAME: 組織のアクセス ポリシーの名前。この値は、デフォルトのアクセス ポリシーを設定していない場合にのみ必要です。

YAML 出力は次のようになります。

- basic: {'conditions': [{'ipSubnetworks': ['192.0.2.0/24']}]}
  description: Level for corp access.
  name: accessPolicies/123456789012/accessLevels/corp_level
  title: Corp Level
- basic: {'combiningFunction': 'OR', 'conditions': [{'ipSubnetworks': ['192.0.2.0/24']}]}
  description: Level for net access.
  name: accessPolicies/123456789012/accessLevels/net_level
  title: Net Level

JSON 出力は次のようになります。

[
  {
    "basic": {
      "conditions": [
        {
          "ipSubnetworks": [
            "192.0.2.0/24"
          ]
        }
      ]
    },
    "description": "Level for corp access.",
    "name": "accessPolicies/123456789012/accessLevels/corp_level",
    "title": "Corp Level"
  },
  {
    "basic": {
      "combiningFunction": "OR",
      "conditions": [
        {
          "ipSubnetworks": [
            "192.0.2.0/24"
          ]
        }
      ]
    },
    "description": "Level for net access.",
    "name": "accessPolicies/123456789012/accessLevels/net_level",
    "title": "Net Level"
  }
]

アクセスレベルを説明する

コンソール

Google Cloud コンソールを使用して、アクセスレベルを一覧表示する手順をご覧ください。アクセスレベルを一覧表示すると、表示されるグリッドに詳細が表示されます。

gcloud

アクセスレベルの一覧表示では、名前、タイトル、レベルの種類のみが表示されます。レベルの実際の動作に関する詳細情報を取得するには、describe コマンドを使用します。

gcloud access-context-manager levels describe LEVEL_NAME \
    [--policy=POLICY_NAME]

次のように置き換えます。

  • LEVEL_NAME: 説明を取得するアクセスレベルの名前。

  • POLICY_NAME: 組織のアクセス ポリシーの名前。この値は、デフォルトのアクセス ポリシーを設定していない場合にのみ必要です。

このコマンドでは、レベルに関する情報を YAML 形式で出力します。たとえば、レベルによって特定のオペレーティング システム バージョンへのアクセスが制限されている場合、出力は次のようになります。

basic:
  conditions:
  - devicePolicy:
      allowedEncryptionStatuses:
      - ENCRYPTED
      osConstraints:
      - minimumVersion: 10.13.6
        osType: DESKTOP_MAC
      - minimumVersion: 10.0.18219
        osType: DESKTOP_WINDOWS
      - minimumVersion: 68.0.3440
        osType: DESKTOP_CHROME_OS
      requireScreenlock: true
name: accessPolicies/123456789012/accessLevels/Device_Trust
title: Device_Trust Extended

API

アクセスレベルの一覧表示では、レベルの名前、タイトル、種類のみが表示されます。 アクセスレベルに関する詳細情報を取得するには、accessLevels.get を呼び出します。

GET https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME

次のように置き換えます。

  • POLICY_NAME: 組織のアクセス ポリシーの名前。

  • LEVEL_NAME: 説明を取得するアクセスレベルの名前。

リクエストの本文

リクエストの本文は空にする必要があります。

オプション パラメータ

必要に応じて、accessLevelFormat クエリ パラメータを含めます。通常、アクセスレベルは、BasicLevel または CustomLevel として定義されているとおりに返されます。

このパラメータに値 CEL を指定して、Cloud Common Expression Language で BasicLevels を CustomLevels として返すことができます。

レスポンスの本文

成功した場合、呼び出しのレスポンス本文に、アクセスレベルで行われる内容、最後にレベルが更新されたのはいつかなどについての詳細を含めて AccessLevel リソースが含まれています。

アクセスレベルを更新する

このセクションでは、個々のアクセスレベルを更新する方法について説明します。1 つのオペレーションで組織のすべてのアクセスレベルを更新するには、アクセスレベルの一括変更をご覧ください。

Console

アクセスレベルを更新するには、次の手順を行います。

  1. Google Cloud コンソールで [Access Context Manager] ページを開きます。

    [Access Context Manager] ページを開く

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

  3. グリッドで、更新するアクセスレベルの名前をクリックします。

  4. [アクセスレベルの編集] ウィンドウで、アクセスレベルを変更します。

    追加または変更できる属性の完全なリストについては、アクセスレベルの属性をお読みください。

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

    既存の条件の更新や削除だけでなく、新しい条件を追加したり、既存の条件に新しい属性を追加したりできます。

gcloud

アクセスレベルを更新するには、update コマンドを使用します。

ベーシック アクセスレベル:

gcloud access-context-manager levels update LEVEL_NAME \
    --basic-level-spec=FILE \
    [--policy=POLICY_NAME]

カスタム アクセスレベル:

gcloud access-context-manager levels update LEVEL_NAME \
    --custom-level-spec=FILE \
    [--policy=POLICY_NAME]

次のように置き換えます。

  • LEVEL_NAME: 更新するアクセスレベルの名前。

  • FILE: アクセスレベルの条件(基本アクセスレベルの場合)または単一のブール値に解決される CEL 式(カスタム アクセスレベルの場合)を定義する YAML ファイルの名前。

    ベーシック アクセスレベル条件で使用できる属性の完全なリストについては、アクセスレベルの属性をお読みください。

  • POLICY_NAME: 組織のアクセス ポリシーの名前。この値は、デフォルトのアクセス ポリシーを設定していない場合にのみ必要です。

  • 以下のオプションを 1 つ以上指定できます。

    オプション
    combine-function

    このオプションはベーシック アクセスレベルでのみ使用します。

    条件を組み合わせる方法を決定します。

    有効な値: AND、OR

    description

    アクセスレベルの詳細な説明。

    title

    アクセスレベルの短いタイトル。アクセスレベルのタイトルは Google Cloud コンソールに表示されます。

    gcloud 向けフラグを含めることが可能です。

コマンドの例

gcloud access-context-manager levels update Device_Trust \
    --basic-level-spec=corpdevspec.yaml \
    --combine-function=OR \
    --description='Access level that conforms to updated corporate spec.' \
    --title='Device_Trust Extended' \
    --policy=123456789012

API

アクセスレベルを更新するには、accessLevels.patch を呼び出します。

PATCH https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME?updateMask=FIELDS

次のように置き換えます。

  • POLICY_NAME: 組織のアクセス ポリシーの名前。

  • LEVEL_NAME: 更新するアクセスレベルの名前。

  • FIELDS: 更新する完全修飾フィールド名のカンマ区切りのリスト。

リクエストの本文

リクエストの本文には、アクセスレベルに加える変更を指定する AccessLevel リソースを含める必要があります。

レスポンスの本文

成功した場合、呼び出しのレスポンス本文に PATCH 操作に関する詳細を提供する Operation リソースが含まれます。

アクセスレベルを削除する

このセクションでは、Access Context Manager のアクセスレベルを削除する方法について説明します。アクセスレベルの削除は、次の 2 段階のプロセスです。

  1. アクセスレベルの依存関係を確認する。

  2. 個々のアクセスレベルを削除する。

アクセスレベルの依存関係を確認する

アクセスレベルを削除する前に、他のアクセスレベル、VPC Service Controls サービス境界、Google Workspace コンテキストアウェア アクセス ポリシー、Google Cloud アクセス バインディング、または IAM 条件で参照されていないことを確認してください。

削除するアクセスレベルを参照するすべてのアクセスレベルを見つけるには、次の操作を行います。

  1. jq がインストールされていることを確認します。jq がインストールされていることを確認するには、jq --version を実行します。必要に応じて、jq をインストールします。

  2. アクセスレベルの依存関係を確認します。このコマンドは、すべてのアクセスレベルを一覧表示し、jq を使用して、ベーシック レベルまたはカスタムレベルの定義で LEVEL_NAME を参照するアクセスレベルをフィルタします。

    echo "Searching for Access Levels referencing: accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME"
    echo ""
    
    gcloud access-context-manager levels list \
      --policy="POLICY_NAME" \
      --format=json | \
    jq -r '
      .[] |
      select(
        # Check basic levels: Is the target access level present as an element in any requiredAccessLevels array?
        ([(.basic.conditions // [])[] | (.requiredAccessLevels // []) | index("accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME") != null] | any)
        or
        # Check custom levels: Does the expression string contain the target access level?
        ((.custom.expr.expression // "") | (contains("accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME") or contains("levels.LEVEL_NAME")))
      ) |
      "  - \(.title) (Name: \(.name))"
    '
    
    echo ""
    echo "If any levels are listed, they reference LEVEL_NAME. You must update these referencing levels before you delete LEVEL_NAME."

    次のように置き換えます。

    • POLICY_NAME: 組織のアクセス ポリシーの名前。この値は、デフォルトのアクセス ポリシーを設定していない場合にのみ必要です。

    • LEVEL_NAME: 削除するアクセスレベルの名前(例: my_level)。

    出力には、accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME または levels.LEVEL_NAME を参照するアクセスレベルが、title と name とともに一覧表示されます。これらのアクセスレベルには、次のものがあります。

    • 基本レベル。accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME は requiredAccessLevels にリストされています。

    • カスタムレベル。accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME または levels.LEVEL_NAME が custom.expr.expression 文字列にリストされます。

  3. コマンドで参照アクセスレベルが一覧表示される場合は、まずそれらのレベルを更新して依存関係を削除する必要があります。手順については、アクセスレベルを更新するをご覧ください。

すべての参照が削除されたら、個々のアクセスレベルの削除に進むことができます。

個々のアクセスレベルを削除する

コンソール

アクセスレベルを削除するには、次の手順を行います。

  1. Google Cloud コンソールで [Access Context Manager] ページを開きます。

    [Access Context Manager] ページを開く

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

  3. グリッドで、削除するアクセスレベルの行のボタンをクリックします。

  4. [削除] をクリックします。

  5. 表示されるダイアログで、アクセスレベルを削除することを確認します。

gcloud

アクセスレベルを削除するには、次の手順を行います。

  1. アクセスレベルを削除するには、delete コマンドを使用します。

    gcloud access-context-manager levels delete LEVEL_NAME \
        [--policy=POLICY_NAME]

    次のように置き換えます。

    • LEVEL_NAME: 削除するアクセスレベルの名前。

    • POLICY_NAME: 組織のアクセス ポリシーの名前。この値は、デフォルトのアクセス ポリシーを設定していない場合にのみ必要です。

  2. アクセスレベルを削除することを確認します。

    次に例を示します。

    You are about to delete level Device_Trust
    
    Do you want to continue (Y/n)?
    

    出力は次のようになります。

    Waiting for operation [accessPolicies/123456789012/accessLevels/Device_Trust/delete/1531171874311645] to complete...done.
    Deleted level [Device_Trust].
    

API

アクセスレベルを削除するには、accessLevels.delete を呼び出します。

DELETE https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME

次のように置き換えます。

  • POLICY_NAME: 組織のアクセス ポリシーの名前。

  • LEVEL_NAME: 削除するアクセスレベルの名前。

リクエストの本文

リクエストの本文は空にする必要があります。

レスポンスの本文

成功した場合、呼び出しのレスポンス本文に削除オペレーションに関する詳細を説明する Operation リソースが含まれています。