本页面介绍了如何根据资源中数据的敏感程度自动授予或拒绝 Identity and Access Management (IAM) 对资源的访问权限。
您可以配置 Sensitive Data Protection 发现服务,以根据资源的计算敏感度级别自动将标记附加到资源。然后,您可以根据是否存在敏感度级别标记键或标记值,使用 IAM 条件来授予或拒绝对资源的访问权限。
假设您希望组织的数据团队能够在日常运营中自由复制和共享 BigQuery 数据。不过,您不知道这些数据是否包含客户的个人身份信息 (PII)。您可以运行发现来对 BigQuery 数据的敏感度级别进行分类。然后,有条件地向数据团队授予访问权限,以便他们只能访问仅包含低敏感度数据的 BigQuery 表。
如需详细了解 Sensitive Data Protection 如何计算数据敏感度,请参阅数据风险和敏感度级别。
如需详细了解如何使用标记来控制对资源的访问权限,请参阅 IAM 文档中的标记和条件式访问权限。如需了解有关标记的一般信息,请参阅 Resource Manager 文档中的标记概览。
敏感程度标记
本文档使用术语敏感度级别标记来指代您自动附加到资源以指示该资源中数据的计算敏感度级别的标记。
优势
借助此功能,您可以执行以下操作:
- 根据各种受支持资源中数据的属性和分类,自动控制对这些资源的访问权限控制。Automation 可帮助您应对组织、文件夹和项目中的数据增长和变化。
- 在 Sensitive Data Protection 对受支持的资源进行分析和分类之前,限制对这些资源的访问。这种做法符合默认安全原则。
- 配置发现功能,使其在每次分析数据时都更新敏感度级别标记值。因此,当资源的计算数据敏感度级别发生变化时,正文对该资源的访问权限也会自动发生变化。
- 配置发现功能,以便在发现功能检测到资源上存在敏感度级别标记时,降低资源上计算出的数据风险级别。此选项有助于您衡量数据安全和隐私保护状况的改善情况。
支持的资源
借助此功能,敏感数据保护功能会自动标记以下级别的数据:
- BigQuery 表
- Cloud SQL 实例
- Cloud Storage 存储桶
工作原理
以下是根据数据敏感度控制资源访问权限的总体工作流程。这些任务不必由同一人执行。
所需权限
您需要的权限取决于您需要执行的操作。
如需获得这些权限,请让您的管理员在资源层次结构的适当级层授予建议的角色。
管理标记的权限
请参阅 Resource Manager 文档中的管理标记。
授予对资源的有条件访问权限的权限
请参阅 IAM 文档中的所需角色。
配置 Discovery 的权限
请参阅配置和查看数据剖析文件所需的角色。
创建敏感度级别标记
在此任务中,您将创建一个标记键,其中包含与 Sensitive Data Protection 用于对数据进行分类的数据敏感度级别相对应的标记值。例如,您可以使用以下标记键和标记值。
- 将标记键设置为
sensitivity-level
。 设置以下标记值:
low
- 要附加到低敏感度数据的标记值
moderate
- 要附加到中等敏感度数据的标记值
high
- 要附加到高敏感度数据的标记值
您还可以为敏感度级别未知的资源创建标记值。或者,您也可以重复使用这些资源的
low
、medium
或high
标记值。请注意以下几点。您需要在下一个任务中提供以下信息:
- 标记键 ID - 例如,
tagKeys/281478077849901
- 标记键值对 - 例如
tagValues/281479490918432
- 标记值路径 - 例如
example-project/tag-key/tag-value1
- 标记键 ID - 例如,
为简单起见,此示例在标记值与敏感度级别之间设置了一对一的映射。在实践中,您可以自定义标记值以满足您的业务需求。例如,您可以使用 confidential
、PII
或 SPII
(敏感 PII)等值。
您可以在组织、文件夹和项目级层配置敏感数据发现功能。如果您打算将此敏感度级别标记用于组织级或文件夹级发现,建议您在组织级创建此标记。
如需了解如何创建标记,请参阅 Resource Manager 文档中的创建和管理标记。
根据敏感程度标记的值授予对资源的有条件访问权限
在此任务中,您将仅在附加到资源的敏感度级别标记具有特定值时,才向主账号授予角色。例如,您可以仅向某正文授予对具有 moderate
和 low
标记值的数据的访问权限。
本部分提供了一些格式化为可与条件编辑器搭配使用的条件示例。条件编辑器提供基于文本的界面,可使用 CEL 语法手动输入表达式。如需了解如何将 IAM 条件附加到角色绑定,请参阅 IAM 文档中的管理条件角色绑定。
这些示例遵循本页创建敏感度级别标记中定义的标记模型。
向主账号授予对低敏感度数据的访问权限
在此示例中,如果资源仅包含低敏感度数据,则您会授予对该资源的访问权限。您还可以使用此示例来限制对资源的所有访问权限,直到在该资源上运行敏感数据发现为止。
resource.matchTagId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY",
"tagValues/TAG_VALUE_FOR_LOW_SENSITIVITY")
替换以下内容:
- SENSITIVITY_LEVEL_TAG_KEY:您创建的敏感度级别标记键的数字 ID
- TAG_VALUE_FOR_LOW_SENSITIVITY:您为低敏感度数据创建的标记值的数字 ID
向主账号授予对中等敏感度和低敏感度数据的访问权限
在此示例中,如果资源仅包含中等敏感度或低敏感度数据,则您会授予对该资源的访问权限。请注意,这两个条件之间有一个 OR
运算符。
resource.matchTagId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY", "tagValues/TAG_VALUE_FOR_LOW_SENSITIVITY") ||
resource.matchTagId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY", "tagValues/TAG_VALUE_FOR_MODERATE_SENSITIVITY")
替换以下内容:
- SENSITIVITY_LEVEL_TAG_KEY:您创建的敏感度级别标记键的数字 ID
- TAG_VALUE_FOR_LOW_SENSITIVITY:您为低敏感度数据创建的标记值的数字 ID
- TAG_VALUE_FOR_MODERATE_SENSITIVITY:您为中等敏感度数据创建的标记值的数字 ID
仅当存在敏感度级别标记时,才授予主账号访问权限
例如,如果您想定义一项组织政策,要求所有 IAM 访问权限都必须根据是否存在敏感度标记来确定,那么此功能就非常有用。您还可以使用此示例来限制对资源的所有访问权限,直到在该资源上运行敏感数据发现功能。
resource.hasTagKeyId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY")
将 SENSITIVITY_LEVEL_TAG_KEY 替换为您创建的敏感度级别标记键的数字 ID。
拒绝政策示例
如需了解如何制定拒绝访问政策以搭配资源标记使用,请参阅拒绝访问政策的结构。如需查看受支持的权限列表,请参阅拒绝政策支持的权限。
如果没有敏感度级别标记,则拒绝访问
以下拒绝政策摘录规定,如果资源没有敏感度级别标记,则拒绝 bigquery.googleapis.com/tables.get
权限。
"rules": [
{
"denyRule": {
"deniedPrincipals": [
"principalSet://goog/group/data-team@example.com"
],
"deniedPermissions": [
"bigquery.googleapis.com/tables.get"
],
"denialCondition": {
"title": "Resource has no key",
"expression": "!resource.hasTagKeyId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY")"
}
}
}
]
将 SENSITIVITY_LEVEL_TAG_KEY 替换为您创建的敏感度级别标记键的数字 ID。
如果存在中敏感度或高敏感度数据,则拒绝访问
以下拒绝政策摘录会拒绝 bigquery.googleapis.com/tables.get
权限,前提是资源包含任何中度敏感度或高度敏感度的数据。
"rules": [
{
"denyRule": {
"deniedPrincipals": [
"principalSet://goog/group/data-team@example.com"
],
"deniedPermissions": [
"bigquery.googleapis.com/tables.get"
],
"denialCondition": {
"title": "Resource has moderate or high data sensitivity",
"expression": "resource.matchTagId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY", "tagValues/TAG_VALUE_FOR_MODERATE_SENSITIVITY") || resource.matchTagId("tagKeys/SENSITIVITY_LEVEL_TAG_KEY", "tagValues/TAG_VALUE_FOR_HIGH_SENSITIVITY")"
}
}
}
]
替换以下内容:
- SENSITIVITY_LEVEL_TAG_KEY:您创建的敏感度级别标记键的数字 ID
- TAG_VALUE_FOR_MODERATE_SENSITIVITY:您为中等敏感度数据创建的标记值的数字 ID
- TAG_VALUE_FOR_HIGH_SENSITIVITY:您为高敏感度数据创建的标记值的数字 ID
在发现配置中启用自动标记
在此任务中,您将启用标记资源操作。此操作会指示 Sensitive Data Protection 根据计算得出的敏感度级别自动标记数据。您可以在创建或修改发现扫描配置时执行此任务。
如需根据资源的计算敏感度级别自动标记资源,请按以下步骤操作:
- 开启标记资源选项。
对于每个敏感度级别(高、中、低和未知),请输入您为相应敏感度级别创建的标记值的路径。
如果您跳过某个敏感度级别,则系统不会附加相应标记。
如需在存在敏感度级别标记时自动降低资源的数据风险级别,请选择对资源应用标记时,将其分析结果的数据风险降为“低”。此选项可帮助您衡量数据安全和隐私保护状况的改善情况。
选择以下一个或两个选项:
- 首次分析资源时对其添加标记。
更新资源分析文件时对资源添加标记。如果您希望 Sensitive Data Protection 在后续发现运行中覆盖敏感度级别标记值,请选择此选项。因此,当资源的计算数据敏感度级别升高或降低时,正文对该资源的访问权限会自动发生变化。
如果您计划手动更新发现服务附加到资源上的敏感度级别标记值,请勿选择此选项。如果您选择此选项,Sensitive Data Protection 可能会覆盖您的手动更新。
您可以在组织、文件夹和项目级层配置敏感数据发现功能。如果您打算将此敏感度级别标记用于组织级发现,并且不希望项目级发现操作覆盖组织级发现设置的标记值,请确保只有组织级发现配置的服务代理可以将此标记附加到资源。如需了解如何在标记级授予角色,请参阅 Resource Manager 文档中的管理对标记的访问权限。
排查错误
本部分介绍您在使用此功能时可能会遇到的错误,以及如何解决这些错误。
超出标签数量上限
每个资源最多可以关联 50 个键值对。尝试标记已达到标记数量上限的资源会导致个人资料生成失败。您会收到以下错误:
The resource RESOURCE_NAME cannot be tagged because there are too many existing tags bound to the resource. You can either disable automatic tagging or delete at least one tag binding from the resource.
如需解决此问题,请将标记与资源分离。详情请参阅以下内容:
- BigQuery:从表中分离标记
- Cloud SQL for MySQL:将标记与 Cloud SQL 实例分离
- Cloud SQL for PostgreSQL:从 Cloud SQL 实例分离标记
- Cloud Storage:将标记附加到 Cloud Storage 存储桶或从 Cloud Storage 存储桶分离标记的示例
或者,在发现扫描配置中停用标记资源操作。
某个标记值已被删除或重命名,而发现服务尝试将其附加到资源
如果敏感度级别标记的标记值被删除或重命名,并且敏感数据保护尝试将该标记值附加到已分析的资源,您会收到以下错误:
Tag value TAG_VALUE not found, it has possibly been either deleted or renamed.
如需解决此问题,请执行以下某项操作:
- 如果标记已被删除,请重新创建已删除的标记值。确保重新创建的代码值与发现扫描配置中引用的代码值一致。如需了解详情,请参阅本页面上的创建敏感度级别标记。
- 如果标记值已重命名,请更新发现扫描配置,以使用标记值的新名称。
服务代理缺少权限
如果服务代理没有将敏感程度标记附加到分析的资源所需的权限,您会收到以下错误:
The DLP service account SERVICE_AGENT_NAME is missing permissions needed for attaching tags to resources. Check that the role 'resourcemanager.tagUser' is granted to the DLP service account.
如需解决此问题,请按以下步骤操作:
获取与您的发现扫描配置关联的服务代理 ID:
前往发现扫描配置列表。
- 在工具栏中,选择您的组织。
- 选择您的扫描配置。
- 在扫描配置详情页面上,复制服务代理字段的值。服务代理 ID 的格式为电子邮件地址。
向服务代理授予敏感度级别标记的 Tag User 角色 (
roles/resourcemanager.tagUser
)。或者,您也可以授予对敏感度级层标记的自定义角色。自定义角色必须具有
resourcemanager.tagValues.get
权限以及用于管理标记绑定的资源专用权限。您需要特定于资源的createTagBinding
、deleteTagBinding
和listEffectiveTags
权限。例如,对于 BigQuery 表,您需要以下权限:resourcemanager.tagValues.get
bigquery.tables.createTagBinding
bigquery.tables.deleteTagBinding
bigquery.tables.listEffectiveTags
如需了解如何在标记级授予角色,请参阅 Resource Manager 文档中的管理对标记的访问权限。