根据数据敏感性控制 IAM 访问权限

本页介绍了如何根据资源中数据的敏感性,自动授予或拒绝 Identity and Access Management (IAM) 对资源的访问权限。

您可以配置 Sensitive Data Protection 发现服务,以便根据计算出的资源敏感度级别自动向资源附加标记。然后,您可以使用 IAM 条件根据是否存在敏感度级别标记键或标记值来授予或拒绝对资源的访问权限。

假设您希望贵组织的数据团队能够在日常运维中自由复制和共享 BigQuery 数据。不过,您不知道其中是否有任何数据包含客户的个人身份信息 (PII)。您可以运行发现功能,对 BigQuery 数据的敏感性级别进行分类。然后,有条件地向数据团队授予访问权限,以便他们只能访问仅包含低敏感度数据的 BigQuery 表。

如需详细了解敏感数据保护如何计算数据敏感度,请参阅数据风险和敏感度级别

如需详细了解如何使用标记控制对资源的访问权限,请参阅 IAM 文档中的标记和条件访问。如需了解有关标记的一般信息,请参阅 Resource Manager 文档中的标记概览

敏感度级别标记

本文档使用敏感度级别标记一词来指您自动附加到资源的标记,用于指示该资源中数据的计算得出的敏感度级别。

优势

借助此功能,您可以执行以下操作:

  • 根据这些资源中数据的属性和分类,在各种受支持的资源中自动执行访问权限控制。Automation 可帮助您应对组织、文件夹和项目中数据的增长和变化。
  • 在敏感数据保护功能对这些资源进行配置文件分析和分类之前,限制对受支持资源的访问。这种做法符合默认安全原则。
  • 配置发现功能,使其在每次分析数据时更新敏感度级别代码值。因此,随着系统计算出的资源数据敏感性级别的变化,正文对资源的访问权限也会自动发生变化。
  • 配置发现功能,以便在发现功能检测到资源上存在敏感度级别标记时,降低资源的计算数据风险级别。此选项可帮助您衡量数据安全和隐私保护状况的改进情况。

支持的资源

借助此功能,敏感数据保护会在以下级别自动标记数据:

  • BigQuery 表
  • Cloud SQL 实例
  • Cloud Storage 存储桶

工作原理

以下是根据数据敏感性控制对资源的访问权限的概要工作流。这些任务不必由同一人执行。

  1. 创建敏感度级别标记
  2. 根据敏感度级别标记的值授予对资源的有条件访问权限
  3. 在发现配置中启用自动标记功能
  4. 向服务代理授予将敏感度级别标记附加到资源的权限

所需权限

您需要的权限取决于您需要执行的操作。

如需获得这些权限,请让您的管理员在资源层次结构的适当级层授予建议的角色。

用于管理代码的权限

请参阅 Resource Manager 文档中的管理标记

用于授予对资源的有条件访问权限的权限

请参阅 IAM 文档中的必需角色

用于配置发现功能的权限

请参阅配置和查看数据剖析文件所需的角色

创建敏感度级别标记

在本任务中,您将创建一个标记键,其标记值会映射到 Sensitive Data Protection 用于对数据进行分类的数据敏感度级别。例如,您可以使用以下代码中的代码键和代码值。

  1. 将标记键设置为 sensitivity-level
  2. 设置以下代码值:

    low
    要附加到低敏感度数据的标记值
    moderate
    要附加到中敏感度数据的标记值
    high
    要附加到高敏感度数据的标记值

    您还可以为具有未知敏感度级别的资源创建标记值。或者,您也可以重复使用这些资源的 lowmediumhigh 标记值。

  3. 请注意以下几点。下一个任务将会用到这些内容:

    • 标记键 ID,例如 tagKeys/281478077849901
    • 标记键值,例如 tagValues/281479490918432
    • 标记值路径,例如 example-project/tag-key/tag-value1

为简单起见,此示例在标记值和敏感度级别之间设置了一对一映射。在实践中,您可以根据自己的业务需求自定义代码值。例如,您可以使用 confidentialPIISPII(敏感的个人身份信息)等值。

您可以在组织、文件夹和项目级配置敏感数据发现功能。如果您打算将此敏感度级别标记用于组织级或文件夹级发现,我们建议您在组织级创建此标记。

如需了解如何创建标记,请参阅 Resource Manager 文档中的创建和管理标记部分。

根据敏感度级别标记的值授予对资源的有条件访问权限

在此任务中,您将仅在附加到资源的敏感性级别标记具有特定值时,向主账号授予角色。例如,您可以授予主账号对仅包含 moderatelow 标记值的数据的访问权限。

本部分提供了格式适合在条件编辑器中使用的条件示例。条件编辑器提供基于文本的界面,可使用 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

在发现配置中启用自动标记

在此任务中,您将启用标记资源操作。此操作会指示敏感数据保护功能根据计算得出的敏感度级别自动为您的数据添加标记。您可以在创建修改发现扫描配置时执行此任务。

如需根据计算出的敏感性级别自动为资源添加标记,请按以下步骤操作:

  1. 开启代码资源选项。
  2. 对于每个敏感度级别(高、中、低和未知),输入您为给定敏感度级别创建的标记值的路径。

    如果您跳过某个敏感度级别,系统不会为其附加任何标记。

  3. 如需在存在敏感度级别标记时自动降低资源的数据风险级别,请选择对资源应用标记时,将其分析文件的数据风险降为“低”。此选项可帮助您衡量数据安全和隐私保护状况的改进程度。

  4. 选择以下一个或两个选项:

    • 首次分析资源时对其添加标记。
    • 更新资源分析文件时对资源添加标记。如果您希望 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.

如需解决此问题,请将标记与资源分离。详情请参阅以下内容:

或者,在发现扫描配置中停用标记资源操作。

标记值已被删除或重命名,而发现功能尝试将其附加到资源

如果敏感度级别标记的标记值被删除或重命名,并且敏感数据保护功能尝试将该标记值附加到已分析的资源,您会收到以下错误:

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.

如需解决此问题,请按以下步骤操作:

  1. 获取与您的发现扫描配置关联的服务代理 ID:

    1. 前往发现扫描配置列表。

      前往发现扫描配置

    2. 选择您的扫描配置。
    3. 在打开的详情页面上,复制服务代理 ID。此 ID 的格式为电子邮件地址。
  2. 为服务代理授予敏感度级别标记的 Tag User 角色 (roles/resourcemanager.tagUser)。

    或者,您也可以为敏感度级别标记授予自定义角色。自定义角色必须具有 resourcemanager.tagValues.get 权限以及用于管理代码绑定的资源专用权限。您需要拥有特定于资源的 createTagBindingdeleteTagBindinglistEffectiveTags 权限。例如,对于 BigQuery 表,您需要满足以下条件:

    • resourcemanager.tagValues.get
    • bigquery.tables.createTagBinding
    • bigquery.tables.deleteTagBinding
    • bigquery.tables.listEffectiveTags

    如需了解如何在标记级别授予角色,请参阅 Resource Manager 文档中的管理对标记的访问权限

后续步骤