アクセスレベルの作成

このページでは、アクセスレベルの作成方法の概要を示します。また、アクセスレベルの具体的な実装方法について説明します。次の例をご覧ください。

始める前に

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

Console

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

  1. Cloud Console で [Access Context Manager] ページを開きます。

    [Access Context Manager] ページを開く

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

  3. [Access Context Manager] ページの上部にある [新規] をクリックします。

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

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

    2. [属性を追加] をクリックし、条件に追加する属性を選択します。

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

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

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

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

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

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

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

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

    5. 条件セクションで、[条件を組み合わせる] オプションを使用して、すべてのアクセスレベル条件をリクエストで満たす必要があることをアクセスレベルで要求するか(AND)、条件の 1 つのみか(OR)を設定します。

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

gcloud

始める前に

gcloud コマンドライン ツールを使用してアクセスレベルを作成するには、gcloud access-context-manager levels create コマンドを使用します。

gcloud access-context-manager levels create LEVEL_NAME OPTIONS \
    --policy=POLICY_NAME

ここで

  • LEVEL_NAME は、アクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。 名前は最大 50 文字です。

  • OPTIONS は、次の表の必須オプションです。

    オプション
    basic-level-spec

    アクセスレベルの 1 つ以上の条件を指定する .yaml ファイル

    title

    アクセスレベルの短いタイトル。アクセスレベルのタイトルが Cloud Console に表示されます。

    combine-function

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

    有効な値: ANDOR

    description

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

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

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

basic-level-spec .yaml ファイル

gcloud コマンドライン ツールを使用してアクセスレベルを作成するときは、basic-level-spec オプションに .yaml ファイルを指定する必要があります。.yaml ファイルは、アクセスレベルの 1 つ以上の条件を定義します。条件には少なくとも 1 つの属性を含める必要があります。

.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'

API

始める前に

アクセスレベルを作成するには、accessLevels.create を呼び出します。

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

ここで

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

リクエストの本文

リクエスト本文には、新しいアクセスレベルに必要な条件を指定する AccessLevel リソースを含める必要があります。

レスポンス本文

成功した場合は、呼び出しのレスポンス本文に Operation リソースが含まれます。これにより POST オペレーションの詳細がわかります。

実装の例

次の例では、組織がアクセスレベルを実装する際に採用できる、いくつかの実用的な手法について説明します。こうした例では、組織がすでにアクセス ポリシーを実施していることを想定しています。

企業ネットワークへのアクセスを制限する

この例では、指定された範囲の IP アドレス(企業ネットワーク内のアドレスなど)からのアクセスのみを許可するアクセスレベル条件の作成方法について説明します。

アクセスが許可される IP アドレスの範囲を制限することで、組織の内外にいる攻撃者がデータを入手することを困難にします。

この例では、sensitive-data という名前のプロジェクトの Cloud Logging サービスに、内部監査者のグループがアクセスできるようなアクセスレベルを作成すると仮定します。監査者用のすべてのデバイスには、203.0.113.0 から 203.0.113.127 の範囲にあるサブネット上の IP が割り当てられています。監査者が使用しているデバイス以外は、そのサブネットに割り当てられません。

Console

  1. Cloud Console で [Access Context Manager] ページを開きます。

    [Access Context Manager] ページを開く

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

  3. [Access Context Manager] ページの上部にある [新規] をクリックします。

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

  5. [IP サブネットワーク] ボックスに、CIDR ブロックとしてフォーマットされた 1 つ以上の IPv4 または IPv6 の範囲を入力します。

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

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

gcloud

  1. CIDRブロックとしてフォーマットされた 1 つ以上の IPv4 または IPv6 の範囲が含まれるアクセスレベルの .yaml ファイルを作成します。

    この例では、アクセス権を監査者だけに制限するために、.yaml ファイルに次のように入力します。

    - ipSubnetworks:
      - 203.0.113.0/25
    
  2. ファイルを保存します。この例では、ファイルの名前は CONDITIONS.yaml です。

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

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY_NAME
    

    ここで

    • NAME は、アクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。

    • TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。

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

    次のような出力が表示されます。

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/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 は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。

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

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

    ここで

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

ネットワーク上のデバイスによるアクセスを制限する

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

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

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

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

Console

  1. Cloud Console で [Access Context Manager] ページを開きます。

    [Access Context Manager] ページを開く

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

  3. [Access Context Manager] ページの上部にある [新規] をクリックします。

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

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

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

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

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

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

gcloud

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

    この例では、Chrome OS と 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
    

    ここで

    • NAME は、アクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。

    • TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。

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

    次のような出力が表示されます。

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

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

    この例では、Chrome OS と 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_NAME/accessLevels
    

    ここで

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

ユーザーまたはサービス アカウントによるアクセスを制限する

ID に基づくアクセス許可は、サービス アカウントと組み合わせて使用すると便利です。たとえば、Cloud ファンクションがデータにアクセスできるようにします。

この例では、他のアクセスレベルの条件に合わない特定のユーザーとサービス アカウントにアクセスを許可する方法について説明します。この例では、他のアクセスレベルで指定された条件に関係なく、システム管理者とサービス アカウントにプロジェクトのサービスへのアクセスを許可するとします。

Console

現在、Cloud Console では、アクセスレベルへのメンバーの追加はサポートされていません。アクセスレベルにメンバーを追加する場合は、gcloud コマンドライン ツールまたは API を使用する必要があります。

gcloud

  1. アクセスを許可するメンバーを一覧表示する条件が含まれる .yaml ファイルを作成します。

    この例では、システム管理者(sysadmin@example.com)とサービス アカウント(service@project.iam.gserviceaccount.com)を追加します。

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
  2. メンバーに適用しないアクセスレベルを一覧表示する条件を追加します。 否定は、ステップ 4 で結合関数を OR に設定することによって実現します。

    この例では、アクセスレベルの名前が Device_TrustIP_Trust であり、247332951433 がアクセス ポリシーの名前であると仮定しています。

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
    - requiredAccessLevels:
        - accessPolicies/247332951433/accessLevels/Device_Trust
        - accessPolicies/247332951433/accessLevels/IP_Trust
    
  3. ファイルを保存します。この例では、ファイルの名前は CONDITIONS.yaml です。

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

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --combine-function=OR \
       --policy=POLICY_NAME
    

    ここで

    • NAME は、アクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。

    • TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。

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

    • combine-functionOR に設定されています。デフォルト値 AND では、アクセスレベルが付与される前にすべての条件が満たされる必要があります。IP アドレスや、その他の必須アクセスレベルから継承された条件など、他の条件が満たされていない場合でも、OR 値によってメンバーにアクセス権が付与されます。

    次のような出力が表示されます。

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

  1. アクセスを許可するメンバーを一覧表示する条件が含まれる AccessLevel リソース用のリクエスト本文を作成します。

    この例では、システム管理者(sysadmin@example.com)とサービス アカウント(service@project.iam.gserviceaccount.com)を追加します。

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         }
       ]
     }
    }
    

    ここで

    • NAME は、アクセスレベルの一意の名前です。先頭は英字にしてください。その後には英字、数字、アンダースコアのみ使用できます。

    • TITLE は人が読める形式のタイトルです。タイトルはポリシーに固有のものでなければなりません。

  2. メンバーに適用しないアクセスレベルを一覧表示する条件を追加します。 否定は、次のステップで結合関数を OR に設定することによって実現します。

    この例では、アクセスレベルの名前が Device_TrustIP_Trust であり、247332951433 がアクセス ポリシーの名前であると仮定しています。

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         },
         {
           "requiredAccessLevels": [
             "accessPolicies/247332951433/accessLevels/Device_Trust",
             "accessPolicies/247332951433/accessLevels/IP_Trust"
           ]
         }
       ]
     }
    }
    
  3. combiningFunctionOR に設定する。

    combiningFunction のデフォルト値である AND では、アクセスレベルが付与される前に、すべての条件が満たされる必要があります。IP アドレスや、その他の必須アクセスレベルから継承された条件など、他の条件が満たされていない場合でも、OR 値によってメンバーにアクセス権が付与されます。

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         },
         {
           "requiredAccessLevels": [
             "accessPolicies/247332951433/accessLevels/Device_Trust",
             "accessPolicies/247332951433/accessLevels/IP_Trust"
           ]
         }
       ],
       "combiningFunction": "OR"
     }
    }
    
  4. accessLevels.create を呼び出してアクセスレベルを作成します。

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

    ここで

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