使用安全狀態分析

本頁面說明如何透過 Security Command Center 管理安全狀態分析發現項目。

安全狀態分析是 Security Command Center 的內建服務,可掃描雲端環境中的資源,並針對偵測到的錯誤設定產生發現項目。

如要接收安全狀態分析發現項目,必須在 Security Command Center 的「Services」(服務) 設定中啟用這項服務。

如要建立與 Amazon Web Services (AWS) 資源相關的發現項目,Security Command Center 必須連線至 AWS。

您可以在Google Cloud 控制台和使用 Security Command Center API,搜尋安全狀態分析偵測工具的發現項目。

如要瞭解掃描類型,請參閱「安全狀態分析掃描類型」。

如要瞭解何時會出現發現項目,請參閱「安全狀態分析偵測延遲時間」。

事前準備

如要取得管理安全狀態分析發現項目的權限,請要求管理員在組織、資料夾或專案中,授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

啟用和停用偵測工具

停用偵測工具可能會影響有效發現項目的狀態。停用偵測工具後,現有的發現項目會自動標示為無效。

在組織層級啟用 Security Command Center 時,您可以停用安全狀態分析,或停用特定資料夾或專案的特定偵測工具。如果關閉資料夾和專案的安全狀態分析或偵測工具,則附加至這些資源中資產的任何現有發現項目,都會標示為「非作用中」。

Google Cloud 的下列安全狀態分析偵測工具預設為停用:

  • ALLOYDB_AUTO_BACKUP_DISABLED
  • ALLOYDB_CMEK_DISABLED
  • BIGQUERY_TABLE_CMEK_DISABLED
  • BUCKET_CMEK_DISABLED
  • CLOUD_ASSET_API_DISABLED
  • DATAPROC_CMEK_DISABLED
  • DATASET_CMEK_DISABLED
  • DISK_CMEK_DISABLED
  • DISK_CSEK_DISABLED
  • NODEPOOL_BOOT_CMEK_DISABLED
  • PUBSUB_CMEK_DISABLED
  • SQL_CMEK_DISABLED
  • SQL_NO_ROOT_PASSWORD
  • SQL_WEAK_ROOT_PASSWORD
  • VPC_FLOW_LOGS_SETTINGS_NOT_RECOMMENDED

控制台

如果已啟用「安全狀態分析」服務,您可以設定個別模組的啟用狀態。

  1. 在 Google Cloud 控制台中,前往 Security Health Analytics 的「Modules」(模組) 頁面。

    前往「Modules」(模組)

  2. 選取您的機構或專案。
  3. 在「Modules」(模組) 分頁的「Status」(狀態) 欄中,選取要啟用或停用的模組目前狀態,然後選取下列其中一項:
    • 啟用:啟用模組。
    • 停用:停用模組。

gcloud

gcloud scc manage services update 指令會更新 Security Command Center 服務或模組的狀態。

使用下列任何指令資料前,請先替換以下項目:

  • RESOURCE_TYPE:要更新的資源類型 (organization、folder 或 project)。
  • RESOURCE_ID:要更新的組織、資料夾或專案數字 ID。如果是專案,您也可以使用英數字元組成的專案 ID。
  • MODULE_NAME:要啟用或停用的模組名稱。如需有效值,請參閱「安全狀態分析內建偵測工具」。
  • NEW_STATE:ENABLED 表示啟用模組;DISABLED 表示停用模組;INHERITED 表示沿用父項資源的啟用狀態 (僅適用於專案和資料夾)。

將下列內容儲存至名為 request.json 的檔案:

{
  "MODULE_NAME": {
    "intendedEnablementState": "NEW_STATE"
  }
}

執行 gcloud scc manage services update 指令:

Linux、macOS 或 Cloud Shell

gcloud scc manage services update security-health-analytics \
    --RESOURCE_TYPE=RESOURCE_ID \
    --module-config-file=request.json

Windows (PowerShell)

gcloud scc manage services update security-health-analytics `
    --RESOURCE_TYPE=RESOURCE_ID `
    --module-config-file=request.json

Windows (cmd.exe)

gcloud scc manage services update security-health-analytics ^
    --RESOURCE_TYPE=RESOURCE_ID ^
    --module-config-file=request.json

您應該會收到類似以下的回覆。為求簡潔,這個範例僅顯示所有「安全狀態分析」模組的一部分。

effectiveEnablementState: ENABLED
intendedEnablementState: ENABLED
modules:
  ACCESS_AWSCLOUDSHELLFULLACCESS_RESTRICTED:
    effectiveEnablementState: DISABLED
  ACCESS_KEYS_ROTATED_90_DAYS_LESS:
    effectiveEnablementState: ENABLED
  ACCESS_TRANSPARENCY_DISABLED:
    effectiveEnablementState: ENABLED
  ADMIN_SERVICE_ACCOUNT:
    effectiveEnablementState: ENABLED
  ALLOYDB_AUTO_BACKUP_DISABLED:
    effectiveEnablementState: DISABLED
name: projects/1070293378382/locations/global/securityCenterServices/SECURITY_HEALTH_ANALYTICS
updateTime: '2026-02-11T21:15:41.269584764Z'

REST

Security Command Center Management API 的 RESOURCE_TYPE.locations.securityCenterServices.patch 方法會更新 Security Command Center 服務或模組的狀態。

使用任何要求資料之前,請先修改下列項目的值:

  • RESOURCE_TYPE:要更新的資源類型 (organizations、folders 或 projects)。
  • QUOTA_PROJECT:用於追蹤帳單和配額的專案 ID。
  • RESOURCE_ID:要更新的組織、資料夾或專案數字 ID。如果是專案,您也可以使用英數字元組成的專案 ID。
  • MODULE_NAME:要啟用或停用的模組名稱。如需有效值,請參閱「安全狀態分析內建偵測工具」。
  • NEW_STATE:ENABLED 表示啟用模組;DISABLED 表示停用模組;INHERITED 表示沿用父項資源的啟用狀態 (僅適用於專案和資料夾)。

HTTP 方法和網址:

PATCH https://securitycentermanagement.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/global/securityCenterServices/security-health-analytics?updateMask=modules

JSON 要求主體:

{
  "modules": {
    "MODULE_NAME": {
      "intendedEnablementState": "NEW_STATE"
    }
  }
}

請展開以下其中一個選項,以傳送要求:

您應該會收到類似以下的回覆。為求簡潔,這個範例僅顯示所有「安全狀態分析」模組的一部分。

{
  "effectiveEnablementState": "ENABLED",
  "intendedEnablementState": "ENABLED",
  "modules": {
    "ACCESS_AWSCLOUDSHELLFULLACCESS_RESTRICTED": {
      "effectiveEnablementState": "DISABLED"
    },
    "ACCESS_KEYS_ROTATED_90_DAYS_LESS": {
      "effectiveEnablementState": "ENABLED"
    },
    "ACCESS_TRANSPARENCY_DISABLED": {
      "effectiveEnablementState": "ENABLED"
    },
    "ADMIN_SERVICE_ACCOUNT": {
      "effectiveEnablementState": "ENABLED"
    },
    "ALLOYDB_AUTO_BACKUP_DISABLED": {
      "effectiveEnablementState": "DISABLED"
    }
  },
  "name": "projects/1070293378382/locations/global/securityCenterServices/SECURITY_HEALTH_ANALYTICS",
  "updateTime": "2026-02-11T21:15:41.269584764Z"
}

在 Google Cloud 控制台中篩選發現項目

大型組織可能需要審查、分類及追蹤整個部署作業中的許多安全漏洞發現項目。您可以使用 Google Cloud 控制台中的 Security Command Center「Vulnerabilities」(安全漏洞) 和「Findings」(發現項目) 頁面提供的篩選器,專注處理整個組織中嚴重性最高的問題,並依資產類型、專案等條件查看安全漏洞。

如要進一步瞭解如何篩選安全漏洞發現項目,請參閱「在 Security Command Center 篩選安全漏洞發現項目」。

使用案件管理發現項目

Security Command Center 會在資安營運控制台中,自動為威脅、有害組合和相關發現項目建立案件。一個案件可以包含多個相關發現項目。

案件可與您偏好的票證系統整合,您可以使用案件指派擁有者、查看相關資訊,以及透過應對手冊自動執行應變工作流程,藉此管理發現項目的調查和修復作業。

如果發現項目有對應的案件,您可以在發現項目的詳細資料頁面中,找到該案件的連結。從「發現項目」頁面開啟發現項目的詳細資料頁面。

如要進一步瞭解案件,請參閱「案件總覽」。

忽略發現項目

如要控管 Google Cloud 控制台中的發現項目數量,您可以手動或透過程式忽略個別發現項目,也可以建立忽略規則,根據您定義的篩選器自動忽略發現項目。您可以使用兩種忽略規則來控制發現項目數量:

  • 靜態忽略規則:無限期忽略日後的發現項目。
  • 動態忽略規則,可暫時忽略目前「和」日後的發現項目。

建議您只使用動態忽略規則,減少需要手動審查的發現項目數量。為避免混淆,建議不要同時使用靜態和動態忽略規則。如要比較這兩種規則類型,請參閱「忽略規則類型」。

在 Google Cloud 控制台中忽略的發現項目會隱藏並靜音,但仍會記錄下來,用於稽核和法規遵循。您隨時可以查看或取消忽略發現項目。詳情請參閱「略過 Security Command Center 中的發現項目」。

使用安全標記標示資產和發現項目

您可以使用安全標記,在 Security Command Center 中為發現項目和資產新增自訂屬性。安全標記可讓您找出高優先順序的關注領域 (例如正式版專案),並使用錯誤和事件追蹤號碼標記發現項目等。

如果是資產,您只能在 Security Command Center 支援的資產中新增安全標記。如需支援的資產清單,請參閱「Security Command Center 支援的資產類型」。

將資產加入許可清單

雖然不建議這麼做,但您可以為資產新增專屬安全標記,隱藏不必要的發現項目,這樣安全狀態分析偵測工具就不會為這些資產建立安全發現項目。

如要控管發現項目數量,建議您忽略發現項目,這是最有效的方法。如果發現項目涉及隔離的資產,或在可接受的業務參數範圍內,則可忽略,不需審查。

將專屬安全標記套用至資產後,資產就會加入安全狀態分析的許可清單,系統會在下次批次掃描時,將這些資產的所有發現項目標示為已解決。

專屬安全性標記必須直接套用至資產,而非發現項目,詳情請參閱本頁後續的「許可清單運作方式」一節。如果您對發現項目套用標記,基礎資產仍可產生發現項目。

許可清單的運作方式

每個安全狀態分析偵測工具都有專屬的許可清單標記類型,格式為 allow_FINDING_TYPE:true。將這個專用標記新增至 Security Command Center 支援的資產,即可將該資產從偵測政策中排除。

例如,如要排除發現項目類型 SSL_NOT_ENFORCED,請在相關 Cloud SQL 執行個體上設定安全標記 allow_ssl_not_enforced:true。指定的偵測工具不會為標記的資產建立發現項目。

如需完整的發現項目類型清單,請參閱安全狀態分析偵測工具清單。如要進一步瞭解資產安全標記和使用技巧,請參閱「使用安全標記為資產加上註解」。

資產類型

本節說明安全標記如何用於不同資產。

  • 許可清單資產:為資產 (例如 Cloud Storage bucket 或防火牆) 新增專屬標記後,下次執行批次掃描時,相關聯的發現項目就會標示為已解決。在標記移除之前,偵測工具不會為該資產產生新的發現項目,也不會更新現有的發現項目。

  • 許可清單專案:在專案資源中新增標記後,如果專案本身是掃描或目標資源,系統就會解決相關發現項目。不過,專案中的資產 (例如虛擬機器或加密編譯金鑰) 仍可能產生發現項目。只有在組織層級啟用 Security Command Center 進階方案,才能使用這項安全標記。

  • 許可清單資料夾:在資料夾資源中新增標記後,如果資料夾本身是掃描或目標資源,系統會解決相關發現項目。不過,資料夾中的資產 (包括專案) 仍可能產生發現項目。只有在組織層級啟用 Security Command Center 進階方案,才能使用這項安全標記。

  • 支援多項資產的偵測工具:如果偵測工具支援多種資產類型,您必須為每項資產套用專屬標記。舉例來說,KMS_PUBLIC_KEY 偵測工具支援 CryptoKey 和 KeyRing Cloud Key Management Service 資產。如果將 allow_kms_public_key:true 標記套用至 CryptoKey 資產,系統會解決該資產的 KMS_PUBLIC_KEY 發現項目。不過,系統仍可為 KeyRing 資產產生發現項目。

安全標記只會在批次掃描期間更新,不會在即時掃描期間更新。如果移除專屬安全標記,且資產有安全漏洞,可能需要最多 24 小時,系統才會刪除標記並寫入發現項目。

特殊案例偵測工具:客戶提供的加密金鑰

DISK_CSEK_DISABLED 偵測工具預設為關閉。如要使用這項偵測工具,您必須標記要使用自行管理加密金鑰的資產。

如要為特定資產啟用 DISK_CSEK_DISABLED 偵測工具,請將值為 true 的安全性標記 enforce_customer_supplied_disk_encryption_keys 套用至資產。

依發現項目類型查看有效發現項目數量

您可以使用 Google Cloud 控制台或 Google Cloud CLI,依發現項目類型查看有效的發現項目數量。

控制台

Google Cloud 控制台可讓您查看各個發現項目類型的有效發現項目數量。

如要依發現項目類型查看安全狀態分析發現項目,請按照下列步驟操作:

  1. 如要顯示安全狀態分析發現項目,請前往舊版「安全漏洞」頁面。

    前往「安全漏洞」

  2. 如要依各發現項目類型的有效發現項目數量排序,請按一下「Active」(有效) 欄標題。

gcloud

如要使用 gcloud CLI 取得所有有效發現項目的數量,請查詢 Security Command Center,取得安全狀態分析來源 ID。接著,您可以使用來源 ID 查詢作用中發現項目的數量。

步驟 1:取得來源 ID

如要取得來源 ID,請執行下列其中一個指令:

  • 如果您在組織層級啟用 Security Command Center,請執行下列指令:

    gcloud scc sources describe organizations/ORGANIZATION_ID \
        --source-display-name="Security Health Analytics"
    
  • 如果您是在專案層級啟用 Security Command Center,請執行下列指令:

    gcloud scc sources describe projects/PROJECT_ID \
        --source-display-name="Security Health Analytics"
    

如果尚未啟用 Security Command Center API,系統會提示您啟用。啟用 Security Command Center API 後,請再次執行上述指令。這個指令會顯示如下的輸出內容:

description: Scans for deviations from a GCP security baseline.
displayName: Security Health Analytics
name: organizations/ORGANIZATION_ID/sources/SOURCE_ID

記下 SOURCE_ID,以便在下一步使用。

步驟 2:取得有效發現項目數量

使用您在上一個步驟中記下的 SOURCE_ID,篩選安全狀態分析的發現項目。下列 gcloud CLI 指令會依類別傳回發現項目數量。

  • 如果您在組織層級啟用 Security Command Center,請執行下列指令:

    gcloud scc findings group organizations/ORGANIZATION_ID/sources/SOURCE_ID \
        --group-by=category --page-size=PAGE_SIZE
    
  • 如果您是在專案層級啟用 Security Command Center,請執行下列指令:

    gcloud scc findings group projects/PROJECT_ID/sources/SOURCE_ID \
        --group-by=category --page-size=PAGE_SIZE
    

您可以將頁面大小設為任何值,上限為 1000。這個指令應會顯示類似下方的輸出內容,其中包含貴組織的結果:

groupByResults:
- count: '1'
properties:
  category: MFA_NOT_ENFORCED
- count: '3'
properties:
  category: ADMIN_SERVICE_ACCOUNT
- count: '2'
properties:
  category: API_KEY_APIS_UNRESTRICTED
- count: '1'
properties:
  category: API_KEY_APPS_UNRESTRICTED
- count: '2'
properties:
  category: API_KEY_EXISTS
- count: '10'
properties:
  category: AUDIT_CONFIG_NOT_MONITORED
- count: '10'
properties:
  category: AUDIT_LOGGING_DISABLED
- count: '1'
properties:
  category: AUTO_UPGRADE_DISABLED
- count: '10'
properties:
  category: BUCKET_IAM_NOT_MONITORED
- count: '10'
properties:
  category: BUCKET_LOGGING_DISABLED
nextPageToken: TOKEN
readTime: '2023-08-05T21:56:13.862Z'
totalSize: 50

透過程式管理發現項目

只要使用 Google Cloud CLI 和 Security Command Center 用戶端程式庫,您幾乎可以自動執行在Google Cloud 控制台中使用 Security Command Center 執行的任何操作。您也可以使用 gcloud CLI 修復許多發現項目。如要瞭解詳情,請參閱各項發現項目所述資源類型的說明文件:

如要以程式輔助方式匯出或列出資產,請使用 Cloud Asset Inventory API。詳情請參閱「匯出資產記錄和中繼資料」。

Security Command Center API 的資產方法和欄位已淘汰,將於 2024 年 6 月 26 日當天或之後移除。

在 2023 年 6 月 26 日前啟用 Security Command Center 的使用者,在這些方法移除前,仍可使用 Security Command Center API 的資產方法列出資產,但這些方法僅支援 Security Command Center 支援的資產。

如要瞭解如何使用已淘汰的資產 API 方法,請參閱「列出資產」。

掃描受 service perimeter 保護的專案

如果 service perimeter 封鎖特定專案和服務的存取權,您必須授予 Security Command Center 服務帳戶該 service perimeter 的傳入和傳出存取權。否則,「安全狀態分析」無法產生與受保護專案和服務相關的發現項目。

控制台

  1. 前往 Google Cloud 控制台的「VPC Service Controls」頁面。

    前往「VPC Service Controls」

  2. 選取您的機構。
  3. 在下拉式選單中,選取要授予存取權的 service perimeter 所在的存取權政策。

    與存取權政策相關聯的 service perimeter 會顯示在清單中。

  4. 按一下要更新的 service perimeter 名稱。

    如要找出需要修改的 service perimeter,請查看記錄中是否有顯示 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 違規事項的項目。在這些項目中,請檢查 servicePerimeterName 欄位:

    accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
  5. 按一下「Edit」(編輯)。

新增 egress 規則

  1. 按一下「輸出政策」。
  2. 按一下「Add an egress rule」(新增輸出規則)。
  3. 在「From」(來源) 部分,設定下列詳細資料:

    1. 在「Identities」(身分) >「Identity」(身分) 部分,選取「Select identities & groups」(選取身分和群組)。
    2. 按一下「Add identities」(新增身分)。
    3. 輸入 Cloud Security Command Center 服務代理的電子郵件地址。這個地址的格式如下:

      service-org-ORGANIZATION_ID@security-center-api.iam.gserviceaccount.com

      請將 ORGANIZATION_ID 替換成組織 ID。

    4. 選取服務代理或按下 ENTER 鍵,然後按一下「Add identities」(新增身分)。
  4. 在「To」(收件者) 部分,設定下列詳細資料:

    1. 在「資源」>「專案」部分,選取「所有專案」。
    2. 在「Operations or IAM roles」(作業或 IAM 角色) 部分,選取「Select operations」(選取作業)。
    3. 按一下「Add operations」,然後新增下列作業:

      • 新增 bigquery.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 binaryauthorization.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 cloudkms.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 logging.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 monitoring.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 cloudresourcemanager.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 storage.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 compute.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 iam.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 container.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。

新增 ingress 規則

  1. 按一下「輸入政策」。
  2. 按一下「Add an ingress rule」(新增輸入規則)。
  3. 在「From」(來源) 部分,設定下列詳細資料:

    1. 在「Identities」(身分) >「Identity」(身分) 部分,選取「Select identities & groups」(選取身分和群組)。
    2. 按一下「Add identities」(新增身分)。
    3. 輸入 Cloud Security Command Center 服務代理的電子郵件地址。這個地址的格式如下:

      service-org-ORGANIZATION_ID@security-center-api.iam.gserviceaccount.com

      請將 ORGANIZATION_ID 替換成組織 ID。

    4. 選取服務代理或按下 ENTER 鍵,然後按一下「Add identities」(新增身分)。
  4. 在「To」(收件者) 部分,設定下列詳細資料:

    1. 在「資源」>「專案」部分,選取「所有專案」。
    2. 在「Operations or IAM roles」(作業或 IAM 角色) 部分,選取「Select operations」(選取作業)。
    3. 按一下「Add operations」,然後新增下列作業:

      • 新增 bigquery.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 binaryauthorization.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 cloudkms.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 logging.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 monitoring.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 cloudresourcemanager.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 storage.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 compute.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 iam.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
      • 新增 container.googleapis.com 服務。
        1. 按一下「所有方法」。
        2. 按一下「新增所有方法」。
  5. 按一下「儲存」。

gcloud

  1. 如果尚未設定配額專案,請先設定。選擇已啟用 Access Context Manager API 的專案。

    gcloud config set billing/quota_project QUOTA_PROJECT_ID

    將 QUOTA_PROJECT_ID 替換為要用於計費和配額的專案 ID。

  2. 建立名為 egress-rule.yaml 的檔案,並在當中加入下列內容:

    - egressFrom:
        identities:
        - serviceAccount:service-org-ORGANIZATION_ID@security-center-api.iam.gserviceaccount.com
      egressTo:
        operations:
        - serviceName: bigquery.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: binaryauthorization.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: cloudkms.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: logging.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: monitoring.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: cloudresourcemanager.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: storage.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: compute.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: iam.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: container.googleapis.com
          methodSelectors:
          - method: '*'
        resources:
        - '*'

    或者,您可以使用 operations 指定出現 VPC Service Controls 違規事項的服務,並使用 resources 指定發現項目中顯示的專案。

    請將 ORGANIZATION_ID 替換成組織 ID。

  3. 建立名為 ingress-rule.yaml 的檔案,並在當中加入下列內容:

    - ingressFrom:
        identities:
        - serviceAccount:service-org-ORGANIZATION_ID@security-center-api.iam.gserviceaccount.com
        sources:
        - accessLevel: '*'
      ingressTo:
        operations:
        - serviceName: bigquery.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: binaryauthorization.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: cloudkms.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: logging.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: monitoring.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: cloudresourcemanager.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: storage.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: compute.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: iam.googleapis.com
          methodSelectors:
          - method: '*'
        - serviceName: container.googleapis.com
          methodSelectors:
          - method: '*'
        resources:
        - '*'

    或者,您可以使用 operations 指定出現 VPC Service Controls 違規事項的服務,並使用 resources 指定發現項目中顯示的專案。

    請將 ORGANIZATION_ID 替換成組織 ID。

  4. 將輸出規則新增至 perimeter:

    gcloud access-context-manager perimeters update PERIMETER_NAME \
        --set-egress-policies=egress-rule.yaml

    更改下列內容:

    • PERIMETER_NAME:perimeter 的名稱。例如:accessPolicies/1234567890/servicePerimeters/example_perimeter。

      如要找出需要修改的 service perimeter,請查看記錄中是否有顯示 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 違規事項的項目。在這些項目中,檢查 servicePerimeterName 欄位:

      accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME
  5. 將輸入規則新增至 perimeter:

    gcloud access-context-manager perimeters update PERIMETER_NAME \
        --set-ingress-policies=ingress-rule.yaml

    更改下列內容:

    • PERIMETER_NAME:perimeter 的名稱。例如:accessPolicies/1234567890/servicePerimeters/example_perimeter。

      如要找出需要修改的 service perimeter,請查看記錄中是否有顯示 RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER 違規事項的項目。在這些項目中,檢查 servicePerimeterName 欄位:

      accessPolicies/ACCESS_POLICY_ID/servicePerimeters/SERVICE_PERIMETER_NAME

Terraform

如要使用 Terraform 設定 perimeter,請參閱下列範例:

locals {
  access_policy_id    = "123456789012"
  perimeter_name      = "my_service_perimeter"
  project_number      = "123456789012"
  sha_service_account = "service-{project_number}@gcp-sa-scc.iam.gserviceaccount.com"
}

resource "google_access_context_manager_service_perimeter_ingress_policy" "scc_sha_ingress" {
  perimeter = "accessPolicies/${local.access_policy_id}/servicePerimeters/${local.perimeter_name}"

  ingress_from {
    identities = [
      "serviceAccount:${local.sha_service_account}"
    ]
    sources {
      access_level = "*"
    }
  }

  ingress_to {
    resources = [
      "projects/${local.project_number}"
    ]
    # Add operations for each service SHA scans (e.g., compute, storage, bigquery)
    operations {
      service_name = "compute.googleapis.com"
      method_selectors {
        # Least privilege is recommended. For broad scanning, broad access might be retained,
        # but consider replacing "*" with specific read methods (e.g., compute.v1.InstancesService.Get)
        method = "*"
      }
    }
    operations {
      service_name = "storage.googleapis.com"
      method_selectors {
        method = "*"
      }
    }
  }
}

resource "google_access_context_manager_service_perimeter_egress_policy" "scc_sha_egress" {
  perimeter = "accessPolicies/${local.access_policy_id}/servicePerimeters/${local.perimeter_name}"

  egress_from {
    identities = [
      "serviceAccount:${local.sha_service_account}"
    ]
  }

  egress_to {
    resources = [
      "projects/${local.project_number}"
    ]
    operations {
      service_name = "compute.googleapis.com"
      method_selectors {
        method = "*"
      }
    }
    operations {
      service_name = "storage.googleapis.com"
      method_selectors {
        method = "*"
      }
    }
  }
}

詳情請參閱「輸入和輸出規則」。

安全狀態分析呼叫的服務

安全狀態分析 必須存取所掃描服務的 Google Cloud API,以及核心基礎架構服務,才能正常運作。視設定而定,您可能需要在 VPC Service Controls perimeter 中,允許下列服務的輸入或輸出:

  • BigQuery API (bigquery.googleapis.com)
  • Binary Authorization API (binaryauthorization.googleapis.com)
  • Cloud Key Management Service API (cloudkms.googleapis.com)
  • Cloud Logging API (logging.googleapis.com)
  • Cloud Monitoring API (monitoring.googleapis.com)
  • Cloud Resource Manager API (cloudresourcemanager.googleapis.com)
  • Cloud Storage API (storage.googleapis.com)
  • Compute Engine API (compute.googleapis.com)
  • Identity and Access Management API (iam.googleapis.com)
  • Kubernetes Engine API (container.googleapis.com)

後續步驟