使用記錄指標和自訂資訊主頁,以視覺化方式呈現 DNS Armor 的進階威脅偵測記錄

1. 簡介與總覽

DNS Armor 採用 Infoblox 技術,是一項全代管服務,可對 Google Cloud 工作負載提供 DNS 層級安全防護。這項服務的進階威脅偵測工具可在攻擊鏈的最早階段 (DNS 查詢),偵測惡意活動,且不會增加作業複雜度或效能負擔。

本程式碼研究室提供逐步操作說明,協助您設定及測試 DNS Armor 服務。您將設定必要的網路基礎架構、建立威脅偵測工具、模擬 DNS 威脅來測試服務,最後使用自訂 Cloud Monitoring 資訊主頁,以圖表呈現及分析威脅記錄。

建構項目

在本程式碼研究室中,您將佈建下列資源:

  • 一個虛擬私有雲網路 (network-a),其中包含在 us-east4us-central1 區域中佈建的子網路和虛擬機器。
  • 已設定檢查 DNS 查詢的 DNS Armor 進階威脅偵測工具。
  • 根據 DNS 威脅記錄建立記錄指標。
  • 自訂資訊主頁,可將 DNS 威脅記錄視覺化。

cfe28f2c17ca2660.png

課程內容

  • 如何佈建必要的網路資源,包括虛擬私有雲和虛擬機器。
  • 如何部署進階威脅偵測工具,並排除特定網路。
  • 如何使用威脅模擬指令碼驗證威脅偵測設定。
  • 如何使用記錄指標和自訂資訊主頁,以圖表呈現 DNS 威脅記錄。

軟硬體需求

  • Google Cloud 專案。
  • 存取 gcloud 指令列工具。

2. 必要條件

在本節中,您將執行下列工作:

  • 確認您的 Google Cloud 雲端專案符合必要的機構政策限制。
  • 確認使用者帳戶具備必要的 IAM 角色和權限。
  • 啟用本程式碼研究室所需的 Google Cloud API。
  • roles/logging.viewer 身分與存取權管理角色指派給 Compute Engine 服務帳戶。

機構政策限制

如要順利完成本程式碼研究室,請確認套用至專案的組織政策限制。某些政策可能會阻礙必要資源的佈建作業。下列限制可能會影響本程式碼研究室的設定:

  • constraints/gcp.resourceLocations:限制可建立資源的區域;本程式碼研究室需要 us-east4us-central1
  • constraints/compute.vmExternalIpAccess:禁止建立具有公開 IP 位址的虛擬機器,以免您未按照程式碼研究室使用 --no-address 標記,導致設定受到干擾。
  • constraints/compute.shieldedVm:強制建立受防護的 VM,但 Codelab 的 VM 建立指令並未指定這項設定,因此可能會導致錯誤。
  • constraints/gcp.restrictServiceUsage:限制可啟用的 Google Cloud API,如果不允許 compute.googleapis.comnetworksecurity.googleapis.comlogging.googleapis.commonitoring.googleapis.com,可能會封鎖程式碼研究室。

IAM 角色和權限

如要順利完成本程式碼研究室,請確認授予使用者的 IAM 角色和權限。如要完成本程式碼研究室,您必須具備下列 IAM 角色和權限。

  • 服務使用情形管理員 (roles/serviceusage.serviceUsageAdmin):啟用程式碼實驗室必要的 Google Cloud API。
  • Compute Network Admin (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):在 Logs Explorer 中查看及分析威脅記錄。

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. 佈建網路和運算資源

在本節中,您將執行下列工作:

  • 建立虛擬私有雲網路 network-a,並使用自訂子網路。
  • network-a 中設定 Cloud Router 和 Cloud NAT,以進行網際網路輸出。
  • 建立防火牆規則,允許從 IAP 的 IP 範圍存取 VM 的 SSH 連線 (適用於 network-a)。
  • network-a 中佈建沒有公開 IP 位址的 Linux 虛擬機器。

建立虛擬私有雲和子網路

1. 在 us-east4us-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 威脅偵測工具

在本節中,您將執行下列工作:

  • 建立威脅偵測工具。
  • 列出威脅偵測工具。

虛擬私有雲、子網路和虛擬機器現已佈建完成,接下來請建立 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 查詢名稱。
  • 嚴重程度:與偵測到的威脅相關聯的嚴重程度 (高、中、低或僅供參考)。詳情請參閱 Infoblox 的嚴重程度定義
  • location:提供回應的 Google Cloud 區域。
  • threat:偵測到的威脅名稱。
  • threatId:專屬威脅 ID。

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 查詢

在本節中,您將執行下列工作:

  • 透過 SSH 連線至 VM。
  • 在 VM 上安裝 Git。
  • 複製 Infoblox 威脅偵測模擬工具存放區。
  • 執行指令碼並分析產生的輸出內容。

從 VM 產生模擬的惡意 DNS 查詢,驗證設定。

1. 透過 SSH 連線至 vm-a-use4。在 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 威脅類型偵測率。

2ed3402eed85ff0a.png

7. 結束 SSH 工作階段,返回 Cloud Shell

exit

8. 查看自訂資訊主頁

查看資訊主頁

1. 在 Google Cloud 控制台頂端的搜尋欄位中輸入「資訊主頁」,然後點選頂端結果下方的「資訊主頁」

b28134f84c44d872.png

2. 在搜尋欄位中搜尋 DNS Armor - Custom Dashboard,然後按一下 DNS Armor - Custom Dashboard 開啟資訊主頁。

490ec7642ef95ffc.png

3. 查看資訊主頁。

4ff503f457f67399.png

資訊主頁中的小工具

本節將概述自訂資訊主頁上的各種小工具,說明其功能和代表的資料。

  • 威脅記錄:堆疊長條圖,顯示專案中所有納入網路在指定時間範圍內產生的威脅記錄。
  • 各區域的威脅記錄:堆疊長條圖,顯示特定時間範圍內依區域分組的威脅記錄。
  • 依威脅分組:圓餅圖,根據指定時間範圍內的威脅類型,將威脅記錄分類。
  • 熱門清單 - ThreatID:列出指定時間範圍內的前 30 個 ThreatID。
  • 依嚴重性分組:圓餅圖,依嚴重性等級將指定時間範圍內的威脅記錄分組。
  • 前 30 名清單 - 來源:列出指定時間範圍內前 30 名的執行個體 ID (來源 VM)。
  • 依網域分組:堆疊長條圖,依查詢中找到的網域名稱將威脅記錄分組。

9. 清除

為避免產生後續費用,請刪除本程式碼研究室中建立的資源。執行清除指令時,請務必退出 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. 刪除虛擬私有雲。

gcloud compute networks delete network-a --quiet

10. 恭喜

恭喜!您已成功設定、部署及查看 DNS Armor 威脅偵測記錄。您已獲得實作經驗,瞭解如何保護 Google Cloud 環境免於 DNS 威脅,以及如何建構自訂監控解決方案,取得安全洞察。

在本程式碼研究室中,您已完成以下操作:

  • 已佈建包含虛擬私有雲、子網路和虛擬機器的網路環境。
  • 使用 Cloud NAT 為私人 VM 設定網際網路輸出。
  • 部署 DNS Armor 威脅偵測工具。
  • 模擬 DNS 威脅,並驗證威脅偵測設定。
  • 從 DNS 威脅記錄建立自訂記錄指標。
  • 建構自訂 Cloud Monitoring 資訊主頁,以視覺化方式呈現及分析 DNS 威脅。

後續步驟

參考文件