持續性:身分與存取權管理異常授權

本文說明 Security Command Center 中的威脅發現項目類型。威脅偵測工具偵測到雲端資源中可能存在威脅時,就會產生威脅發現項目。如需可用威脅發現項目的完整清單,請參閱威脅發現項目索引

總覽

檢查稽核記錄,偵測可能可疑的 IAM 角色繫結新增作業。

以下是異常授予的權限範例:

  • 從 Google Cloud 控制台邀請外部使用者 (例如 gmail.com 使用者) 擔任專案擁有者
  • 授予敏感權限的服務帳戶
  • 授予敏感權限的自訂角色
  • 從機構或專案外部新增的服務帳戶

IAM Anomalous Grant 發現項目獨特之處在於包含子規則,可提供每個發現項目例項的更具體資訊。這項發現項目的嚴重性分類取決於子規則。每個子規則可能需要不同的回應。

以下列出所有可能的子規則及其嚴重程度:

  • external_service_account_added_to_policy
    • HIGH,如果授予高敏感度角色,或是在機構層級授予中等敏感度角色,詳情請參閱「高度敏感角色」。
    • MEDIUM,如果授予中等敏感度角色,詳情請參閱「中等機密程度的角色」。
  • external_member_invited_to_policyHIGH
  • external_member_added_to_policy
    • HIGH,如果授予高敏感度角色,或是在機構層級授予中等敏感度角色,詳情請參閱「高度敏感角色」。
    • MEDIUM,如果授予中等敏感度角色,詳情請參閱「中等機密程度的角色」。
  • custom_role_given_sensitive_permissionsMEDIUM
  • service_account_granted_sensitive_role_to_memberHIGH
  • policy_modified_by_default_compute_service_accountHIGH

Event Threat Detection 是這項發現項目的來源。

回應方式

如要回應這項發現項目,請按照下列步驟操作:

步驟 1:查看調查結果詳細資料

  1. 按照「查看發現項目」一文的說明,開啟 Persistence: IAM Anomalous Grant 發現項目。系統會開啟發現項目的詳細資料面板,並顯示「摘要」分頁。

  2. 在「摘要」分頁中,查看下列各節的資訊:

    • 偵測到的內容,尤其是下列欄位:
      • 主體電子郵件地址:指派角色的使用者或服務帳戶的電子郵件地址。
    • 受影響的資源

    • 相關連結,尤其是下列欄位:

      • Cloud Logging URI:記錄項目連結。
      • MITRE ATT&CK 方法:連結至 MITRE ATT&CK 文件。
      • 相關發現項目:任何相關發現項目的連結。
      • VirusTotal 指標:連結至 VirusTotal 分析頁面。
  3. 按一下「JSON」分頁標籤。畫面上會顯示發現項目的完整 JSON。

  4. 在調查結果的 JSON 中,請注意下列欄位:

    • detectionCategory
      • subRuleName:提供發生異常授權的具體資訊。子規則會決定這項發現項目的嚴重性分類。
    • evidence
      • sourceLogId
      • projectId:包含發現項目的專案 ID。
    • properties
      • sensitiveRoleGrant
        • bindingDeltas
        • Action:使用者採取的動作。
        • Role:指派給使用者的角色。
        • member:獲派角色的使用者電子郵件地址。

步驟 2:檢查記錄

  1. 在發現項目詳細資料面板的「摘要」分頁中,按一下「Cloud Logging URI」連結,開啟「Logs Explorer」
  2. 在隨即載入的頁面中,使用下列篩選器尋找新的或更新的 IAM 資源:
    • protoPayload.methodName="SetIamPolicy"
    • protoPayload.methodName="google.iam.admin.v1.UpdateRole"
    • protoPayload.methodName="google.iam.admin.v1.CreateRole"

步驟 3:研究攻擊和回應方法

  1. 查看這類發現項目的 MITRE ATT&CK 框架項目: 有效帳戶:雲端帳戶
  2. 按一下發現項目詳細資料「摘要」分頁中「相關發現項目」列的連結,即可查看相關發現項目。 相關發現項目是指類型相同,且屬於相同執行個體和網路的發現項目。
  3. 如要制定回應計畫,請將調查結果與 MITRE 研究結合。

步驟 4:實作回應

下列應變計畫可能適用於這項發現,但也可能影響作業。 請仔細評估調查期間收集到的資訊,找出解決問題的最佳方式。

  • 請與遭盜用的帳戶的專案擁有者聯絡。
  • 刪除遭入侵的服務帳戶,並輪替及刪除遭入侵專案的所有服務帳戶存取金鑰。刪除後,使用該服務帳戶進行驗證的資源將無法存取。
  • 刪除未經授權帳戶建立的專案資源,例如不熟悉的 Compute Engine 執行個體、快照、服務帳戶和 IAM 使用者。
  • 如要限制新增 gmail.com 使用者,請使用機構政策
  • 如要找出並修正權限過多的角色,請使用 IAM 建議工具

發現項目 JSON 範例

以下是發現項目 JSON 的範例。

{
  "findings": {
    "access": {
      "principalEmail": "PRINCIPAL_EMAIL",
      "callerIp": "IP_ADDRESS",
      "callerIpGeo": {
        "regionCode": "REGION_CODE"
      },
      "serviceName": "SERVICE_NAME",
      "methodName": "METHOD_NAME",
      "principalSubject": "PRINCIPAL_SUBJECT",
      "serviceAccountKeyName": "SERVICE_ACCOUNT_KEY_NAME"
    },
    "assetDisplayName": "ASSET_DISPLAY_NAME",
    "assetId": "organizations/ORGANIZATION_ID/assets/ASSET_ID",
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/FINDING_ID",
    "category": "Persistence: IAM Anomalous Grant",
    "cloudDlpInspection": {},
    "contacts": {
      "security": {
        "contacts": [
          {
            "email": "EMAIL_ADDRESS_1"
          },
          {
            "email": "EMAIL_ADDRESS_2"
          }
        ]
      },
      "technical": {
        "contacts": [
          {
            "email": "EMAIL_ADDRESS_3"
          },
          {
            "email": "EMAIL_ADDRESS_4"
          }
        ]
      }
    },
    "createTime": "CREATE_TIMESTAMP",
    "database": {},
    "eventTime": "EVENT_TIMESTAMP",
    "exfiltration": {},
    "findingClass": "THREAT",
    "findingProviderId": "organizations/ORGANIZATION_ID/firstPartyFindingProviders/etd",
    "iamBindings": [
      {
        "action": "ADD",
        "role": "IAM_ROLE",
        "member": "serviceAccount:ACCOUNT_NAME"
      }
    ],
    "indicator": {},
    "kernelRootkit": {},
    "kubernetes": {},
    "mitreAttack": {
      "primaryTactic": "INITIAL_ACCESS",
      "primaryTechniques": [
        "VALID_ACCOUNTS",
        "CLOUD_ACCOUNTS"
      ]
    },
    "mute": "UNDEFINED",
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
    "parentDisplayName": "Event Threat Detection",
    "resourceName": "RESOURCE_FULL_NAME",
    "severity": "SEVERITY_CLASSIFICATION",
    "state": "ACTIVE",
    "vulnerability": {},
    "workflowState": "NEW"
  },
  "resource": {
    "name": "RESOURCE_FULL_NAME",
    "display_name": "RESOURCE_DISPLAY_NAME",
    "project_name": "//RESOURCE/projects/PROJECT_NUMBER",
    "project_display_name": "PROJECT_ID",
    "parent_name": "RESOURCE_PARENT_NAME",
    "parent_display_name": "PARENT_DISPLAY_NAME",
    "type": "RESOURCE_TYPE",
    "folders": [
      {
        "resourceFolderDisplayName": "RESOURCE_FOLDER_DISPLAY_NAME",
        "resourceFolder": "RESOURCE_FOLDER_ID"
      }
    ]
  },
  "sourceProperties": {
    "sourceId": {
      "projectNumber": "PROJECT_NUMBER",
      "customerOrganizationNumber": "ORGANIZATION_ID"
    },
    "detectionCategory": {
      "technique": "persistence",
      "indicator": "audit_log",
      "ruleName": "iam_anomalous_grant",
      "subRuleName": "TYPE_OF_ANOMALOUS_GRANT"
    },
    "detectionPriority": "HIGH",
    "affectedResources": [
      {
        "gcpResourceName": "GOOGLE_CLOUD_RESOURCE_NAME"
      }
    ],
    "evidence": [
      {
        "sourceLogId": {
          "projectId": "PROJECT_ID",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": {
            "seconds": "1678897327",
            "nanos": 26483000
          },
          "insertId": "INSERT_ID"
        }
      }
    ],
    "properties": {
      "sensitiveRoleGrant": {
        "principalEmail": "PRINCIPAL_EMAIL",
        "bindingDeltas": [
          {
            "action": "ADD",
            "role": "roles/GRANTED_ROLE",
            "member": "serviceAccount:SERVICE_ACCOUNT_NAME",
          }
        ],
        "members": [
          "serviceAccount:SERVICE_ACCOUNT_NAME"
        ]
      }
    },
    "findingId": "FINDING_ID",
    "contextUris": {
      "mitreUri": {
        "displayName": "MITRE Link",
        "url": "https://attack.mitre.org/techniques/T1078/004/"
      },
      "cloudLoggingQueryUri": [
        {
          "displayName": "Cloud Logging Query Link",
          "url": "LINK_TO_LOG_QUERY"
        }
      ],
      "relatedFindingUri": {
        "displayName": "Related Anomalous Grant Findings",
        "url": "LINK_TO_RELATED_FINDING"
      }
    }
  }
}

後續步驟