DNS Armor の高度な脅威検出のスタートガイド

1. 概要

Infoblox を活用した DNS Armor は、Google Cloud ワークロードに DNS レイヤのセキュリティを提供するフルマネージド サービスです。高度な脅威検出機能は、運用上の複雑さやパフォーマンスのオーバーヘッドを増やすことなく、攻撃チェーンの最も早い段階である DNS クエリで悪意のあるアクティビティを検出するように設計されています。

この Codelab では、 DNS Armor サービスを構成してテストする手順について説明します。必要なネットワーク インフラストラクチャを設定し、脅威検出機能を作成し、DNS 脅威をシミュレートしてサービスをテストします。最後に、ログ エクスプローラを使用して脅威ログを分析します。

構築するもの

この Codelab では、次のリソースをプロビジョニングします。

  • 2 つの VPC ネットワーク: network-anetwork-b
  • network-a には、us-east4 リージョンと us-central1 リージョンのサブネットと仮想マシンが含まれます。
  • network-b には、us-east4 のサブネットと仮想マシンのみが含まれます。
  • DNS クエリを検査するように構成された DNS Armor の高度な脅威検出機能。

75d6eeb807735645.png

学習内容

  • VPC や仮想マシンなど、必要なネットワーク リソースをプロビジョニングする方法。
  • 高度な脅威検出機能をデプロイし、特定のネットワークを除外する方法。
  • 脅威シミュレーション スクリプトを使用して脅威検出構成を検証する方法。
  • ログ エクスプローラで脅威ログを分析する方法。

必要なもの

  • Google Cloud プロジェクト
  • gcloud コマンドライン ツールへのアクセス

2. 前提条件

このセクションでは、次のタスクを行います。

  • Google Cloud プロジェクトが、必要な組織のポリシーの制約を満たしていることを確認します。
  • ユーザー アカウントに必要な IAM ロールと権限があることを確認します。
  • この Codelab に不可欠な Google Cloud API を有効にします。
  • Compute Engine サービス アカウントに roles/logging.viewer IAM ロールを割り当てます。

組織のポリシーの制約

この Codelab を正常に完了するには、プロジェクトに適用されている組織のポリシーの制約を確認してください。特定のポリシーによって、必要なリソースのプロビジョニングが妨げられる可能性があります。次の制約は、この Codelab の構成に影響する可能性があります。

  • constraints/gcp.resourceLocations: リソースを作成できるリージョンを制限します。この Codelab では us-east4us-central1 が必要です。
  • constraints/compute.vmExternalIpAccess: パブリック IP アドレスを持つ仮想マシンの作成を防ぎます。Codelab の --no-address フラグの使用に従わない場合、設定が妨げられる可能性があります。
  • constraints/compute.shieldedVm: シールドされた VM の作成を強制します。Codelab の VM 作成コマンドでは指定されていないため、エラーが発生する可能性があります。
  • constraints/gcp.restrictServiceUsage: 有効にできる Google Cloud API を制限します。compute.googleapis.comnetworksecurity.googleapis.comlogging.googleapis.commonitoring.googleapis.com が許可されていない場合、Codelab がブロックされる可能性があります。

IAM のロールと権限

この Codelab を正常に完了するには、ユーザーに付与されている IAM ロールと権限を確認してください。この Codelab を完了するには、次の IAM ロールと権限が必要です。

  • Service Usage 管理者roles/serviceusage.serviceUsageAdmin): Codelab に必要な Google Cloud API を有効にする。
  • Compute ネットワーク管理者roles/compute.networkAdmin): VPC ネットワーク、サブネット、Cloud NAT を作成して管理する。
  • Compute セキュリティ管理者roles/compute.securityAdmin): 仮想マシンへの SSH アクセスのファイアウォール ルールを構成する。
  • Compute インスタンス管理者(v1)roles/compute.instanceAdmin.v1): ラボに必要な仮想マシンを作成して管理する。
  • IAP で保護されたトンネル ユーザーroles/iap.tunnelResourceAccessor): Identity-Aware Proxy(IAP)を介して SSH を使用して仮想マシンに接続する。
  • ネットワーク セキュリティ管理者roles/networksecurity.admin): DNS Armor 脅威検出機能を作成して管理する。
  • ログ閲覧者roles/logging.viewer): ログ エクスプローラで脅威ログを表示して分析する。

Google Cloud API

必要な Google Cloud API がプロジェクトで有効になっていることを確認してください。

1. 必要な API を有効にするには、Cloud Shell で次の gcloud コマンドを実行します。

gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com

**2. API が有効になっていることを確認するには、Cloud Shell で次の gcloud コマンドを実行します。

gcloud services list --enabled

Compute Engine サービス アカウント

テスト スクリプトには、Cloud Logging から脅威ログを読み取る権限が必要です。スクリプトはデフォルトの Compute Engine サービス アカウントを使用する VM から実行されるため、このサービス アカウントに roles/logging.viewer IAM ロールを割り当てる必要があります。

1. 環境変数を設定するには、Cloud Shell で次のコマンドを実行します。

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

**2. Compute Engine SA にログ閲覧者のロールを付与する 。Cloud Shell で次の gcloud コマンドを実行します。

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"

3. 基本的な環境設定

このセクションでは、次のタスクを行います。

  • カスタム サブネットを使用して VPC ネットワーク(network-anetwork-b)を作成します。
  • network-anetwork-b の両方で、インターネット下り(外向き)用に Cloud Router と Cloud NAT を構成します。
  • network-anetwork-b の両方で、IAP の IP 範囲から VM への SSH アクセスを許可するファイアウォール ルールを作成します。
  • パブリック IP アドレスなしで、network-anetwork-b の両方に Linux 仮想マシンをプロビジョニングします。

VPC とサブネットを作成する

1. us-east4 リージョンと us-central1 リージョンに network-a とそのサブネットを作成する 。Cloud Shell で次の gcloud コマンドを実行します。

gcloud compute networks create network-a --subnet-mode=custom
gcloud compute networks subnets create subnet-a-use4 \
--network=network-a \
--range=10.10.0.0/24 \
--region=us-east4
gcloud compute networks subnets create subnet-a-usc1 \
--network=network-a \
--range=10.10.1.0/24 \
--region=us-central1

**2. us-east4 リージョンに network-b とそのサブネットを作成する 。Cloud Shell で次の gcloud コマンドを実行します。

gcloud compute networks create network-b --subnet-mode=custom
gcloud compute networks subnets create subnet-b-use4 \
--network=network-b \
--range=10.20.0.0/24 \
--region=us-east4

インターネット下り(外向き)を構成する

1. network-a 用に Cloud Router と Cloud NAT を作成する 。これにより、パブリック IP を持たない VM のインターネット下り(外向き)が可能になります。

gcloud compute routers create router-a-use4 \
--network=network-a \
--region=us-east4
gcloud compute routers nats create nat-a-use4 \
--router=router-a-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
gcloud compute routers create router-a-usc1 \
--network=network-a \
--region=us-central1
gcloud compute routers nats create nat-a-usc1 \
--router=router-a-usc1 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-central1

**2. network-b 用に Cloud Router と Cloud NAT を作成する 。これにより、パブリック IP を持たない VM のインターネット下り(外向き)が可能になります。

gcloud compute routers create router-b-use4 \