管理安全状况

本页面介绍了如何在激活 Security Command Center 后配置和使用安全状况服务。首先,您必须创建一个安全状况,其中包含以政策集的形式整理的政策,然后使用安全状况部署来部署该安全状况。部署安全状况后,您可以监控偏移情况,并随着时间的推移进一步优化安全状况。

准备工作

请先完成以下任务,然后再完成本页面上的其余任务。

激活 Security Command Center 高级方案或 Enterprise 方案

验证 Security Command Center 高级方案或 Enterprise 方案是否已在组织级激活。

如果您想将 Security Health Analytics 检测器用作政策,请在激活过程中选择 Security Health Analytics 服务。

设置权限

如需获得使用安全状况所需的权限,请让您的管理员为您授予 Security Posture Admin (roles/securityposture.admin) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需详细了解安全状况角色和安全状况权限,请参阅适用于组织级激活的 IAM

设置 Google Cloud CLI

您必须使用 Google Cloud CLI 461.0.0 或更高版本

In the Google Cloud console, activate Cloud Shell.

Activate Cloud Shell

At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

启用 API

启用组织政策服务和安全状况服务 API:

gcloud services enable orgpolicy.googleapis.com  securityposture.googleapis.com

配置与 AWS 的连接

如需使用特定于 AWS 的内置 Security Health Analytics 检测器,您必须启用 Security Command Center Enterprise连接到 AWS 以进行配置和资源数据收集

创建和部署安全状况

如需开始使用安全状况,您必须完成以下操作:

  • 创建一个安全状况 YAML 文件,用于定义适用于安全状况的政策。
  • 在 Google Cloud 中创建基于安全状况 YAML 文件的安全状况。
  • 部署安全状况。

以下部分提供了详细说明。

创建安全状况 YAML 文件

安全状况由您一起部署的一个或多个政策集组成。这些政策集包含您希望纳入安全状况的所有预防性政策和检测性政策。

如需创建安全状况,请执行以下任一操作:

如需详细了解您可以在安全状况中使用的字段,请参阅 Posture 参考文档PolicySet 参考文档

通过预定义的安全状况模板创建安全状况文件

您可以使用预定义的安全状况模板来创建安全状况文件。

控制台

  1. 在 Google Cloud 控制台中,前往安全状况管理页面。

    前往“安全状况管理”

  2. 确认您查看的是已激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 模板标签页中,点击要使用的模板。

  4. 模板详细信息页面中,点击创建安全状况

  5. 为安全状况提供一个唯一的名称,然后点击创建。系统会打开安全状况详情页面。

  6. 完成以下任一操作:

gcloud

  1. 查看预定义的安全状况模板,确定哪些模板适用于您的环境。您可以直接应用其中一些政策,而其他政策则需要您自定义以适应您的环境。
  2. 请使用以下方法之一将 YAML 文件复制到您自己的文本编辑器中:

    • 预定义的安全状况模板中的参考内容中复制 YAML 文件。
    • 运行 gcloud scc posture-templates describe 命令以复制 YAML 文件。
    gcloud scc posture-templates describe \
        organizations/ORGANIZATION_ID/locations/global/postureTemplates/POSTURE_TEMPLATE \
        --revision-id=REVISION_ID
    

    替换以下值:

    • ORGANIZATION_ID 是指您激活 Security Command Center 高级方案或 Enterprise 方案的组织。
    • POSTURE_TEMPLATE 是预定义安全状况的模板名称,如预定义安全状况模板中所述。
    • REVISION_ID 是预定义安全状况的修订版本。如果您未添加修订 ID,系统会显示最新版本的预定义安全状况。

    例如,如需查看“安全 AI,基本功能”预定义安全状况下的 3589215982 组织,请运行以下命令:

    gcloud scc posture-templates describe \
        organizations/3589215982/locations/global/postureTemplates/secure_ai_essential \
        --revision-id=v.1.0
    
  3. 完成以下任一操作:

    • 如果您可以使用该安全状况而无需进行任何更改(例如,您使用了某个 _essentials 模板),则可以创建该安全状况。如需了解相关说明,请参阅创建安全状况
    • 如果您需要修改任何政策集或政策,请完成修改安全状况 YAML 文件

通过从现有环境中提取政策来创建安全状况文件

您可以提取在现有项目、文件夹或组织中配置的政策(组织政策,包括自定义政策和所有 Security Health Analytics 检测器,包括自定义检测器)来创建安全状况文件。您无法从已应用安全状况的组织、文件夹或项目中提取政策。

此命令仅提取您之前为组织、文件夹或项目配置的政策,不会从父级文件夹或组织提取政策。

如果您已将 Security Command Center Enterprise 连接到 AWS,此命令还会提取特定于 AWS 的检测器(预览版)。

  1. 运行 gcloud scc postures extract 命令以提取您环境中现有的组织政策和 Security Health Analytics 检测器。

    gcloud scc postures extract POSTURE_NAME \
        --workload=WORKLOAD
    

    替换以下值:

    • POSTURE_NAME 是安全状况的相对资源名称。例如 organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID

      • POSTURE_ID 是您的组织的唯一安全状况的字母数字名称。POSTURE_ID 不得超过 63 个字符
    • WORKLOAD 是您要从中提取政策的项目、文件夹或组织。工作负载属于以下一种类型:

    • projects/PROJECT_NUMBER

    • folder/FOLDER_ID

    • organizations/ORGANIZATION_ID

    例如,如需从 6589215984 组织下的 3589215982 文件夹中提取政策,请运行以下命令:

    gcloud scc postures extract \
      organizations/6589215984/locations/global/postures/myStagingPosture \
      workload=folder/3589215982 > posture.yaml
    
  2. 打开生成的 posture.yaml 文件进行修改。

  3. 完成以下任一操作:

    • 如果您可以使用该安全状况而无需进行任何更改(例如,您使用了某个 _essentials 模板),则可以创建该安全状况。如需了解相关说明,请参阅创建安全状况
    • 如果您需要修改任何政策集或政策,请完成修改安全状况 YAML 文件

使用政策定义创建 Terraform 资源

您可以创建 Terraform 配置来创建安全状况资源。

例如,您可以创建一个安全状况资源,其中包含内置和自定义组织政策限制以及内置和自定义 Security Health Analytics 检测器。针对特定于 AWS 的内置 Security Health Analytics 检测器的安全状况管理支持处于预览版阶段。

resource "google_securityposture_posture" "posture1"{
  posture_id  = "posture_example"
  parent      = "organizations/123456789"
  location    = "global"
  state       = "ACTIVE"
  description = "a new posture"
  policy_sets {
    policy_set_id = "org_policy_set"
    description   = "set of org policies"
    policies {
      policy_id = "canned_org_policy"
      constraint {
        org_policy_constraint {
          canned_constraint_id = "storage.uniformBucketLevelAccess"
          policy_rules {
            enforce = true
            condition {
            	description = "condition description"
            	expression  = "resource.matchTag('org_id/tag_key_short_name,'tag_value_short_name')"
            	title       = "a CEL condition"
            }
          }
        }
      }
    }
    policies {
      policy_id = "custom_org_policy"
      constraint {
        org_policy_constraint_custom {
          custom_constraint {
            name           = "organizations/123456789/customConstraints/custom.disableGkeAutoUpgrade"
            display_name   = "Disable GKE auto upgrade"
            description    = "Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced."
            action_type    = "ALLOW"
            condition      = "resource.management.autoUpgrade == false"
            method_types   = ["CREATE", "UPDATE"]
            resource_types = ["container.googleapis.com/NodePool"]
          }
          policy_rules {
            enforce = true
            condition {
            	description = "condition description"
            	expression = "resource.matchTagId('tagKeys/key_id','tagValues/value_id')"
            	title = "a CEL condition"
            }
          }
        }
      }
    }
  }
  policy_sets {
    policy_set_id = "sha_policy_set"
    description   = "set of sha policies"
    policies {
      policy_id = "sha_builtin_module"
      constraint {
        security_health_analytics_module {
          module_name             = "BIGQUERY_TABLE_CMEK_DISABLED"
          module_enablement_state = "ENABLED"
        }
      }
      description = "enable BIGQUERY_TABLE_CMEK_DISABLED"
    }
    policies {
      policy_id = "sha_custom_module"
      constraint {
        security_health_analytics_custom_module {
          display_name = "custom_SHA_policy"
          config {
            predicate {
              expression = "resource.rotationPeriod > duration('2592000s')"
            }
            custom_output {
              properties {
                name = "duration"
                value_expression {
                  expression = "resource.rotationPeriod"
                }
              }
            }
            resource_selector {
              resource_types = ["cloudkms.googleapis.com/CryptoKey"]
            }
            severity       = "LOW"
            description    = "Custom Module"
            recommendation = "Testing custom modules"
          }
          module_enablement_state = "ENABLED"
        }
      }
    }
  }
}

如需了解详情,请参阅 google_securityposture_posture

修改安全状况 YAML 文件

如需修改安全状况 YAML 文件,请完成以下步骤:

  1. 在文本编辑器中打开安全状况 YAML 文件。
  2. 验证文件开头的 namedescriptionstate

    name: organizations/ORGANIZATION_ID/locations/global/posture/POSTURE_ID
    description: DESCRIPTION
    state: STATE
    

    如需详细了解这些字段,请参阅 Posture 参考文档

    例如:

    name: organizations/3589215982/locations/global/posture/stagingAIPosture
    description: This posture applies to staging environments for Vertex AI.
    state: ACTIVE
    
  3. 自定义文件中的政策,以满足您的要求。

    如需详细了解可使用的字段,请参阅 PolicySet 参考文档

    1. 查看现有政策及其值。对于需要特定于您环境的信息的政策,请适当设置值。例如,对于安全 AI 中的 ainotebooks.accessMode 政策,请在扩展的预定义安全状况下添加允许的访问模式:policyRules

      - policyId: Define access mode for Vertex AI Workbench notebooks and instances
        complianceStandards:
        - standard: NIST SP 800-53
          control: AC-3(3)
        - standard: NIST SP 800-53
          control: AC-6(1)
        constraint:
          orgPolicyConstraint:
            cannedConstraintId: ainotebooks.accessMode
            policyRules:
            - values:
                allowedValues: service-account
        description: This list constraint defines the modes of access allowed to Vertex AI Workbench notebooks and instances where enforced. The allow or deny list can specify multiple users with the service-account mode or single-user access with the single-user mode. The access mode to be allowed or denied must be listed explicitly.
      
    2. 添加其他组织政策限制,如组织政策限制中所述。如果您要定义自定义组织政策,请确保 YAML 文件包含自定义限制条件定义。您无法使用通过其他方法(例如使用Google Cloud 控制台)创建的自定义约束条件。

      例如,您可能需要设置 compute.trustedImageProjects 约束条件来定义可用于映像存储和磁盘实例化的项目。如果您复制此示例,请务必将 allowedValues 替换为适当的项目列表:

      - policyId: Define projects with trusted images.
        complianceStandards:
        - standard:
          control:
        constraint:
          orgPolicyConstraint:
            cannedConstraintId: compute.trustedImageProjects
            policyRules:
            - values:
                allowedValues:
                - project1
                - project2
                - projectN
        description: This is a complete list of projects from which images can be used.
      
    3. 添加其他 Security Health Analytics 检测器,例如 Security Health Analytics 发现结果中记录的检测器。例如,如果项目未使用 API 密钥进行身份验证,请添加 Security Health Analytics 检测器以创建发现结果:

      - policyId: API Key Exists
        constraint:
          securityHealthAnalyticsModule:
            moduleEnablementState: ENABLED
            moduleName: API_KEY_EXISTS
      

      再举一个例子,添加 Security Health Analytics 自定义模块以检测 Vertex AI 数据集是否已加密:

      - policyId: CMEK key is use for Vertex AI DataSet
        complianceStandards:
        - standard: NIST SP 800-53
          control: SC-12
        - standard: NIST SP 800-53
          control: SC-13
        constraint:
          securityHealthAnalyticsCustomModule:
            displayName: "vertexAIDatasetCMEKDisabled"
            config:
              customOutput: {}
              predicate:
                expression: "!has(resource.encryptionSpec)"
              resourceSelector:
                resourceTypes:
                - aiplatform.googleapis.com/Dataset
              severity: CRITICAL
              description: "When enforced, this detector finds whether a dataset is not encrypted using CMEK."
              recommendation: "Restore the SHA module. See https://cloud.google.com/security-command-center/docs/custom-modules-sha-overview."
            moduleEnablementState: ENABLED
      

      再举一个例子,对于 Security Command Center Enterprise,添加特定于 AWS 的 Security Health Analytics 检测器(预览版):

      - policySetId: AWS policy set
        description:  Policy set containing AWS built-in SHA modules for securing S3 buckets.
        policies:
        - policyId: S3 bucket replication enabled
          complianceStandards:
          - standard: NIST 800-53 R5
            control: SI-13(5)
          constraint:
            securityHealthAnalyticsModule:
              moduleEnablementState: ENABLED
              moduleName: S3_BUCKET_REPLICATION_ENABLED
          description: This control checks whether an Amazon S3 bucket has Cross-Region Replication enabled. The control fails if the bucket does not have Cross-Region Replication enabled or if Same-Region Replication is also enabled.
      
        - policyId: S3 bucket logging enabled
          complianceStandards:
          - standard: NIST 800-53 R5
            control: SI-7(8)
          - standard: PCI DSS 3.2.1
            control: 10.3.1
          constraint:
            securityHealthAnalyticsModule:
              moduleEnablementState: ENABLED
              moduleName: S3_BUCKET_LOGGING_ENABLED
          description: AWS S3 Server Access Logging feature records access requests to storage buckets which is useful for security audits. By default, server access logging is not enabled for S3 buckets.
      

      如果您添加的是特定于 AWS 的检测器,则必须在组织级别部署安全状况。

  4. 将安全状况文件上传到受版本控制的源代码库,以便您可以跟踪一段时间内对其所做的更改。

创建安全状况

完成此任务,以在 Security Command Center 中创建可部署的安全状况资源。如果您使用 Google Cloud 控制台根据预定义的安全状况模板创建了安全状况,系统会自动为您创建安全状况资源。

控制台

  1. 在 Google Cloud 控制台中,前往安全状况管理页面。

    前往“安全状况管理”

  2. 确认您查看的是已激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 点击创建安全状况。您可以从现有安全状况或模板入手,也可以使用应用于资源的政策来创建安全状况。

    使用现有安全状况或模板创建安全状况

    1. 选择从现有安全状况或模板着手(浏览安全状况)
    2. 指定安全状况详情,例如安全状况名称和说明。
    3. 点击选择安全状况。您可以根据现有安全状况或模板创建安全状况。
      • 选择安全状况,以使用现有安全状况创建安全状况。从显示的安全状况列表中选择一个安全状况,然后从所选安全状况的可用修订列表中选择一个或多个修订。
      • 选择模板以使用模板创建安全状况,然后从显示的模板列表中选择一个或多个模板。
    4. 点击保存。在政策集部分下,您可以查看与所选安全状况关联的政策集列表。
    5. 从政策集列表中选择政策。您还可以在此页面上修改政策,并将政策移至其他政策集。您不能在同一个政策集中创建两个名称相同的安全状况政策。
    6. 点击创建

    使用已应用于资源的政策创建安全状况

    1. 选择从已应用于资源的安全状况着手(浏览资源)
    2. 指定安全状况详情,例如安全状况名称和说明。
    3. 点击选择资源
    4. 从显示的资源列表中选择资源,然后点击创建

    系统会将您重定向到安全状况详情页面,其中显示了您创建的安全状况的相关信息。您可以查看与该安全状况相关联的政策集。

gcloud

  1. 运行 gcloud scc postures create 命令,使用 posture.yaml 文件创建安全状况。

    gcloud scc postures create POSTURE_NAME \
        --posture-from-file=POSTURE_FROM_FILE
    

    替换以下值:

    • POSTURE_NAME 是安全状况的相对资源名称。例如 organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID

      • POSTURE_ID 是您的组织的唯一安全状况的字母数字名称。POSTURE_ID 不得超过 63 个字符

    例如,如需在组织 organizations/3589215982 下创建 ID 为 posture-example-1 的安全状况,请运行以下命令:

    gcloud scc postures create \
        organizations/3589215982/locations/global/postures/posture-example-1 \
        --posture-from-file=posture.yaml
    

    如果安全状况创建过程失败,请删除安全状况,排查错误,然后重试。

  2. 如需验证是否已成功创建安全状况,请参阅查看安全状况

如需将此安全状况应用于您的环境,您必须部署安全状况

Terraform

如果您为安全状况资源创建了 Terraform 配置,则必须使用基础架构即代码流水线对其进行预配。

如需了解详情,请参阅 Terraform on Google Cloud

部署安全状况

创建安全状况后,您可以将其部署到项目、文件夹或组织,以便将政策及其定义应用于贵组织中的特定资源,并监控偏差。您只能向项目、文件夹或组织部署一个安全状况。

验证您的安全状况状态是否为 ACTIVE

部署安全状况时,系统会执行以下操作:

  • 系统会应用组织政策和 Security Health Analytics 检测器的定义。
  • 对于在安全状况中定义的每个自定义组织政策,系统都会创建一个新的自定义限制条件。即使您是根据模板或提取的政策创建安全状况,并且未对这些政策进行更改,也是如此。约束 ID 包含安全状况修订 ID 作为后缀。如果删除了安全状况的所有部署,后缀将替换为随机 UUID。
  • 对于在安全状况中定义的每个自定义 Security Health Analytics 检测器,系统都会创建一个新的自定义约束条件。即使您是根据模板或提取的政策创建安全状况,并且未对这些政策进行更改,也是如此。
  • 自定义模块的默认状态设置为已启用

控制台

  1. 在 Google Cloud 控制台中,前往安全状况管理页面。

    前往“安全状况管理”

  2. 确认您查看的是已激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 安全状况标签页上,点击要部署的安全状况。

  4. 安全状况详情页面上,选择安全状况的修订版本。您选择的安全状况修订版本必须处于有效状态。

  5. 点击应用于资源

  6. 点击选择,选择要部署安全状况的组织、文件夹或项目。

  7. 点击应用安全状况

gcloud

运行 gcloud scc posture-deployments create 命令,将安全状况部署到项目、文件夹或组织。

gcloud scc posture-deployments create POSTURE_DEPLOYMENT_NAME \
    --posture-name=POSTURE_NAME \
    --posture-revision-id=POSTURE_REVISION_ID \
    --target-resource=TARGET_RESOURCE

替换以下值:

  • POSTURE_DEPLOYMENT_NAME 是安全状况部署的相对资源名称。格式为 organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID

  • LOCATIONglobal

  • POSTURE_ID 是您的组织的唯一安全状况的字母数字名称。

  • --posture-name=POSTURE_NAME 是您要部署的安全状况的名称。格式为 organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID

如果您的安全状况包含特定于 AWS 的检测器,您必须在组织级别部署安全状况(预览版)。

例如,如需部署安全状况,请运行以下命令:

gcloud scc posture-deployments create \
  organizations/3589215982/locations/global/postureDeployments/postureDeployment123 \
  --posture-name=organizations/3589215982/locations/global/postures/StagingAIPosture \
  --posture-revision-id=version1 \
  --target-resource=projects/4589215982

当命令完成时,您可以查看状态信息。如果安全状况部署创建流程失败,请删除部署,排查错误,然后重试。

Terraform

您可以创建 Terraform 资源来部署安全状况。

resource "google_securityposture_posture_deployment" "posture_deployment_example" {
  posture_deployment_id          = "<POSTURE_DEPLOYMENT_ID>"
  parent = "organizations/<ORGANIZATION_ID>"
  location = "global"
  description = "a new posture deployment"
  target_resource = "<TARGET_RESOURCE>"
  posture_id = "<POSTURE_NAME>"
  posture_revision_id = "<POSTURE_REVISION_ID>"
}

如需了解详情,请参阅 google_securityposture_posture_deployment

查看安全状况和安全状况部署信息

您可以查看安全状况和安全状况部署信息,以查看以下信息:

  • 部署了哪些安全状况,以及在资源层次结构(组织、项目和文件夹)中的哪个位置应用了这些安全状况
  • 折叠安全状况的修订和状态
  • 安全状况部署的操作详情

查看安全状况

您可以查看有关安全状况的信息(例如其状态和政策定义)。

控制台

  1. 在 Google Cloud 控制台中,前往安全状况管理页面。

    前往“安全状况管理”

  2. 选择您已为其激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 安全状况标签页中,点击您要查看的安全状况。系统会显示安全状况详细信息。

gcloud

运行 gcloud scc postures describe 命令,查看您创建的安全状况。

gcloud scc postures describe POSTURE_NAME \
    --revision-id=REVISION_ID

替换以下值:

  • POSTURE_NAME 是安全状况的相对资源名称。例如 organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID

  • POSTURE_ID 是您的组织的唯一安全状况的字母数字名称。

  • revision-id=REVISION_ID 是可选标志,用于指定要查看的安全状况版本。如果您未添加该标记,系统会返回最新版本。

例如,如需查看名称为 organizations/3589215982/locations/global/postures/posture-example-1 且修订 ID 为 abcdefgh 的安全状况,请运行以下命令:

gcloud scc postures describe \
    organizations/3589215982/locations/global/postures/posture-example-1 \
    --revision-id=abcdefgh

查看有关安全状况部署操作的信息

运行 gcloud scc posture-operations describe 命令以查看安全状况部署操作的操作详情。

gcloud scc posture-operations describe OPERATION_NAME

其中 OPERATION_NAME 是操作的相对资源名称。格式为 organizations/ORGANIZATION_ID/locations/global/operations/OPERATION_ID。在运行安全状况命令时,您可以使用 --async 参数获取 OPERATION_ID

例如,如需查看名称为 organizations/3589215982/locations/global/operations/operation-1694515698847-605272e4bcd7c-f93dade6-067467ae 的扫描操作,请运行以下命令:

gcloud scc posture-operations describe \
    organizations/3589215982/locations/global/operations/operation-1694515698847-605272e4bcd7c-f93dade6-067467ae

查看有关安全状况部署的信息

您可以查看安全状况的部署位置以及部署状态。

控制台

  1. 在 Google Cloud 控制台中,前往安全状况管理页面。

    前往“安全状况管理”

  2. 确认您查看的是已激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 安全状况标签页上,点击您部署的安全状况。

  4. 前往资源标签页,查看部署安全状况的项目、文件夹和组织,以及部署状态。

gcloud

运行 gcloud scc posture-deployments describe 命令以查看有关已部署的安全状况的信息。

gcloud scc posture-deployments describe POSTURE_DEPLOYMENT_NAME

其中 POSTURE_DEPLOYMENT_NAME 是安全状况部署的相对资源名称。格式为 organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID

  • LOCATIONglobal
  • POSTURE_DEPLOYMENT_ID 是安全状况部署的唯一名称。

例如,如需查看名为 organizations/3589215982/locations/global/postureDeployments/Posture-deployment-example-1 的安全状况部署的详细信息,请运行以下命令:

gcloud scc posture-deployments describe \
    organizations/3589215982/locations/global/postureDeployments/Posture-deployment-example-1

更新安全状况和安全状况部署

您可以更新以下内容:

  • 安全状况的状态。
  • 安全状况中的政策定义。
  • 部署安全状况的组织、文件夹或项目。

更新安全状况中的政策定义

当您启用更多 Google Cloud 服务、部署更多资源或需要更多政策来满足新的或不断变化的合规性要求时,可能需要更新安全状况。如果您要更新已部署的安全状况修订版本,此任务会创建新的安全状况修订版本。否则,系统会更新您在运行更新命令时指定的安全状况修订版本。

  1. 在文本编辑器中打开 YAML 文件。添加要更新的字段及其值。如果您要更新政策集,请确保您的文件包含您要纳入安全状况感知的所有政策集,包括现有的政策集。如需查看相关说明,请参阅修改安全状况 YAML 文件
  2. 运行 gcloud scc postures update 命令以更新安全状况。

    gcloud scc postures update POSTURE_NAME \
        --posture-from-file=POSTURE_FROM_FILE \
        --revision-id=POSTURE_REVISION_ID \
        --update-mask=UPDATE_MASK
    

    替换以下值:

    • POSTURE_NAME 是安全状况的相对资源名称。例如 organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID

      • POSTURE_ID 是您的组织的唯一安全状况的字母数字名称。
    • POSTURE_FROM_FILE 是包含您所做的更改的 posture.yaml 文件的相对路径或绝对路径。

      • POSTURE_ID 是您的组织的唯一安全状况的字母数字名称。
    • POSTURE_FROM_FILE 是包含您所做的更改的 posture.yaml 文件的相对路径或绝对路径。

    • --revision-id=REVISION_ID 是您要部署的安全状况修订版本。如果安全状况已部署,安全状况服务会自动创建具有不同修订 ID 的新版本安全状况,并在输出中包含修订 ID。

    • --update-mask=UPDATE_MASK 是您要更新的字段的列表(以英文逗号分隔)。此参数为可选参数。 您可以将 UPDATE_MASK 设为以下某个值:

      • * 或未指定:应用您对政策集和安全状况说明所做的更改。
      • policy_sets:仅应用您对政策集所做的更改。
      • description:仅应用您对安全状况说明所做的更改。
      • policy_sets, description:应用您对政策集和安全状况说明所做的更改。
      • state:仅应用状态更改。

    例如,如需更新组织 organizations/3589215982/locations/global 下名称为 posture-example-1 且修订 ID 设为 abcd1234 的安全状况,请运行以下命令:

    gcloud scc postures update \
        organizations/3589215982/locations/global/posture-example-1 \
        --posture-from-file=posture.yaml --revision-id=abcd1234 --update-mask=policy_sets
    

    如果安全状况更新过程失败,请排查错误,然后重试。

  3. 如需验证安全状况是否已成功更新,请参阅查看安全状况

更改安全状况的状态

安全状况的状态决定了它是否可用于部署到项目、文件夹或组织。

安全状况可具有以下状态:

  • DRAFT:安全状况修订版本尚未做好部署准备。您无法部署处于 DRAFT 状态的安全状况修订版本。
  • ACTIVE:安全状况修订版本可用于部署。您可以将状态从 ACTIVE 更改为 DRAFTDEPRECATED.
  • DEPRECATED:无法将 DEPRECATED 安全状况修订版本部署到资源。您必须先删除该安全状况的所有现有安全状况部署,然后才能废弃安全状况修订版本。如果您想重新部署已废弃的安全状况修订,则必须将其状态更改为 ACTIVE

控制台

  1. 在 Google Cloud 控制台中,前往安全状况管理页面。

    前往“安全状况管理”

  2. 确认您查看的是已激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 安全状况标签页上,点击要更新的安全状况。

  4. 安全状况详情页面上,点击修改

  5. 选择安全状况状态,然后点击保存

gcloud

如需更改安全状况的状态,请运行 gcloud scc postures update 命令。您无法在更新其他字段的同时更新安全状况状态。如需了解有关运行 gcloud scc postures update 命令的说明,请参阅修改安全状况 YAML 文件

更新安全状况部署

更新项目、文件夹或组织的安全状况部署,以部署新的安全状况或部署安全状况的新修订版本。

如果您要更新的安全状况修订包含使用 Google Cloud 控制台删除的自定义组织限制,则无法使用同一安全状况 ID 更新安全状况部署。组织政策服务会阻止创建具有相同名称的自定义组织限制条件。您必须创建新版本的安全状况或使用其他安全状况 ID。

此外,在更新过程中删除的政策部署的相关发现结果也会被停用。

控制台

  1. 在 Google Cloud 控制台中,前往安全状况管理页面。

    前往“安全状况管理”

  2. 确认您查看的是已激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 安全状况标签页上,点击要更新的安全状况。

  4. 安全状况详情页面上,选择安全状况的修订版本。

  5. 点击应用于资源

  6. 点击选择,选择要部署安全状况的组织、文件夹或项目。如果您看到一条消息,提示部署已存在,请先删除部署,然后再重试。

gcloud

运行 gcloud scc posture-deployments update 命令以部署安全状况。

gcloud scc posture-deployments update POSTURE_DEPLOYMENT_NAME \
    --description=DESCRIPTION \
    --update-mask=UPDATE_MASK \
    --posture-id=POSTURE_ID \
    --posture-revision-id=POSTURE_REVISION_ID

替换以下值:

  • POSTURE_DEPLOYMENT_NAME 是安全状况部署的相对资源名称。格式为 organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID

    • POSTURE_DEPLOYMENT_ID 是安全状况部署的唯一名称。
  • --description=DESCRIPTION 是部署的安全状况的可选说明。

  • --posture-id=POSTURE_ID 是您组织的唯一安全状况名称。格式为 organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_NAME

  • --posture-revision-id=POSTURE_REVISION_ID 是您要部署的安全状况修订版本。您可以从创建安全状况查看安全状况时收到的响应中获取该值。

  • --update-mask=UPDATE_MASK 是您要更新的字段的列表(以英文逗号分隔)。此参数为可选参数。

例如,如需使用以下条件更新安全状况部署,请执行以下操作:

  • 组织:organizations/3589215982/locations/global
  • 安全状况部署 ID:postureDeploymentexample
  • 安全状况 ID:StagingAIPosture
  • 修订版本:version2

运行以下命令:

gcloud scc posture-deployments update \
    organizations/3589215982/locations/global/postureDeployments/postureDeploymentexample \
    --posture-id=organizations/3589215982/locations/global/postures/StagingAIPosture \
    --posture-revision-id=version2

当命令完成时,您可以查看状态信息。如果安全状况部署更新流程失败,请删除部署,排查错误,然后重试。

监控安全状况偏移

您可以在安全状况中监控已部署的安全状况是否与您定义的政策不符。偏移是指在安全状况之外发生的政策更改。例如,当管理员在控制台中更改政策定义(而不是更新安全状况部署)时,就会发生偏移。

安全状况服务会创建发现结果,您可以在发生偏移时在 Google Cloud 控制台或 gcloud CLI 中查看这些发现结果。

控制台

对于所有安全状况,您可以使用发现结果页面监控偏移情况。

如果您创建了适用于 Vertex AI 工作负载的安全状况,并且使用的是 Security Command Center 专业版,还可以使用概览页面监控偏差。

如需在发现结果页面监控偏差,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往发现结果页面。

    前往“发现结果”

  2. 确认您查看的是已激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 快速过滤条件窗格中,选择安全状况违规发现结果。您还可以在查询预览中输入以下过滤条件:

    state="ACTIVE" AND NOT mute="MUTED" AND finding_class="POSTURE_VIOLATION"
    
  4. 如需查看发现结果的详细信息,请点击相应发现结果。

如需从概览页面监控偏差(仅限 Vertex AI 工作负载),请执行以下操作:

  1. 在 Google Cloud 控制台中,前往概览页面。

    转到“概览”页面

  2. 确认您查看的是已激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 查看 AI 工作负载发现结果窗格。

    • 漏洞标签页会显示与专门适用于 Vertex AI 工作负载的任何 Security Health Analytics 自定义模块相关的所有漏洞。
    • 政策偏差标签页会显示与您在某个安全状况中应用的 Vertex AI 组织政策相关的任何偏差。
  4. 如需查看发现结果的详细信息,请点击相应发现结果。

gcloud

在 gcloud CLI 中,如需查看偏差发现结果,请运行以下命令:

gcloud scc findings list ORGANIZATION_ID \
    --filter="category=\"SECURITY_POSTURE_DRIFT\""

其中 ORGANIZATION_ID 是组织的 ID。

如需详细了解如何解决这些问题,请参阅安全状况服务发现结果。您可以按照导出 Security Command Center 中的任何其他发现结果的方式导出这些发现结果。如需了解详情,请参阅导出 Security Command Center 数据

如需停用偏移发现结果,您可以使用相同的安全状况 ID 和安全状况修订版本更新安全状况部署

生成偏差发现结果以进行测试

部署安全状况后,您可以监控政策偏差。如需在测试环境中查看偏差发现结果,请完成以下操作:

  1. 在控制台中,前往组织政策页面。

    打开“组织政策”

  2. 修改您在已部署的安全状况中定义的某项政策。例如,如果您使用的是预定义的安全 AI 安全状况,则可以修改限制对新的 Vertex AI Workbench 笔记本和实例的公共 IP 访问权限政策。

  3. 更改政策后,点击设置政策

  4. 转到发现结果页面。

    前往“发现结果”

  5. 快速过滤条件窗格中的来源显示名称部分中,选择安全状况。与您的更改相关的发现结果应在五分钟内显示。

  6. 如需查看发现结果的详细信息,请点击相应发现结果。

删除安全状况部署

如果某个安全状况部署未正确部署,或者您不再需要特定安全状况,或者您不再希望将特定安全状况分配给某个项目、文件夹或组织,则可以将其删除。如需删除安全状况部署,该安全状况部署必须处于以下某种状态:

  • ACTIVE
  • CREATE_FAILED
  • UPDATE_FAILED
  • DELETE_FAILED

如需验证安全状况部署的状态,请参阅查看安全状况部署的相关信息

删除安全状况部署时,您会从已分配安全状况的资源(您的组织、文件夹或项目)中移除该安全状况。此外,它还会停用关联的发现结果。

不同类型的政策的输出如下:

  • 当您删除包含自定义组织政策的安全状况部署时,系统会删除这些自定义组织政策。不过,自定义限制条件仍会继续存在。
  • 当您删除包含内置 Security Health Analytics 检测器的安全状况部署时,Security Health Analytics 模块的最终状态取决于部署所在的组织、文件夹或项目。

    • 如果您在文件夹或项目中部署了安全状况,内置 Security Health Analytics 检测器会从父级组织或文件夹继承其状态。
    • 如果您在组织级部署了安全状况,内置 Security Health Analytics 检测器会还原为默认状态。如需了解默认状态的说明,请参阅启用和停用检测器

控制台

  1. 在 Google Cloud 控制台中,前往安全状况管理页面。

    前往“安全状况管理”

  2. 确认您查看的是已激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 安全状况标签页中,点击要从其分配到的资源中移除的安全状况。

  4. 安全状况详情页面上,选择安全状况的修订版本,然后转到资源

  5. 在部署了当前活跃安全状况修订版本的资源列表中,点击移除

gcloud

运行 gcloud scc posture-deployments delete 命令可删除安全状况部署。

gcloud scc posture-deployments delete POSTURE_DEPLOYMENT_NAME

POSTURE_DEPLOYMENT_NAME 是安全状况部署的相对资源名称。格式为 organizations/ORGANIZATION_ID/locations/global/postureDeployments/POSTURE_DEPLOYMENT_ID

  • POSTURE_DEPLOYMENT_ID 是安全状况部署的唯一名称。

例如,如需删除名为 organizations/3589215982/locations/global/postureDeployments/posture-deployment-example-1 的安全状况部署,请运行以下命令:

gcloud scc posture-deployments delete \
    organizations/3589215982/locations/global/postureDeployments/posture-deployment-example-1

删除安全状况

删除安全状况时,所有修订版本也会一并删除。如果某个安全状况的任何修订版本已部署,则您无法删除该安全状况。您必须先删除所有安全状况部署,然后才能完成此任务。

控制台

  1. 在 Google Cloud 控制台中,前往安全状况管理页面。

    前往“安全状况管理”

  2. 确认您查看的是已激活 Security Command Center 高级方案或 Enterprise 方案的组织。

  3. 安全状况标签页中,点击要删除的安全状况。

  4. 安全状况详情页面上,点击删除

gcloud

运行 gcloud scc postures delete 命令以删除安全状况。

 gcloud scc postures delete POSTURE_NAME

POSTURE_NAME 是安全状况的相对资源名称。

例如 organizations/ORGANIZATION_ID/locations/global/postures/POSTURE_ID。 安全状况 ID 是指您的组织的安全状况的唯一标识符,由字母数字组成。

例如,如需删除名为 organizations/3589215982/locations/global/postures/posture-example-1 的安全状况,请运行以下命令:

 gcloud scc postures delete \
     organizations/3589215982/locations/global/postures/posture-example-1

后续步骤