將建議工具與 Google SecOps 整合

本文說明如何整合 Recommender 與 Google Security Operations。

事前準備

在 Google SecOps 平台中設定 Recommender 整合功能前,請確認您具備下列條件:

  • 自訂 Identity and Access Management 角色:這個角色包含查看及更新專案或機構建議所需的特定權限。

  • 驗證方法:選擇建議使用的 Workload Identity (無金鑰) 方法,或服務帳戶 JSON 金鑰。

  • API 服務根目錄:存取 Recommender API 和 Cloud Resource Manager API 的端點。

自訂 IAM 角色權限

在 Google Cloud 控制台中建立自訂角色,並指派整合功能正常運作所需的權限。

  1. 在 Google Cloud 控制台中,前往「IAM & Admin」(IAM 與管理) >「Roles」(角色) 頁面。

    前往「Roles」(角色)

  2. 按一下「建立角色」

  3. 輸入角色的「標題」、「說明」和專屬「ID」

  4. 將「角色發布階段」設為 General Availability

  5. 按一下「新增權限」,然後新增下列項目:

    • Recommender API

      • recommender.iamPolicyInsights.get
      • recommender.iamPolicyInsights.list
      • recommender.iamPolicyRecommendations.get
      • recommender.iamPolicyRecommendations.list
      • recommender.iamPolicyRecommendations.update
    • Cloud Resource Manager API

      • resourcemanager.projects.get
      • resourcemanager.projects.list
      • resourcemanager.projects.getIamPolicy
      • resourcemanager.projects.setIamPolicy
    • 位置資訊存取權

      • recommender.locations.get
      • recommender.locations.list
    • 其他資源存取權

      • resourcemanager.folders.get
      • resourcemanager.folders.getIamPolicy
      • resourcemanager.folders.setIamPolicy
      • resourcemanager.organizations.get
      • resourcemanager.organizations.getIamPolicy
      • resourcemanager.organizations.setIamPolicy
  6. 點選「建立」

驗證設定

Google SecOps 支援兩種驗證路徑。設定下列其中一種方法:

  • 選項 1:Workload Identity (建議):建議使用這個方法,因為不需要管理及輪替長期有效的 JSON 金鑰,可提供更完善的安全性。

  • 選項 2:服務帳戶 JSON 金鑰:使用標準 JSON 金鑰檔案進行驗證。只有在環境中無法使用 Workload Identity 時,才使用這個方法。

使用 Workload Identity 驗證身分 (建議)

這個方法會使用服務帳戶模擬功能,讓平台安全存取您的資源。

建立目標服務帳戶:

整合服務必須先在專案中建立專屬服務帳戶,並指派必要權限,才能存取資源。 Google Cloud

  1. 在 Google Cloud 控制台中,依序前往「IAM & Admin」(IAM 與管理)>「Service Accounts」(服務帳戶)
  2. 按一下「建立服務帳戶」
  3. 提供名稱和 ID,然後按一下「建立並繼續」
  4. 在「將專案存取權授予這個服務帳戶」下方,選取上一節建立的自訂 IAM 角色
  5. 按一下 [完成]
  6. 複製服務帳戶的電子郵件地址。
找出 Google SecOps 執行個體 ID:

如要啟用安全模擬,您必須先找出特定 Google SecOps 執行個體使用的專屬服務帳戶身分。

  1. 在 Google SecOps 中,依序前往「Content Hub」>「Response Integrations」
  2. 搜尋並選取 Recommender 整合服務。
  3. 將目標服務帳戶電子郵件地址貼到 Workload Identity Email 中。
  4. 依序按一下「儲存」和「測試」。測試預計會失敗。
  5. 按一下「測試」右側的 close_small,然後搜尋錯誤訊息,找出開頭為 gke-init-python@...soar-python@... 的電子郵件地址。複製這個專屬電子郵件地址。
授予模擬權限:

最後一個步驟是授予執行個體身分權限,讓執行個體身分可做為目標服務帳戶,執行動作時無須使用靜態金鑰檔案。

  1. 返回Google Cloud 控制台的「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)
  2. 選取您建立的目標服務帳戶名稱。
  3. 前往「Permissions」(權限) 分頁,然後按一下「Grant access」(授予存取權限)
  4. 在「New principals」(新增主體) 欄位中,貼上電子郵件地址
  5. 在「Select a role」(選取角色) 欄位中,選擇「Service account token creator」(服務帳戶憑證建立者) (roles/iam.serviceAccountTokenCreator)。
  6. 按一下 [儲存]。請注意,這項權限可能需要幾分鐘才能生效,連線測試才會成功。

使用服務帳戶 JSON 金鑰進行驗證

只有在環境中無法使用 Workload Identity 時,才使用這個方法。

建立服務帳戶:

如要使用金鑰驗證,您必須先在Google Cloud 專案中建立服務帳戶,做為整合的 ID。

  1. 在 Google Cloud 控制台中,依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)。
  2. 按一下「建立服務帳戶」
  3. 提供名稱和 ID,然後按一下「建立並繼續」
  4. 在「將專案存取權授予這個服務帳戶」下方,選取您建立的自訂 IAM 角色
  5. 按一下 [完成]
產生並儲存 JSON 金鑰:

建立服務帳戶後,您必須產生私密 JSON 金鑰檔案,其中包含 Google SecOps 登入所需的憑證。

  1. 在「IAM & Admin」>「Service Accounts」中,選取您建立的服務帳戶。
  2. 前往「金鑰」分頁。
  3. 依序點選「新增金鑰」>「建立新的金鑰」
  4. 選取「JSON」做為金鑰類型,然後按一下「建立」。JSON 檔案會下載至您的電腦。
  5. 複製這個檔案的完整內容,並在整合設定期間貼到 User's Service Account 中。

整合參數

整合 Recommender 需要下列參數:

參數 說明
API Root

必填。

Recommender 服務的 API 根目錄。

預設值為 https://recommender.googleapis.com/v1/

Resource Manager API Root

必填。

用於管理專案和機構資源的 Resource Manager 服務 API 根層級。

預設值為 https://cloudresourcemanager.googleapis.com/v3/

Organization ID

選填。

與整合服務搭配使用的 Google Cloud 機構專屬 ID。

Project ID

選填。

用於擷取建議的 Google Cloud 專案 ID。

Quota Project ID

選填。

用於計費和配額的專案 ID。

如未提供值,系統會使用與服務帳戶憑證相關聯的專案。

Workload Identity Email

選填。

用於 Workload Identity 模擬的服務帳戶用戶端電子郵件地址。

User's Service Account

選填。

服務帳戶 JSON 金鑰檔案的完整內容。

Verify SSL

選填。

如果選取這個選項,整合服務會在連線至 Recommender 伺服器時驗證 SSL 憑證。

(預設為啟用)。

如需在 Google SecOps 中設定整合功能的操作說明,請參閱「設定整合功能」。

如有需要,您可以在稍後階段進行變更。設定整合執行個體後,您就可以在應對手冊中使用該執行個體。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。

動作

如要進一步瞭解動作,請參閱「 從工作台回覆待處理動作」和「執行手動動作」。

套用 IAM 建議

根據提供的輸入內容套用 IAM 建議。

這項動作僅適用於google.iam.policy.Recommender建議。

實體

系統不會對實體執行這項操作。

動作輸入內容

如要設定動作,請使用下列參數:

參數
IAM Recommendations JSON

必填。

建議的 JSON 結果。

JSON 結果可做為「列出最佳化建議」或「取得最佳化建議」動作的預留位置。

動作輸出內容

動作輸出類型
案件總覽附件 不適用
案件總覽連結 不適用
案件總覽表格 不適用
補充資訊表格 不適用
實體洞察 不適用
深入分析 不適用
JSON 結果 可用
立即可用的小工具 不適用
指令碼結果 可用
指令碼結果
指令碼結果名稱
is_success True/False
JSON 結果
{
  "applied_recommendations": [
    {
      "name": "projects/PROJECT_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/217d3019-bae5-4a52-9968-787fdd546a53",
      "description": "Replace the current role with a smaller role to cover the permissions needed.",
      "lastRefreshTime": "2023-07-28T07:00:00Z",
      "primaryImpact": {
        "category": "SECURITY",
        "securityProjection": {
          "details": {
            "revokedIamPermissionsCount": 610
          }
        }
      },
      "content": {
        "operationGroups": [
          {
            "operations": [
              {
                "action": "add",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/-",
                "value": "USER_ID@example.com",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/role": "roles/compute.instanceAdmin"
                }
              },
              {
                "action": "remove",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/*",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/members/*": "USER_ID@example.com",
                  "/iamPolicy/bindings/*/role": "roles/compute.admin"
                }
              }
            ]
          }
        ],
        "overview": {
          "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
          "member": "user:USER_ID@example.com",
          "removedRole": "roles/compute.admin",
          "addedRoles": [
            "roles/compute.instanceAdmin"
          ],
          "minimumObservationPeriodInDays": "0"
        }
      },
      "stateInfo": {
        "state": "SUCCEEDED",
        "stateMetadata": {
          "applied_by": "bulk_apply_by_automated_script-2023-08-11"
        }
      },
      "etag": "\"892d57ee41baa03e\"",
      "recommenderSubtype": "REPLACE_ROLE",
      "associatedInsights": [
        {
          "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID"
        }
      ],
      "priority": "P4"
    },
    {
      "name": "projects/PROJECT_ID/locations/global/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID",
      "description": "Replace the current role with a smaller role to cover the permissions needed.",
      "lastRefreshTime": "2023-07-28T07:00:00Z",
      "primaryImpact": {
        "category": "SECURITY",
        "securityProjection": {
          "details": {
            "revokedIamPermissionsCount": 19
          }
        }
      },
      "content": {
        "operationGroups": [
          {
            "operations": [
              {
                "action": "add",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/-",
                "value": "user:USER_ID@example.com",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/role": "roles/storage.objectAdmin"
                }
              },
              {
                "action": "remove",
                "resourceType": "cloudresourcemanager.googleapis.com/Project",
                "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
                "path": "/iamPolicy/bindings/*/members/*",
                "pathFilters": {
                  "/iamPolicy/bindings/*/condition/expression": "",
                  "/iamPolicy/bindings/*/members/*": "user:USER_ID@example.com",
                  "/iamPolicy/bindings/*/role": "roles/storage.admin"
                }
              }
            ]
          }
        ],
        "overview": {
          "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
          "member": "user:USER_ID@example.com",
          "removedRole": "roles/storage.admin",
          "addedRoles": [
            "roles/storage.objectAdmin"
          ],
          "minimumObservationPeriodInDays": "0"
        }
      },
      "stateInfo": {
        "state": "SUCCEEDED",
        "stateMetadata": {
          "applied_by": "bulk_apply_by_automated_script-2023-08-11"
        }
      },
      "etag": "\"af7635ffeb512998\"",
      "recommenderSubtype": "REPLACE_ROLE",
      "associatedInsights": [
        {
          "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/INSIGHT_ID"
        }
      ],
      "priority": "P4"
    }
  ],
  "failed_recommendations": []
}
充電盒外殼

這個動作會提供下列輸出訊息:

輸出訊息 訊息說明
Successfully applied provided IAM recommendations. 動作成功。
Successfully applied provided IAM recommendation, but some of the recommendations were not applied. 動作成功。
No provided IAM recommendations were applied. 建議失敗。
Error executing action ACTION_NAME. 動作傳回錯誤。

取得建議

從 Recommender 服務取得特定建議。

實體

系統不會對實體執行這項操作。

動作輸入內容

如要設定動作,請使用下列參數:

參數
Recommendation name

必填。

指定要傳回的建議名稱。

這項動作接受以半形逗號分隔的多個值。

預期輸入內容範例:

    projects/projectname/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0f262740-bf4a-4c3d-9573-0da3345cf3f7
    

動作輸出內容

動作輸出類型
案件總覽附件 不適用
案件總覽連結 不適用
案件總覽表格 不適用
補充資訊表格 不適用
實體洞察 不適用
深入分析 不適用
JSON 結果 可用
立即可用的小工具 不適用
指令碼結果 可用
指令碼結果
指令碼結果名稱
is_success True/False
JSON 結果
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-28T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/"
      }
    ],
    "priority": "P4"
  }
]
充電盒外殼

這個動作會提供下列輸出訊息:

輸出訊息 訊息說明
Successfully found recommendation in the Google Cloud Recommender service. 動作成功。
No recommendations were found in the Google Cloud Recommender service. 無法取得資料。
Error executing action ACTION_NAME 動作傳回錯誤。

列出建議

列出 Recommender 服務中的可用建議。

實體

系統不會對實體執行這項操作。

動作輸入內容

如要設定動作,請使用下列參數:

參數
Recommendation Filter

選填。

指定要擷取建議的篩選條件。

參數應為字串,且格式如下:

  • PROJECTS_OR_ORGANIZATIONS/ PROJECT_OR_ORGANIZATION_NAME_OR_ID
  • //cloudresourcemanager.googleapis.com/ PROJECTS_OR_ORGANIZATIONS/ PROJECT_OR_ORGANIZATION_NAME_OR_ID

如未提供任何值,動作會從已設定的服務帳戶擷取專案 ID。

Recommendation Location

必填。

指定 Google Cloud 要擷取建議的位置。

預設值為 global

Recommendation State

選填。

指定要傳回的建議狀態。

預設值為 Not Specified

可能的值包括:

  • Not Specified
  • Active
  • Dismissed
Recommendation Priority

選填。

指定要傳回的建議優先順序。多個值可以指定為以半形逗號分隔的字串。

Recommender Subtype

選填。

指定傳回的建議子類型。

預設值為 Not Specified

可能的值包括:

  • Not Specified
  • REMOVE_ROLE
  • REPLACE_ROLE
Max Records To Return

選填。

指定要傳回的記錄數。如未提供任何值,這項動作預設會傳回 50 筆記錄。

動作輸出內容

動作輸出類型
案件總覽附件 不適用
案件總覽連結 不適用
案件總覽表格 可用
補充資訊表格 不適用
實體洞察 不適用
深入分析 不適用
JSON 結果 可用
立即可用的小工具 不適用
指令碼結果 可用
指令碼結果
指令碼結果名稱
is_success True/False
JSON 結果
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-27T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/i/locations/global/insightTypes/"
      }
    ],
    "priority": "P4"
  },
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-27T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 5
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "user:USER_ID@example.com",
                "/iamPolicy/bindings/*/role": "roles/chroniclesm.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects",
        "member": "user:USER_ID@example.com",
        "removedRole": "roles/chroniclesm.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects"
      }
    ],
    "priority": "P4"
  }
]
充電盒外殼

這個動作會提供下列輸出訊息:

輸出訊息 訊息說明
Successfully found recommendations for the provided criteria in the Google Cloud Recommender service. 動作成功。
No recommendations were found for the provided criteria in the Google Cloud Recommender service. 沒有資料。
Error executing action ACTION_NAME. 動作傳回錯誤。

這個動作會提供下列案件牆表格:

可用的建議
資料欄
  • 名稱
  • 說明
  • 類別
  • 建議子類型
  • 優先順序
  • 狀態
  • 上次重新整理時間

乒乓

使用 Google SecOps Marketplace 分頁中整合設定頁面提供的參數,測試與 Recommender 服務的連線。

實體

系統不會對實體執行這項操作。

動作輸入內容

不適用

動作輸出內容

動作輸出類型
案件總覽附件 不適用
案件總覽連結 不適用
案件總覽表格 不適用
補充資訊表格 不適用
實體洞察 不適用
深入分析 不適用
JSON 結果 不適用
立即可用的小工具 不適用
指令碼結果 可用
指令碼結果
指令碼結果名稱
is_success True/False
充電盒外殼

這個動作會提供下列輸出訊息:

輸出訊息 訊息說明
Successfully connected to the Google Cloud Recommender service with the provided connection parameters! 動作成功。
Failed to connect to the Google Cloud Recommender service! 動作傳回錯誤。

更新建議

更新 Recommender 服務中的建議。

實體

系統不會對實體執行這項操作。

動作輸入內容

使用下列參數設定動作:

參數
Recommendation name

必填。

指定要更新的建議名稱。

這項動作接受以半形逗號分隔的多個值。

預期輸入內容範例: projects/projectname/locations/global/recommenders/google.iam.policy.Recommender/recommendations/0f262740-bf4a-4c3d-9573-0da3345cf3f7

Recommendation State

選填。

指定建議要變更的狀態。

預設值為 Not Specified

可能的值包括:

  • Not Specified
  • Claimed
  • Dismissed
Recommendation Result

選填。

指定建議要變更成的結果。

預設值為 Not Specified

可能的值包括:

  • Not Specified
  • Failed
  • Succeeded

動作輸出內容

動作輸出類型
案件總覽附件 不適用
案件總覽連結 不適用
案件總覽表格 不適用
補充資訊表格 不適用
實體洞察 不適用
深入分析 不適用
JSON 結果 可用
立即可用的小工具 不適用
指令碼結果 可用
指令碼結果
指令碼結果名稱
is_success True/False
JSON 結果
[
  {
    "name": "name",
    "description": "This role has not been used during the observation window.",
    "lastRefreshTime": "2023-07-28T07:00:00Z",
    "primaryImpact": {
      "category": "SECURITY",
      "securityProjection": {
        "details": {
          "revokedIamPermissionsCount": 68
        }
      }
    },
    "content": {
      "operationGroups": [
        {
          "operations": [
            {
              "action": "remove",
              "resourceType": "cloudresourcemanager.googleapis.com/Project",
              "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
              "path": "/iamPolicy/bindings/*/members/*",
              "pathFilters": {
                "/iamPolicy/bindings/*/condition/expression": "",
                "/iamPolicy/bindings/*/members/*": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
                "/iamPolicy/bindings/*/role": "roles/monitoring.admin"
              }
            }
          ]
        }
      ],
      "overview": {
        "resource": "//cloudresourcemanager.googleapis.com/projects/PROJECT_ID",
        "member": "serviceAccount:SERVICE_ACCOUNT_ID.iam.gserviceaccount.com",
        "removedRole": "roles/monitoring.admin",
        "minimumObservationPeriodInDays": "0"
      }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "etag": "",
    "recommenderSubtype": "REMOVE_ROLE",
    "associatedInsights": [
      {
        "insight": "projects/PROJECT_ID/locations/global/insightTypes/google.iam.policy.Insight/insights/"
      }
    ],
    "priority": "P4"
  }
]
充電盒外殼

這個動作會提供下列輸出訊息:

輸出訊息 訊息說明
Successfully updated recommendation in the Google Cloud Recommender service. 動作成功。
No recommendations were found in the Google Cloud Recommender service. 無法取得資料。
Error executing action ACTION_NAME 動作傳回錯誤。

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。