アクセスレベルの管理

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

始める前に

  • デフォルトのアクセス ポリシーを設定するgcloud コマンドライン ツールを使用する場合)。

    または

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

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

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

コンソール

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

[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/v1alpha/accessPolicies/POLICY_NAME/accessLevels

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

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

リクエストの本文

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

オプション パラメータ

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

パラメータ
pageSize

number

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

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

pageToken

string

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

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

accessLevelFormat

enum(LevelFormat)

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

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

レスポンスの本文

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

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

gcloud コマンドライン ツールを使用すると、YAML または JSON 形式でアクセスレベルのリストを取得できます。

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

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

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

YAML 出力は、以下のようになります。

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

JSON 出力は、以下のようになります。

[
  {
    "basic": {
      "conditions": [
        {
          "ipSubnetworks": [
            "8.8.0.0/24"
          ]
        }
      ]
    },
    "description": "Level for corp access.",
    "name": "accessPolicies/165717541651/accessLevels/corp_level",
    "title": "Corp Level"
  },
  {
    "basic": {
      "combiningFunction": "OR",
      "conditions": [
        {
          "ipSubnetworks": [
            "8.8.0.0/24"
          ]
        }
      ]
    },
    "description": "Level for net access.",
    "name": "accessPolicies/165717541651/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/330193482019/accessLevels/Device_Trust
title: Device_Trust Extended

API

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

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

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

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

  • LEVEL_NAME は、説明するアクセスレベルの名前です。

リクエストの本文

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

オプション パラメータ

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

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

レスポンスの本文

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

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

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

コンソール

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

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

    [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

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

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

    有効な値: ANDOR

    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=1034095178592

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. 個々のアクセスレベルを削除する

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

アクセスレベルを削除する前に、他のアクセスレベルから参照されていないことを確認してください。

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

  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
        or
        # Check custom levels: Does the expression string contain the target access level?
        (.custom.expr.expression // "") | contains("accessPolicies/POLICY_NAME/accessLevels/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."

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

    出力には、accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME を参照するアクセスレベルが、titlename とともに一覧表示されます。これには、ベーシック レベル(accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAMErequiredAccessLevels にある場合)とカスタムレベル( accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAMEcustom.expr.expression 文字列に表示される場合)の両方が含まれます。

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

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

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

コンソール

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

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

    [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/330193482019/accessLevels/Device_Trust/delete/1531171874311645] to complete...done.
    Deleted level [Device_Trust].
    

API

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

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

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

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

  • LEVEL_NAME は、説明するアクセスレベルの名前です。

リクエストの本文

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

レスポンスの本文

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