本指南介绍了如何使用 Security Command Center Security Command Center API 管理安全标记。安全标记(或简称“标记”)是 Security Command Center 中资源的自定义注释,可让您将自己的企业环境添加到这些对象中。
您只能为 Security Command Center 支持的资产添加或更新安全标记。如需查看 Security Command Center 支持的资产列表,请参阅 Security Command Center 中支持的资产类型。
准备工作
您需要先设置服务账号和 SDK,然后才能使用安全标记。
要添加或更改安全标记,您必须拥有身份和访问权限管理角色,其中包含您要使用的标记类型的权限:
- 资源标记:Asset Security Marks Writer,
securitycenter.assetSecurityMarksWriter
- 发现结果标记:Finding Security Marks Writer、
securitycenter.findingSecurityMarksWriter
如需详细了解 Security Command Center 中的 IAM 角色,请参阅访问权限控制。如需了解如何有效地使用安全标记,请参阅使用 Security Command Center 安全标记。
为资源添加或更新安全标记
使用 Security Command Center API 时,添加和更新安全标记的操作是相同的。以下示例展示了如何为两个键值对 (key_a, value_a)
和 (key_b, value_b)
添加安全标记。
以下代码使用字段掩码来确保只更新这些值。如果未提供字段掩码,则在添加给定键和值之前清除所有安全标记。
gcloud
gcloud scc assets update-marks ASSET_ID \ --PARENT=PARENT_ID \ --location=LOCATION \ --security-marks=SECURITY_MARKS \ --update-mask=UPDATE_MASK
替换以下内容:
ASSET_ID
:要更新的资产。PARENT
:资源所在的资源层次结构的级别;请使用organization
、folder
或project
。PARENT_ID
:父级组织、文件夹或项目的数字 ID,或父级项目的字母数字 ID。LOCATION
:如果数据驻留处于启用状态,则为更新资产的安全标记的 Security Command Center 位置;如果数据驻留处于停用状态,请使用值global
。SECURITY_MARKS
:以英文逗号分隔的键值对,表示安全标记及其值;例如key_a=value_a,key_b=value_b
。UPDATE_MASK
:要为资源更新的安全标记字段的逗号分隔列表;例如marks.key_a,marks.key_b
。
Go
Python
请参阅管理政策,了解 Security Health Analytics 检测器的专用资源标记。
删除资源的安全标记
删除特定安全标记的方式与添加或更新标记类似,特别是使用字段掩码调用更新,没有相应的值。在下面的示例中,系统会删除包含密钥 key_a
和 key_b
的安全标记。
gcloud
gcloud scc assets update-marks ASSET_ID \ --PARENT=PARENT_ID \ --location=LOCATION \ --update-mask=UPDATE_MASK
ASSET_ID
:要更新的资产。PARENT
:资源所在的资源层次结构的级别;请使用organization
、folder
或project
。PARENT_ID
:父级组织、文件夹或项目的数字 ID,或父级项目的字母数字 ID。LOCATION
:如果数据驻留处于启用状态,则为从资产中删除安全标记的 Security Command Center 位置;如果数据驻留处于停用状态,则使用值global
。UPDATE_MASK
:要从资产中删除的安全标记字段的英文逗号分隔列表;例如marks.key_a,marks.key_b
。
Node.js
Python
在同一请求中添加和删除安全标记
用于添加和更新安全标记以及删除安全标记的技术都可以合并到同一请求中。在下面的示例中,key_a
会在 key_b
被删除时进行更新。
gcloud
gcloud scc assets update-marks ASSET_ID \ --PARENT=PARENT_ID \ --location=LOCATION \ --update-mask=UPDATE_MASK
ASSET_ID
:要更新的资产。PARENT
:资源所在的资源层次结构的级别;请使用organization
、folder
或project
。PARENT_ID
:父级组织、文件夹或项目的数字 ID,或父级项目的字母数字 ID。LOCATION
:如果数据驻留处于启用状态,则为更新和删除资产的安全标记而使用的 Security Command Center 位置;如果数据驻留处于停用状态,请使用值global
。SECURITY_MARKS
:以英文逗号分隔的键值对,表示您要更新的安全标记;例如key_a=value_a
;请忽略要删除的安全标记UPDATE_MASK
:要更新或删除的安全标记字段的逗号分隔列表;例如,marks.key_a,marks.key_b
。
Node.js
Python
向发现结果添加安全标记
在发现结果中添加,更新和删除安全标记的过程与更新资源的安全标志的过程相同。唯一的变化是 API 调用中使用的资源的名称。您需要提供资源名称的发现结果,而不是资产资源。
例如,如需更新发现结果的安全标记,请使用以下代码:
gcloud
gcloud scc findings update-marks \ PARENT/PARENT_ID/sources/SOURCE_ID/locations/LOCATION/findings/FINDING_NAME \ --security-marks=SECURITY_MARKS \ --update-mask=UPDATE_MASK
替换以下内容:
PARENT
:相应发现所在的资源层次结构的级别;请使用organizations
、folders
或projects
。PARENT_ID
:父级组织、文件夹或项目的数字 ID,或父级项目的字母数字 ID。SOURCE_ID
:来源 ID。LOCATION
:如果数据驻留处于启用状态,则为更新发现结果的安全标记的 Security Command Center 位置;如果数据驻留处于停用状态,请使用值global
。FINDING_NAME
:要更新的发现。SECURITY_MARKS
:以英文逗号分隔的键值对,表示安全标记及其值;例如key_a=value_a,key_b=value_b
。UPDATE_MASK
:要为资源更新的安全标记字段的逗号分隔列表;例如marks.key_a,marks.key_b
。
Java
Node.js
Python
批量扫描(每天运行两次)期间会处理安全标记,不是实时处理。在处理安全标记和应用解决或重开发现结果的执行政策之前可能会有 12 到 24 小时的延迟。
使用安全标记过滤器列出资源
在资源上设置安全标记后,可以在 ListAssets
API 调用的过滤器参数中使用这些安全标记。例如,要查询是 key_a = value_a
的所有资源,请使用以下代码:
gcloud
# ORGANIZATION=12344321 FILTER="security_marks.marks.key_a = \"value_a\"" gcloud scc assets list $ORGANIZATION \ --filter="$FILTER"
Go
Java
Node.js
Python
使用安全标记过滤器列出发现结果
对发现结果设置安全标记后,可以在 ListFindings
API 调用的过滤器参数中使用它们。例如,要查询 key_a != value_a
的所有资源,请使用以下代码:
gcloud
gcloud scc findings list PARENT/PARENT_ID \ --location=LOCATION \ --source=SOURCE_ID \ --filter=FILTER
PARENT
:相应发现所在的资源层次结构的级别;请使用organizations
、folders
或projects
。PARENT_ID
:父级组织、文件夹或项目的数字 ID,或父级项目的字母数字 ID。LOCATION
:如果数据驻留已启用,则为列出发现结果的 Security Command Center 位置;如果未启用数据驻留,请使用值global
。SOURCE_ID
:来源 ID。FILTER
:要应用于发现结果的过滤条件;例如,如需排除具有安全标记key_a=value_a
的发现结果,请使用"NOT security_marks.marks.key_a=\"value_a\""