1. 概要
Infoblox を活用した DNS Armor は、Google Cloud ワークロードに DNS レイヤのセキュリティを提供するフルマネージドサービスです。高度な脅威検出機能は、運用上の複雑さやパフォーマンスのオーバーヘッドを増やすことなく、攻撃チェーンの最も早い段階である DNS クエリで悪意のあるアクティビティを検出するように設計されています。
この Codelab では、 DNS Armor サービスを構成してテストする手順について説明します。必要なネットワーク インフラストラクチャを設定し、脅威検出機能を作成し、DNS 脅威をシミュレートしてサービスをテストします。最後に、カスタム Cloud Monitoring ダッシュボードを使用して脅威ログを可視化して分析します。
構築する内容
この Codelab では、次のリソースをプロビジョニングします。
us-east4リージョンとus-central1リージョンにサブネットと仮想マシンがプロビジョニングされた 1 つの VPC ネットワーク(network-a)。- DNS クエリを検査するように構成された DNS Armor の高度な脅威検出機能。
- DNS 脅威ログに基づくログベースの指標。
- DNS 脅威ログを可視化するカスタム ダッシュボード。

学習内容
- VPC や仮想マシンなど、必要なネットワーク リソースをプロビジョニングする方法。
- 高度な脅威検出機能をデプロイし、特定のネットワークを除外する方法。
- 脅威シミュレーション スクリプトを使用して脅威検出構成を検証する方法。
- ログベースの指標とカスタム ダッシュボードを使用して DNS 脅威ログを可視化する方法。
必要なもの
- Google Cloud プロジェクト
gcloudコマンドライン ツールへのアクセス。
2. 前提条件
このセクションでは、次のタスクを行います。
- Google Cloud プロジェクトが、必要な組織のポリシーの制約を満たしていることを確認します。
- ユーザー アカウントに必要な IAM ロールと権限があることを確認します。
- この Codelab に不可欠な Google Cloud API を有効にします。
- Compute Engine サービス アカウントに
roles/logging.viewerIAM ロールを割り当てます。
組織のポリシーの制約
この Codelab を正常に完了するには、プロジェクトに適用されている組織のポリシーの制約を確認してください。特定のポリシーによって、必要なリソースのプロビジョニングが妨げられる可能性があります。次の制約は、この Codelab の構成に影響する可能性があります。
constraints/gcp.resourceLocations: リソースを作成できるリージョンを制限します。この Codelab ではus-east4とus-central1が必要です。constraints/compute.vmExternalIpAccess: パブリック IP アドレスを持つ仮想マシンの作成を防ぎます。Codelab の--no-addressフラグの使用に従わない場合、設定が妨げられる可能性があります。constraints/compute.shieldedVm: シールドされた VM の作成を強制します。Codelab の VM 作成コマンドでは指定されていないため、エラーが発生する可能性があります。constraints/gcp.restrictServiceUsage: 有効にできる Google Cloud API を制限します。compute.googleapis.com、networksecurity.googleapis.com、logging.googleapis.com、monitoring.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-aを作成します。 network-aでインターネット下り(外向き)用の Cloud Router と Cloud NAT を構成します。network-aの IAP の IP 範囲から VM への SSH アクセスを許可するファイアウォール ルールを作成します。- パブリック IP アドレスのない
network-aに 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
インターネット下り(外向き)を構成する
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
ファイアウォール ルールを構成する
1. network-a のファイアウォール ルールを作成 して、IAP の IP 範囲からの SSH アクセスを許可します。Cloud Shell で次の gcloud コマンドを実行します。
gcloud compute firewall-rules create allow-ssh-iap-a \
--network=network-a \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20
仮想マシンを作成する
1. network-a. に Linux VM を作成します。
gcloud compute instances create vm-a-use4 \
--zone=us-east4-c \
--network=network-a \
--subnet=subnet-a-use4 \
--no-address \
--scopes=cloud-platform
gcloud compute instances create vm-a-usc1 \
--zone=us-central1-a \
--network=network-a \
--subnet=subnet-a-usc1 \
--no-address \
--scopes=cloud-platform
4. DNS 脅威検出機能を作成する
このセクションでは、次のタスクを行います。
- 脅威検出機能を作成します。
- 脅威検出機能を一覧表示します。
VPC、サブネット、仮想マシンがプロビジョニングされたので、次のステップでは DNS 脅威検出機能を作成します。
1. gcloud beta network-security dns-threat-detectors create コマンドを使用して、脅威検出機能を作成します。
gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--provider=infoblox
**2. 脅威検出機能を一覧表示 して、作成を確認します。
gcloud beta network-security dns-threat-detectors list --location=global
5. ログベースの指標を作成する
このセクションでは、次のタスクを行います。
- ログエントリについて理解する。
config.yamlファイルを作成する。- ログベースの指標を作成する。
1. ログエントリについて理解する 。脅威ログのドキュメントで、DNS Armor ログのすべてのフィールドの表を確認できます。このセクションでは、ログベースの指標の作成に使用する特定のフィールドについて説明します。
ログベースの指標の作成に使用するフィールドは、次のとおりです。
- vmInstanceId: Compute Engine VM インスタンス名。Compute Engine VM によって開始されたクエリにのみ使用されます。
- queryName: DNS クエリ名。
- severity: 検出された脅威の重大度(高、中、低、情報)。詳細については、Infoblox の 重大度レベルの定義をご覧ください。
- location: レスポンスの送信元となる Google Cloud リージョン。
- threat: 検出された脅威の名前。
- threatId: 脅威の固有識別子。
**2. config.yaml ファイルを作成します 。まず、touch
コマンドを使用して空の config.yaml ファイルを作成します。
touch config.yaml
3. config.yaml ファイルにデータを入力します 。このファイルでは、DNS Armor
脅威ログのログベースの指標を作成する方法を定義します。フィルタするログエントリ、それらのエントリから抽出するラベル、指標自体のプロパティを指定します。
任意のテキスト エディタで config.yaml ファイルを開き、次の内容を貼り付けます。
filter: |
resource.type="networksecurity.googleapis.com/DnsThreatDetector"
jsonPayload.dnsQuery.projectNumber="PROJECT_NUMBER"
labelExtractors:
InstanceId: EXTRACT(jsonPayload.dnsQuery.vmInstanceId)
QueryName: EXTRACT(jsonPayload.dnsQuery.queryName)
Severity: EXTRACT(jsonPayload.threatInfo.severity)
region: EXTRACT(jsonPayload.dnsQuery.location)
threat: EXTRACT(jsonPayload.threatInfo.threat)
threatId: EXTRACT(jsonPayload.threatInfo.threatId)
metricDescriptor:
labels:
- key: InstanceId
- key: threat
- key: Severity
- key: threatId
- key: region
- key: QueryName
metricKind: DELTA
unit: '1'
valueType: INT64
4. プロジェクト番号を更新します 。次の sed コマンドを使用して、PROJECT_NUMBER プレースホルダを環境変数の値に置き換えます。
sed -i "s/PROJECT_NUMBER/$PROJECT_NUMBER/g" config.yaml
5. ログベースの指標を作成します。最後に、Cloud Shell で次の gcloud コマンドを実行して指標を作成します。
gcloud logging metrics create dns-armor-log-based-metric --config-from-file=config.yaml
6. カスタム ダッシュボードを作成する
このセクションでは、次のタスクを行います。
dashboard.jsonファイルを作成する。- カスタム ダッシュボードを作成する
1. dashboard.json ファイルを作成します 。まず、touch
コマンドを使用して空の dashboard.json ファイルを作成します。
touch dashboard.json
**2. dashboard.json ファイルにデータを入力します 。dashboard.json
ファイルは、カスタム モニタリング ダッシュボードを構成し、ウィジェット、表示プロパティ、ログベースの指標の可視化、集計、フィルタリングの方法を定義します。
任意のテキスト エディタで dashboard.json ファイルを開き、次の内容を貼り付けます。
{
"displayName": "DNS Armor - Custom Dashboard",
"dashboardFilters": [],
"description": "",
"labels": {},
"mosaicLayout": {
"columns": 48,
"tiles": [
{
"height": 20,
"width": 24,
"widget": {
"title": "Threat Logs",
"id": "",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR",
"showLegend": false
},
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"legendTemplate": "",
"measures": [],
"minAlignmentPeriod": "60s",
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
"outputFullDuration": false,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
}
},
{
"xPos": 24,
"height": 20,
"width": 24,
"widget": {
"title": "Threat Logs per region",
"id": "",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR",
"showLegend": false
},
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"legendTemplate": "",
"measures": [],
"minAlignmentPeriod": "60s",
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
"outputFullDuration": false,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"region\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
}
},
{
"yPos": 20,
"height": 20,
"width": 24,
"widget": {
"title": "Group by Threat",
"id": "",
"pieChart": {
"chartType": "DONUT",
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"measures": [],
"minAlignmentPeriod": "60s",
"sliceNameTemplate": "",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"threat\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"showLabels": false,
"showTotal": false,
"sliceAggregatedThreshold": 0
}
}
},
{
"yPos": 20,
"xPos": 24,
"height": 20,
"width": 24,
"widget": {
"title": "Top List - ThreatID",
"timeSeriesTable": {
"columnSettings": [
{
"column": "threatId",
"visible": true
},
{
"column": "threat",
"visible": true
},
{
"column": "project_id",
"visible": false
},
{
"column": "value",
"visible": true
}
],
"dataSets": [
{
"minAlignmentPeriod": "60s",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"threatId\"",
"metric.label.\"threat\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\"",
"pickTimeSeriesFilter": {
"direction": "TOP",
"numTimeSeries": 30,
"rankingMethod": "METHOD_MEAN"
}
}
}
}
],
"metricVisualization": "BAR"
}
}
},
{
"yPos": 40,
"height": 20,
"width": 24,
"widget": {
"title": "Group by Severity",
"id": "",
"pieChart": {
"chartType": "DONUT",
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"measures": [],
"minAlignmentPeriod": "60s",
"sliceNameTemplate": "",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"Severity\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"showLabels": false,
"showTotal": false,
"sliceAggregatedThreshold": 0
}
}
},
{
"yPos": 40,
"xPos": 24,
"height": 20,
"width": 24,
"widget": {
"title": "Top List - Source",
"id": "",
"timeSeriesTable": {
"columnSettings": [
{
"column": "InstanceId",
"visible": true
},
{
"column": "region",
"visible": true
},
{
"column": "project_id",
"visible": true
},
{
"column": "value",
"visible": true
}
],
"dataSets": [
{
"minAlignmentPeriod": "60s",
"tableTemplate": "",
"timeSeriesQuery": {
"outputFullDuration": true,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"InstanceId\"",
"metric.label.\"region\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\"",
"pickTimeSeriesFilter": {
"direction": "TOP",
"numTimeSeries": 30,
"rankingMethod": "METHOD_MEAN"
}
},
"unitOverride": ""
}
}
],
"displayColumnType": false,
"metricVisualization": "BAR"
}
}
},
{
"yPos": 60,
"height": 20,
"width": 48,
"widget": {
"title": "Group by Domains",
"id": "",
"xyChart": {
"chartOptions": {
"displayHorizontal": false,
"mode": "COLOR",
"showLegend": false
},
"dataSets": [
{
"breakdowns": [],
"dimensions": [],
"legendTemplate": "",
"measures": [],
"minAlignmentPeriod": "60s",
"plotType": "STACKED_BAR",
"targetAxis": "Y1",
"timeSeriesQuery": {
"outputFullDuration": false,
"timeSeriesFilter": {
"aggregation": {
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"metric.label.\"QueryName\""
],
"perSeriesAligner": "ALIGN_SUM"
},
"filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
},
"unitOverride": ""
}
}
],
"thresholds": [],
"yAxis": {
"label": "",
"scale": "LINEAR"
}
}
}
}
]
}
}
**2. カスタム ダッシュボードを作成します 。Cloud Shell で次の gcloud コマンドを実行します。
gcloud monitoring dashboards create --config-from-file=dashboard.json
7. エミュレートされた悪意のある DNS クエリを生成する
このセクションでは、次のタスクを行います。
- VM に SSH 接続します。
- VM に Git をインストールします。
- Infoblox 脅威検出シミュレータ リポジトリのクローンを作成します。
- スクリプトを実行して、生成された出力を分析します。
VM からエミュレートされた悪意のある DNS クエリを生成して、設定を検証します。
1. vm-a-use4 に SSH 接続します 。Cloud Shell で次の gcloud コマンドを実行します。
gcloud compute ssh vm-a-use4 --zone=us-east4-c
**2. VM に Git をインストールします 。
sudo apt-get install git -y
3. Infoblox 脅威検出シミュレータ リポジトリのクローンを作成します 。
git clone https://github.com/infobloxopen/ib-threat-detection-simulator
4. ディレクトリをシミュレータのディレクトリに変更します 。
cd ib-threat-detection-simulator/threat_detection_simulator/
5. スクリプトを実行 して、生成された出力を分析します。
スクリプトを実行可能にします。
chmod +x run.sh
スクリプトを実行します。
./run.sh info basic
6. 出力例:
次の図は、network-a 内の VM に表示されるスクリプト出力の一部を示しています。この出力には、テスト
スクリプトがエミュレートしたさまざまな DNS 脅威タイプの検出率が詳しく示されています。

7. SSH セッションを終了して、Cloud Shell に戻ります 。
exit
8. カスタム ダッシュボードを表示する
ダッシュボードを表示する
1. Google Cloud コンソールの上部にある検索フィールドに「ダッシュボード」と入力 し、上位の結果で [ダッシュボード] をクリックします。

**2. 検索フィールドで「DNS Armor - Custom Dashboard」を 検索し、[DNS Armor - Custom Dashboard] をクリックしてダッシュボードを開きます。

3. ダッシュボードを表示します 。

ダッシュボードのウィジェット
このセクションでは、カスタム ダッシュボードで使用できるさまざまなウィジェットの概要、機能、表示されるデータについて説明します。
- 脅威ログ: 指定した期間にプロジェクト内のすべてのネットワークで生成された脅威ログを表示する積み上げ棒グラフ。
- リージョン別の脅威ログ: 定義された期間にわたる脅威ログをリージョン別にグループ化した積み上げ棒グラフ。
- 脅威でグループ化: 指定された期間内の脅威タイプに基づいて脅威ログを分類する円グラフ。
- 上位リスト - ThreatID: 指定された対象の期間内の上位 30 個の脅威 ID を示すリスト。
- 重大度でグループ化: 定義された対象の期間内の重大度別に脅威ログをグループ化する円グラフ。
- 上位リスト - ソース: 指定された期間内の上位 30 個のインスタンス ID(ソース VM)を示すリスト。
- ドメインでグループ化: クエリで見つかったドメイン名で脅威ログをグループ化した積み上げ棒グラフ。
9. クリーンアップ
今後の課金を避けるため、この Codelab で作成したリソースを削除します。 クリーンアップ コマンドを実行するときは、必ず VM のシェルを終了して Cloud Shell に戻ってください。
1. カスタム ダッシュボードを削除します。
ダッシュボード ID は作成時に動的に生成されるため、まず表示名を使用してリソース名を取得する必要があります。
DASHBOARD_NAME=$(gcloud monitoring dashboards list --filter="displayName='DNS Armor - Custom Dashboard'" --format='value(name)')
gcloud monitoring dashboards delete $DASHBOARD_NAME --quiet
**2. ログベースの指標を削除します。
gcloud logging metrics delete dns-armor-log-based-metric --quiet
3. VM を削除します。
gcloud compute instances delete vm-a-use4 --zone=us-east4-c --quiet
gcloud compute instances delete vm-a-usc1 --zone=us-central1-a --quiet
4. ファイアウォール ルールを削除します。
gcloud compute firewall-rules delete allow-ssh-iap-a --quiet
5. Cloud NAT ゲートウェイを削除します。
gcloud compute routers nats delete nat-a-use4 --router=router-a-use4 --region=us-east4 --quiet
gcloud compute routers nats delete nat-a-usc1 --router=router-a-usc1 --region=us-central1 --quiet
6. Cloud Router を削除します。
gcloud compute routers delete router-a-use4 --region=us-east4 --quiet
gcloud compute routers delete router-a-usc1 --region=us-central1 --quiet
7. サブネットを削除します。
gcloud compute networks subnets delete subnet-a-use4 --region=us-east4 --quiet
gcloud compute networks subnets delete subnet-a-usc1 --region=us-central1 --quiet
8. DNS 脅威検出機能を削除します。
gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet
9. VPC を削除します。
gcloud compute networks delete network-a --quiet
10. 完了
おめでとうございます!DNS Armor 脅威検出ログの構成、デプロイ、可視化が正常に完了しました。Google Cloud 環境を DNS ベースの脅威から保護し、セキュリティ分析情報用のカスタム モニタリング ソリューションを構築する実践的な経験を積むことができました。
この Codelab では、次のことを行いました。
- VPC、サブネット、仮想マシンを使用してネットワーク環境をプロビジョニングしました。
- Cloud NAT を使用して、プライベート VM のインターネット下り(外向き)を構成しました。
- DNS Armor 脅威検出機能をデプロイしました。
- DNS 脅威をシミュレートし、脅威検出構成を検証しました。
- DNS 脅威ログからカスタムのログベースの指標を作成しました。
- DNS 脅威を可視化して分析するカスタム Cloud Monitoring ダッシュボードを構築しました。