アクセスレベルを使用してアクセス ポリシーを定義する

このページでは、アクセスレベルを使用してコンテキスト対応アクセス ポリシーを定義する方法について説明します。

アクセスレベルは、発生源に基づいてリクエストに割り当てられた属性のセットです。デバイスタイプ、IP アドレス、ユーザー ID などの情報を使用して、付与するアクセスレベルを指定できます。たとえば、企業ネットワーク内からの接続には High_Trust レベルを、承認されたオペレーティング システムを実行している外部デバイスには Medium_Trust レベルを割り当てることができます。

アクセス ポリシーは、アクセスレベルやサービス境界など、すべての Access Context Manager リソースのコンテナです。

アクセスレベルとアクセス ポリシーの詳細については、Access Context Manager の概要をご覧ください。

始める前に

アクセスレベルを定義する場合、次の制限が適用されます。

  • Docker 接続の属性として IP アドレスを使用できません。また、kubectl またはマネージド Looker インスタンスを使用してプライベート クラスタに接続する場合は、プライベート IP アドレスを使用できません。
  • Access Context Manager のポリシーに関係なく、Looker Studio は常に Google Cloud APIs に無制限にアクセスできます。
  • デバイス属性は、Google 以外の OAuth クライアント アプリケーションでは使用できません。

アクセスレベルを使用してポリシーを定義する

コンソール

ベーシック アクセスレベルを作成します。

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

    [Access Context Manager] ページに移動

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

  3. [Access Context Manager] ページで [新規] をクリックします。

  4. [新しいアクセスレベル] ペインで、次の操作を行います。

    1. [アクセスレベルのタイトル] フィールドに、アクセスレベルのタイトルを入力します。 タイトルは最大 50 文字です。先頭は英字にしてください。その後には、数字、英字、アンダースコア、スペースのみ使用できます。

    2. [条件] セクションで、追加する属性のタイプの追加ボタンをクリックし、その属性に適用する値を指定します。

      追加できる属性の完全なリストについては、アクセスレベルの属性をご覧ください。

      たとえば、ネットワーク内のどこからリクエストが発信されているかをアクセスレベルで考慮する場合は、[IP サブネットワーク] 属性を選択します。

      同じ条件に複数の属性を追加するには、この手順を繰り返します。 条件に複数の属性を設定した場合は、それらすべての属性を満たしているアクセス リクエストのみが対象になります。

      アクセスレベル条件には、それぞれの属性タイプを 1 つずつ指定できます。[Device Policy] 属性などの一部の属性では、追加オプションも設定できます。

      アクセスレベルでは、ユーザー ID に基づく条件がサポートされています。ただし、条件に ID を追加するには、gcloud CLI または API を使用してアクセスレベルを作成または更新する必要があります。

    3. [条件が満たされている場合に返す] オプションを使用して、リクエストが指定された属性をすべて満たすことを条件とするかどうか(TRUE)、またはリクエストがこれらの属性以外を満たす必要があるかどうか(FALSE)を設定します。

      たとえば、ネットワークの特定の IP アドレス範囲からのリクエストを拒否する場合は、IP サブネットワーク属性を使用して IP アドレス範囲を指定し、条件を FALSE に設定します。

    4. 必要に応じて、[ADD ANOTHER CONDITION] をクリックしてアクセスレベルに条件を追加してから、前の 2 つの手順を繰り返します。

      たとえば、より広い IP アドレス範囲内の IP アドレスのサブセットへのアクセスを拒否する場合は、新しい条件を作成し、IP サブネットワーク属性にサブセット IP アドレス範囲を指定して、FALSE を返すように条件を設定します。

      同じアクセスレベルに複数の条件を追加するには、この手順を繰り返します。

    5. 複数の条件を作成した場合は、[Combine condition with] を使用して、アクセスレベルで 1 つの条件のみ(OR)、またはすべての条件(AND)を満たすリクエストが必要かどうかを指定します。

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

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

    (省略可)条件を組み合わせる方法を指定します。

    有効な値: ANDOR

    description

    (省略可)アクセスレベルの詳細な説明。

  • POLICY: 組織のアクセス ポリシーの ID。デフォルトのポリシーが設定されている場合、このパラメータは省略できます。

必要に応じて、gcloud フラグを含めることもできます。

basic-level-spec YAML ファイル

gcloud CLI を使用してアクセスレベルを作成する場合は、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/16172.16.0.0/12 など)を使用する場合は、追加情報と VPC Service Controls を使用した実装例について、内部 IP アドレスから保護されたリソースへのアクセスを許可するをご覧ください。

コンソール

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

    [Access Context Manager] ページに移動

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

  3. [Chrome Enterprise Premium] ページの上部にある [新規] をクリックします。

  4. [新しいアクセスレベル] パネルの [条件] セクションで、[属性を追加]、[IP サブネットワーク] の順にクリックします。

  5. [IP サブネットワーク] ボックスで、[パブリック IP] または [プライベート IP] を選択します。

    • [パブリック IP] を選択した場合は、CIDR ブロックとしてフォーマットされた 1 つ以上の IPv4 または IPv6 の範囲を入力します。

      この例では、アクセス権を監査者だけに制限するために、[IP サブネットワーク] ボックスに「203.0.113.0/25」と入力します。

    • [プライベート IP] を選択した場合は、[VPC ネットワークを選択] をクリックします。VPC ネットワークは、[インポート オプション] リストで使用可能な 3 つのオプションのいずれかを使用して指定できます。

      • オプション 1:

        1. [組織内の VPC ネットワークを参照] を選択し、VPC ネットワークを選択します。

        2. [選択した VPC ネットワークを追加] をクリックします。

        3. [IP サブネットを選択] をクリックし、サブネットを選択します。

        4. [IP サブネットを追加] をクリックします。

      • オプション 2:

        1. [VPC ネットワーク アドレスを手動で入力する] を選択し、1 つ以上の VPC ネットワークを入力します。

        2. [VPC ネットワークを追加] をクリックします。

        3. [IP サブネットを選択] をクリックし、サブネットを選択します。

        4. [IP サブネットを追加] をクリックします。

      • オプション 3:

        1. CSV ファイルのアップロード(既存のネットワークの上書き)を選択します。

          CSV ファイルを使用して VPC ネットワークとサブネットをアクセスレベルに追加すると、Access Context Manager は、以前に選択した VPC ネットワークとサブネットを上書きします。

        2. [参照] をクリックして、CSV ファイルをアップロードします。CSV ファイルで、VPC ネットワークとサブネットを次の形式で指定する必要があります。

          VPC_NETWORK_NAME_1       | IP_RANGE_1       | IP_RANGE_2       | ...
          VPC_NETWORK_NAME_2       | .                | .                | ...
          .                        | .                | .                | ...
          .                        | .                | .                | ...
          
        3. [ネットワークをインポート] をクリックします。

          Access Context Manager は、CSV ファイルを使用して、[VPC ネットワーク アドレス] ボックスと [IP サブネットワーク] ボックスに VPC ネットワーク名とサブネット情報をそれぞれ入力します。

      VPC ネットワーク名とプライベート IP アドレスの形式については、アクセスレベルで内部 IP アドレスを使用するをご覧ください。

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

gcloud

  1. 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_NAMEIP_RANGE は、アクセスレベルで内部 IP アドレスを使用するセクションで説明されている値に置き換えます。

  2. ファイルを保存します。この例では、ファイル名は CONDITIONS.yaml です。

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

    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

  1. 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_NAMEIP_RANGE は、アクセスレベルで内部 IP アドレスを使用するセクションで説明されている値に置き換えます。

  2. accessLevels.create を呼び出してアクセスレベルを作成します。

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY は、組織のアクセス ポリシーの ID です。

アクセスレベルを作成したら、アクセス バインディングを使用して適用して、適用する必要があります。

デバイスの属性によってアクセスを制限する

この例では、特定のオペレーティング システム(OS)バージョンなど、指定された一連の要件を満たすデバイスにのみアクセスを許可するアクセスレベルの作成方法について説明します。

デバイスに関する情報は、Endpoint Verification 経由で Chrome Enterprise Premium に提供されます。アクセスを許可するかどうかを決定するときに、次の条件を確認できます。

  • 画面ロックが有効であること
  • ストレージ暗号化が有効であること
  • デバイスで、指定された種類とバージョンのオペレーティング システムが稼働していること

この例では、組織で ChromeOS または Windows のいずれかがインストールされているコンピュータのみを使用しているとします。セキュリティのレイヤを追加するには、他のオペレーティング システムを使用している人物によるアクセスを防止するアクセスレベルを作成します。さらに、リスクを管理するために、特定のバージョンの OS だけがアクセスできるようにする必要があります。

コンソール

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

    [Access Context Manager] ページに移動

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

  3. [Chrome Enterprise Premium] ページの上部にある [新規] をクリックします。

  4. [新しいアクセスレベル] パネルの [条件] セクションで、[属性を追加]、[Device Policy] の順にクリックします。

  5. デバイス ポリシー属性を追加します。

    1. [OS ポリシーを追加]、[Chrome OS ポリシー] の順にクリックします。

    2. [Minimum version] ボックスに、許可する ChromeOS の最小バージョンを入力します。

    3. [Windows OS ポリシー] に対して手順 1 と 2 を繰り返します。

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

gcloud

  1. OS の制約があるデバイス ポリシーが含まれるアクセスレベルの YAML ファイルを作成します。

    この例では、ChromeOS と Windows の最小許容バージョンのデバイスのみを許可するために、YAML ファイルに次のように入力します。

    - devicePolicy:
        osConstraints:
          - osType: DESKTOP_CHROME_OS
            minimumVersion: 11316.165.0
          - osType: DESKTOP_WINDOWS
            minimumVersion: 10.0.1809
    
  2. ファイルを保存します。この例では、ファイル名は CONDITIONS.yaml です。

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

    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

  1. OS の制約があるデバイス ポリシーが含まれる AccessLevel リソース用のリクエスト本文を作成します。

    この例では、ChromeOS と 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: 人が読める形式のタイトル。タイトルはポリシーに固有のものでなければなりません。

  2. accessLevels.create を呼び出してアクセスレベルを作成します。

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY は、組織のアクセス ポリシーの ID です。

アクセスレベルを作成したら、アクセス バインディングを使用して適用して、適用する必要があります。

有効な証明書を持つ信頼できる企業デバイスへのアクセスを制限する

証明書ベースのアクセス(CBA)を使用すると、Google Cloud リソースへのアクセスに検証済みの X.509 証明書を必須にできます。追加の認証情報はデバイス ID のシグナルを強化し、アクセス権を付与する前に、ユーザー認証情報と元のデバイス証明書の両方を要求することで、認証情報の盗難や偶発的な紛失から組織を保護します。

続行する前に、Google Cloud リソースへのアクセスが必要なすべてのデバイスに Endpoint Verification Chrome 拡張機能と Endpoint Verification ヘルパーアプリがデプロイされていることを確認します。これらは、アクセス権を付与できる信頼できるデバイスになります。詳細については、証明書ベースのアクセスで使用するために Endpoint Verification をデプロイするをご覧ください。

証明書ベースのアクセスを必要とするポリシーを作成するには、カスタムのアクセスレベル仕様を持つアクセスレベルが必要です。

コンソール

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

    [Access Context Manager] ページに移動

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

  3. [アクセスレベルを作成] をクリックします。

  4. [新しいアクセスレベル] ペインで、[詳細モード] を選択します。このモードを使用するには、Chrome Enterprise Premium ライセンスが必要です。

  5. [条件] セクションの [CEL 式] ボックスに次の式を入力します。

    certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
    
  6. [保存] をクリックします。

gcloud

  1. 証明書の適用が含まれるアクセスレベルの YAML ファイルを作成します。

    expression: "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE"
    
  2. ファイルを保存します。この例では、ファイル名は CONDITIONS.yaml です。

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

    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/1234] to complete...done.
Created level NAME.

API

  1. OS の制約があるデバイス ポリシーが含まれるアクセスレベルのリクエスト本文ファイルを作成します。

    {
     "name": "require_certificate",
     "title": "Certificate-Based Access",
     "description": "An example certificate-based access level.",
     "custom": {
       "expr": {
         "expression": "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE",
         "title": "Require a valid certificate",
         "description": "Permits requests from a device with a valid mTLS certificate."
        }
      }
    }
  2. accessLevels.create を呼び出してアクセスレベルを作成します。

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY は、組織のアクセス ポリシーの ID です。

アクセスレベルを作成したら、アクセス バインディングを使用して適用して、適用する必要があります。