Cloud IDS を構成する

次の手順でアプリケーションの Cloud IDS を構成します。Cloud IDS のコンセプトについては、Cloud IDS の概要をご覧ください。

始める前に

Cloud IDS を構成する前に、次の要件を満たす必要があります。

Cloud IDS の IAM 権限を設定する

Cloud IDS には、Identity and Access Management(IAM)ロールがいくつかあります。このコマンドの例を参考に、必要な IAM 権限をプリンシパルに付与してください。

  • Cloud IDS 管理者のロール(roles/ids.admin)。 このロールを持つプロジェクト プリンシパルは、IDS エンドポイントを作成できます。プロジェクト オーナーにはすでにこの権限が付与されているため、IDS エンドポイントを作成するために明示的に ids.admin ロールを付与する必要はありません。

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role=roles/ids.admin \
        --member=user:USER_NAME ;
    

    このロールにより次の操作が可能になります。

    • エンドポイントの作成
    • エンドポイントの削除
    • エンドポイントの取得
    • エンドポイントの一覧表示
  • Cloud IDS 閲覧者のロール(roles/ids.viewer)。プロジェクト閲覧者と、このロールを持つプリンシパルは、IDS エンドポイントに対する読み取り専用権限を持ちます。プロジェクトのオーナー、編集者、閲覧者にはすでにこの権限が付与されています。

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role=roles/ids.viewer \
        --member=user:USER_NAME ;
    
  • コンピューティング パケット ミラーリング ユーザーのロール(roles/compute.packetMirroringUser)。パケット ミラーリング ポリシーを IDS エンドポイントに接続するために必要なロールです。ロール compute.securityAdmin またはロール container.serviceAgent を割り当てられている場合は、すでにこの権限が付与されています。このロールについて詳しくは、IAM の基本ロールと事前定義ロールのリファレンスをご覧ください。

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role=roles/compute.packetMirroringUser \
        --member=user:USER_NAME ;
    
  • ログ閲覧者のロール(roles/logging.viewer)。Cloud IDS の重要なコア機能である、最近の脅威の表示に必要な追加のロールです。このロールについて詳しくは、アクセス制御ガイドをご覧ください。

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --role=roles/logging.viewer \
        --member=user:USER_NAME ;
    

また、次の権限も追加で必要になります。

  • compute.regions.list
  • compute.zones.list

プライベート サービス アクセスを設定する

IDS エンドポイントを作成するには、Service Networking API を有効にして、Virtual Private Cloud(VPC)ネットワークのネットワーク ピアリングを設定する必要があります。この設定は、Google Cloud コンソールまたは Google Cloud CLI を使用して、お客様のプロジェクトごとに 1 回だけ行います。IP アドレス範囲を割り当てる際は、RFC 1918 に準拠したプライベート IP アドレス範囲(10.0.0.0/8172.16.0.0/12192.168.0.0/16)を使用する必要があります。そうでない場合、エンドポイントの作成に失敗します。

プライベート サービス アクセスを設定するには、次の手順で操作します。

  1. 次のコマンドを使用して、Service Networking API を有効にします。PROJECT_ID は実際のプロジェクト ID に置き換えてください。

     gcloud services enable servicenetworking.googleapis.com \
         --project=PROJECT_ID
    
  2. ネットワークで IP アドレス範囲をまだ割り当てていない場合は、VPC ネットワークで Google サービスに IP 範囲を割り当てる必要があります。次のコマンドでは、addresses フィールドを省略できます。VPC ネットワークで使用されていないアドレス範囲がGoogle Cloud により選択されます。

     gcloud compute addresses create RESERVED_RANGE_NAME \
         --global \
         --purpose=VPC_PEERING \
         --addresses=192.168.0.0 \
         --prefix-length=16 \
         --description="DESCRIPTION" \
         --network=VPC_NETWORK
    

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

    • RESERVED_RANGE_NAME: 割り振り範囲の名前(my-allocated-range など)。

    • DESCRIPTION: 範囲の説明(allocated for my-service など)。

    • VPC_NETWORK: VPC ネットワークの名前(my-vpc-network など)

  3. サービス プロデューサーへのプライベート接続を作成します。プライベート接続により、VPC ネットワークとサービス プロデューサーのネットワークの間に VPC ネットワーク ピアリング接続が確立されます。

    既存のプライベート接続がある場合は、gcloud services vpc-peerings update コマンドを使用して更新します。

      gcloud services vpc-peerings update \
          --service=servicenetworking.googleapis.com \
          --ranges=RESERVED_RANGE_NAME \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    プライベート接続がまだない場合は、gcloud services vpc-peerings connect コマンドを使用します。このコマンドにより、オペレーション名を返す長時間実行オペレーションが開始されます。

      gcloud services vpc-peerings connect \
          --service=servicenetworking.googleapis.com \
          --ranges=RESERVED_RANGE_NAME \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

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

    • RESERVED_RANGE_NAME: 1 つ以上の割り当て範囲の名前

    • VPC_NETWORK: VPC ネットワークの名前

    • PROJECT_ID: VPC ネットワークが使用されるプロジェクトの ID

    オペレーションが成功したかどうかを確認するには、gcloud services vpc-peerings operations describe コマンドを使用します。

      gcloud services vpc-peerings operations describe \
          --name=OPERATION_NAME
    

    OPERATION_NAME は、前の手順で返されたオペレーション名に置き換えます。

モニタリングする VPC ネットワークごとに手順 2~3 を繰り返します。

省略可: VPC Service Controls を有効にする

プライベート サービス アクセスを有効にすると、必要に応じて Cloud IDS で VPC Service Controls を有効にできます。有効になっている場合は、services vpc-peerings enable-vpc-service-controls コマンドを実行して、すべてのピアリング接続で VPC Service Controls を有効にします。

gcloud services vpc-peerings enable-vpc-service-controls \
    --service=servicenetworking.googleapis.com \
    --network=VPC_NETWORK \
    --project=PROJECT_ID

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

  • VPC_NETWORK: VPC ネットワークの名前

  • PROJECT_ID: VPC ネットワークが使用されるプロジェクトの ID

ベスト プラクティスを理解する

Cloud IDS を構成する前に、ベスト プラクティスを理解しておくことをおすすめします。詳細については、Cloud IDS のベスト プラクティスをご覧ください。

Cloud IDS エンドポイントを構成する

以降のセクションでは、Cloud IDS エンドポイントの作成方法、パケット ミラーリング ポリシーへの関連付け方法、Cloud IDS エンドポイントの表示方法、Cloud IDS エンドポイントの削除方法、脅威の例外の構成方法について説明します。

Cloud IDS エンドポイントを作成する

ワークロードをデプロイしたすべてのリージョンに IDS エンドポイントを作成することをおすすめします。リージョンごとに複数の IDS エンドポイントを作成することもできます。次の手順で IDS エンドポイントを作成し、IDS サービス プロファイルを割り当てます。

コンソール

Google Cloud コンソールで、[IDS エンドポイント] に移動します。

[IDS エンドポイント] に移動

エンドポイントを構成します。

  1. [エンドポイントの作成] をクリックします。
  2. [名前] フィールドに名前を入力します。
  3. 省略可: [説明] フィールドに説明を入力します。
  4. [ネットワーク] リストをクリックし、Cloud IDS で検査するネットワークを選択します。
    1. ネットワークまたはサブネットのリージョンとゾーンを、[リージョン] リストと [ゾーン] リストから選択します。
    2. [続行] をクリックします。

Cloud IDS サービス プロファイルを選択します。

  1. [IDS サービス プロファイルの選択] をクリックします。
  2. [Minimum threat severity level] で、適切なアラートレベルを選択します。
  3. [作成] をクリックします。作成には 10~15 分ほどかかることがあります。

gcloud

オプション フラグ

このセクションのコマンドでは、次のオプション フラグの一部またはすべてを使用できます。

--no-async
オペレーションをすぐに完了せず、完了するまで待機します。
--filter=EXPRESSION
表示される各リソース アイテムにブール値フィルタ EXPRESSION を適用します。式が True と評価された場合、そのアイテムが一覧表示されます。フィルタ式の詳細と例を表示するには、gcloud topic filters コマンドを実行します。このフラグは、--flatten--sort-by--filter--limit の順序で適用される他のフラグと連携します。
--limit=LIMIT
一覧表示するリソースの最大数。デフォルトでは無制限です。このフラグは、--flatten--sort-by--filter--limit の順序で適用される他のフラグと連携します。
--page-size=PAGE_SIZE
Cloud IDS によって、リソースリストがグループ化されてページに出力されます。このフラグを使用すれば、1 ページあたりの最大リソース数を指定できます。デフォルトは、ページングをサポートしているサービスによって決まりますが、それ以外の場合は無制限です(ページングはありません)。ページングは、サービスに応じて、--filter フラグと --limit フラグの前または後に適用できます。
--sort-by=[FIELD,…]
は、並べ替えるリソース フィールド キー名のカンマ区切りのリストで置き換えます。デフォルトの順序は昇順です。フィールドを降順で並べ替えるには、フィールドの先頭にチルダ(~)を付けます。このフラグは、--flatten--sort-by--filter--limit の順序で適用される他のフラグと連携します。
--uri
デフォルトの出力ではなく、リソース URI のリストを出力します。
--threat-exceptions
このエンドポイントのアラートから除外する脅威 ID のカンマ区切りのリスト。エンドポイントあたり 99 個の例外に制限されています。

手順

新しい IDS エンドポイントを作成するには、gcloud ids endpoints create コマンドを使用します。

 gcloud ids endpoints create ENDPOINT_NAME \
     --network=VPC_NETWORK \
     --zone=ZONE \
     --severity=SEVERITY \
     [--no-async] \
     [GCLOUD_WIDE_FLAG...]

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

  • ENDPOINT_NAME: エンドポイントの名前または ID。
  • VPC_NETWORK: VPC ネットワークの名前。
  • ZONE: エンドポイントのゾーン。
  • SEVERITY: レポートする脅威の最小重大度。

    重大度のフラグは必須です。次のいずれかの値を指定します。

    • INFORMATIONAL
    • LOW
    • MEDIUM
    • HIGH
    • CRITICAL

API

Cloud IDS エンドポイント リソースには、次のフィールドがあります。

フィールド タイプ フィールドの説明
createTime 文字列 [出力のみ] 作成タイムスタンプ(RFC 3339 テキスト形式)。
updateTime 文字列 [出力のみ] 最終更新タイムスタンプ(RFC 3339 テキスト形式)。
name 文字列 [出力のみ] エンドポイントの名前(projects/{project_id}/locations/{locationId}/endpoints/{endpointId} 形式)。
ネットワーク 文字列 IDS エンドポイントに接続されている VPC ネットワークの名前。VPC ネットワーク名自体("src-net" など)またはネットワークへの完全な URL("projects/{project_id}/global/networks/src-net" など)のいずれかを含めることができます。このフィールドは、エンドポイントの作成時に必須です。
severity 文字列

エンドポイントから報告されるアラートの最小重要度レベル。次の値を指定できます。

  • INFORMATIONAL
  • LOW
  • MEDIUM
  • HIGH
  • CRITICAL

このフィールドは、エンドポイントの作成時に必須です。

description 文字列 エンドポイントの説明(省略可)。
endpoint_forwarding_rule 文字列 [出力のみ] Packet Mirroring がトラフィックを送信する宛先となるエンドポイントのネットワーク アドレスの URL。
endpoint 文字列 [出力のみ] エンドポイントのネットワーク エントリ ポイントの内部 IP アドレス。

Cloud IDS エンドポイントを作成するには、次のような HTTP POST リクエストを使用し、必要に応じて変数を置き換えます。ENDPOINT_NAME は 1 ~ 63 文字で指定します。使用できるのは小文字、数字、ハイフンのみです。先頭は英小文字にする必要があり、末尾をハイフンにすることはできません。

POST https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME
{
  "network": "NETWORK_NAME",
  "severity": "SEVERITY_LEVEL",
}

Packet Mirroring ポリシーを Cloud IDS エンドポイントに接続する

次の手順に沿って、Packet Mirroring ポリシーを IDS エンドポイントに接続します。

コンソール

IDS エンドポイントを作成したら、その IDS エンドポイントにパケット ミラーリング ポリシーを接続します。

  1. Google Cloud コンソールで、[IDS エンドポイント] に移動します。

    [IDS エンドポイント] に移動

  2. IDS エンドポイントの横にある [接続] をクリックします。

  3. [ポリシー名] フィールドに、パケット ミラーリング ポリシーの名前を入力します。

  4. [次へ] をクリックします。

  5. ミラーリングするサブネットまたはインスタンスを選択します。複数のサブネットとインスタンスを選択できます。

  6. [次へ] をクリックします。

  7. すべてのトラフィックをミラーリングするか、トラフィックをフィルタリングするかを決めます。

    1. すべてのトラフィックをミラーリングするには、[すべてのトラフィックをミラーリングする] が選択されていることを確認します。
    2. プロトコル、IP アドレス範囲、上り(内向き)トラフィックまたは下り(外向き)トラフィックに基づいてトラフィックをフィルタする場合は、[フィルタ済みトラフィックをミラーリングする] を選択します。
      1. [すべてのプロトコルを許可] または [特定のプロトコルを許可する] を選択します。
      2. [Allow all IP ranges] または [Allow specific IP ranges] を選択します。
  8. [送信] をクリックします。エンドポイントが作成されます。

gcloud

  1. エンドポイントを作成したら、その IDS エンドポイントにパケット ミラーリング ポリシーを接続します。まず、次のコマンドを使用して endpoint_forwarding_rule フィールドから URL を取得します。

    gcloud ids endpoints describe ENDPOINT_NAME
    
  2. 次のコマンドを使用して、パケット ミラーリング ポリシーを作成します。

     gcloud compute packet-mirrorings create POLICY_NAME \
         --region=REGION \
         --collector-ilb=ENDPOINT_FORWARDING_RULE \
         --network=VPC_NETWORK \
         --mirrored-subnets=SUBNET
    
  3. Packet Mirroring には、プロトコル、IP アドレス範囲、上り(内向き)トラフィックまたは下り(外向き)トラフィックに基づいてトラフィックをフィルタできるフラグなど、オプション フラグがいくつかあります。これらのオプション フラグについて詳しくは、パケット ミラーリングのリファレンスをご覧ください。

Cloud IDS エンドポイントの説明を取得する

次の手順で IDS エンドポイントの説明を取得します。

コンソール

  1. Google Cloud コンソールで、[IDS エンドポイント] に移動します。

    [IDS エンドポイント] に移動

  2. [IDS エンドポイント] ページで、IDS エンドポイントの名前をクリックします。[エンドポイントの詳細] ページが表示されます。

gcloud

IDS エンドポイントの説明を取得するには、gcloud ids endpoints describe コマンドを使用します。

gcloud ids endpoints describe ENDPOINT_NAME \
    [--project=PROJECT_ID] \
    [--zone=ZONE] \
    [GCLOUD_WIDE_FLAG...]

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

  • ENDPOINT_NAME: エンドポイントの名前または ID。
  • PROJECT_ID: プロジェクトの ID。
  • ZONE: エンドポイントのゾーン。

API

Cloud IDS エンドポイントを取得するには、次のような HTTP GET リクエストを使用し、必要に応じて変数を置き換えます。

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME

Cloud IDS エンドポイントを一覧表示する

次の手順で、すべての IDS エンドポイントを一覧表示します。

コンソール

  1. Google Cloud コンソールで、[IDS エンドポイント] に移動します。

    [IDS エンドポイント] に移動

gcloud

IDS エンドポイントを一覧表示するには、gcloud ids endpoints list コマンドを使用します。

gcloud ids endpoints list \
    [--filter=EXPRESSION] \
    [--limit=LIMIT] \
    [--page-size=PAGE_SIZE] \
    [--sort-by=[FIELD,...]] \
    [--uri] \
    [GCLOUD_WIDE_FLAG...]

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

  • EXPRESSION: 一覧表示する各リソース項目にブール値フィルタを適用します。式が True と評価された場合、そのアイテムがリストされます。
  • LIMIT: 一覧表示するリソースの最大数。
  • PAGE_SIZE: ページあたりのリソースの最大数。
  • FIELD: 並べ替えるリソース フィールド キー名のカンマ区切りリスト。

API

ゾーン内のすべての Cloud IDS エンドポイントを一覧表示するには、次のような HTTP GET リクエストを使用し、必要に応じて変数を置き換えます。

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints

すべてのゾーンのすべての Cloud IDS エンドポイントを一覧表示するには、ZONE を次のようにハイフンに置き換えます。

GET https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/-/endpoints

Cloud IDS エンドポイントを削除する

IDS エンドポイントを削除する手順は次のとおりです。

コンソール

  1. Google Cloud コンソールで、[IDS エンドポイント] に移動します。

    [IDS エンドポイント] に移動

  2. [IDS エンドポイント] ページで、IDS エンドポイントの名前をクリックします。[エンドポイントの詳細] ページが表示されます。

  3. [エンドポイントを削除] をクリックします。

gcloud

IDS エンドポイントを削除するには、gcloud ids endpoints delete コマンドを使用します。

gcloud ids endpoints delete ENDPOINT_NAME \
    [--project=PROJECT_ID] \
    [--zone=ZONE] \
    [--no-async] \
    [GCLOUD_WIDE_FLAG...]

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

  • ENDPOINT_NAME: エンドポイントの名前または ID。
  • PROJECT_ID: プロジェクトの ID。
  • ZONE: エンドポイントのゾーン。

API

Cloud IDS エンドポイントを削除するには、次のような HTTP DELETE リクエストを使用し、必要に応じて変数を置き換えます。

DELETE https://ids.googleapis.com/v1/projects/PROJECT_NAME/locations/ZONE/endpoints?endpointId=ENDPOINT_NAME

省略可: 脅威の例外を構成する

Cloud IDS エンドポイントの作成または更新時に、--threat-exceptions フラグを使用してノイズの多いまたは不要な脅威 ID を無効にできます。次の例では、既存の Cloud IDS エンドポイント ENDPOINT_NAME を更新して、脅威 ID THREAT_ID1THREAT_ID2 を除外します。

gcloud ids endpoints update ENDPOINT_NAME \
    --threat-exceptions=THREAT_ID1,THREAT_ID2

脅威のログを表示する

脅威ログが生成されているかどうかを確認する手順は次のとおりです。

  1. Google Cloud コンソールで、[IDS の脅威] に移動します。

    [IDS の脅威] に移動

  2. 脅威名をクリックすると、その脅威の [脅威の詳細] のページが表示されます。

  3. [脅威] タブに戻ります。

  4. IDS エンドポイントの右側にある メニューをクリックし、[脅威ログを表示する] を選択します。

次のステップ