保护 Vertex AI Workbench 用户管理的笔记本中的机密数据

Last reviewed 2021-04-29 UTC

本文档提供了可用于保护 Vertex AI Workbench 用户管理的笔记本中的机密数据的安全控制措施和安全层。该文档属于蓝图解决方案的一部分,后者包含以下内容:

在本文档中,机密数据是指企业中的用户需要更高级别的权限才能访问的敏感信息。本文档适用于管理用户管理的笔记本的团队。

本文档假定您已配置一组基本的安全控制措施,以保护您的云基础架构部署。此蓝图可帮助您在这些现有安全控制措施上实施额外的控制措施,以保护用户管理的笔记本中的机密数据。如需详细了解将安全性内置到 Google Cloud 部署中的最佳做法,请参阅 Google Cloud 企业基础蓝图

简介

实施数据治理和安全政策来帮助保护包含机密数据的用户管理笔记本,通常需要平衡以下目标:

  • 使用您在企业中应用的相同数据治理及安全做法和控制措施,帮助保护笔记本实例使用的数据。
  • 确保企业中的数据科学家有权访问所需的数据,以提供有意义的数据洞见。

在授权企业数据科学家访问用户管理的笔记本中的数据之前,您必须了解以下内容:

  • 数据如何流经您的环境。
  • 谁在访问数据。

请考虑以下各项以帮助您了解:

  • 如何部署 Google Cloud 资源层次结构来隔离数据。
  • 哪些 IAM 群组有权使用 BigQuery 中的数据。
  • 您的数据治理政策如何影响您的环境。

GitHub 代码库中与蓝图相关联的 Terraform 脚本实现了本文档中所述的安全控制措施。该代码库还包含用于说明数据治理做法的示例数据。如需详细了解 Google Cloud 中的数据治理,请参阅什么是数据治理?

架构

以下架构图显示了项目层次结构和资源,例如用户管理的笔记本和加密密钥。

蓝图的架构。

此架构中的边界称为信任较高的边界。它有助于保护 Virtual Private Cloud (VPC) 中使用的机密数据。数据科学家必须通过信任较高的边界访问数据。如需了解详情,请参阅 VPC Service Controls

信任较高的边界包含与机密数据交互的每项云资源,这有助于您管理数据治理控制。用户管理的笔记本、BigQuery 和 Cloud Storage 等服务在边界内具有相同的信任级别。

该架构还可创建安全控制措施,帮助您执行以下操作:

  • 降低企业中的数据科学家所使用的设备的数据渗漏风险。
  • 保护您的笔记本实例免受外部网络流量的影响。
  • 限制对托管笔记本实例的虚拟机的访问。

组织结构

借助 Resource Manager,您可以按项目、文件夹和组织对资源进行逻辑分组。下图展示了一个资源层次结构,其中的文件夹表示不同的环境,例如生产环境或开发环境。

包含生产文件夹和开发者文件夹的资源层次结构。

在您的生产文件夹中,创建一个代表受信任的环境的新文件夹。

将组织政策添加到您创建的受信任的文件夹中。以下部分介绍如何在文件夹、子文件夹和项目中组织信息。

受信任的文件夹

此蓝图可帮助您在用户管理的笔记本的生产文件夹中引入新的子文件夹,以及笔记本实例通过 BigQuery 使用的任何数据,从而隔离数据。下表介绍了组织中文件夹的关系,并列出了此蓝图使用的文件夹。

文件夹 说明
production 包含云资源的项目,此类资源已经过测试并且可供使用。
trusted 包含含有机密数据的笔记本实例的项目和资源。此文件夹是一个子文件夹,属于 production 文件夹的子级。

组织内的项目

此蓝图可帮助您使用项目隔离环境的各个部分。由于这些项目没有项目所有者,因此您必须为相应的 IAM 群组创建显式 IAM 政策绑定。

下表介绍了您在组织内创建所需项目的位置。

项目 父文件夹 说明
trusted-kms trusted 其中包含的服务可管理用于保护数据的加密密钥(例如 Cloud HSM)。此项目位于较高的信任边界内。
trusted-data trusted 包含处理机密数据的服务(例如 BigQuery)。此项目位于较高的信任边界内。
trusted-analytics trusted 包含数据科学家使用的用户管理的笔记本。 此项目位于较高的信任边界内。

了解您应用的安全控制措施

本部分讨论 Google Cloud 中帮助您保护笔记本实例的安全控制措施。本文档中介绍的方法使用多层控制措施来帮助保护敏感数据。我们建议您根据企业的需要来调整这些控制层。

组织政策设置

组织政策服务用对 Google Cloud 组织内受支持的资源配置限制。如下表中所述,您可以配置应用于 trusted 文件夹的限制条件。如需详细了解政策限制条件,请参阅组织政策限制条件

政策限制条件 说明 推荐的值
gcp.resourceLocations (列表)定义针对如何将资源部署到特定区域的限制条件。如需查看其他值,请参阅<a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="p0QLUJkJWl022ZPF8XOpExbgk/lxGfezRLhprMa5doZN+cJCz6j1rNnG0f6zRCY5lNvENQyutzDSQoNKf6mWtw1wA7mc7xehzQW0s0VnKKA=" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">有效区域组。</a{:> ["in:us-locations", "in:eu-locations"]
iam.disableServiceAccountCreation (布尔值)当值为 true 时,阻止创建服务<a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="CDx+y1R+QGNLsOA+E2D9d9ou+FEz00PeI85jCLdEq5b4Kv4CQ6p1vl0x3rS9735/" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">账号。</a{:> true
iam.disableServiceAccountKeyCreation (布尔值)当值为 true 时,阻止创建<a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="WFRYDQtmB/86VDs7PZa96dou+FEz00PeI85jCLdEq5bHy+ezA0ewJmDnHN78IEaq/uqVRhG/IldRkC2L0Y9bBQ==" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">服务账号密钥。</a{:> true
iam.automaticIamGrantsForDefaultServiceAccounts (布尔值)当值为 true 时,阻止默认服务账号在创建时被授予项目的任何 IAM 角色。 true
compute.requireOsLogin (布尔值)当值为 true 时,启用 OS Login。如需详情,请查看 <a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="Mh2WvN3PzmbL/6M7AMJ+U8xdrud5wj8XJuhclBrl/6o=" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">OS Login。</a{:> true
constraints/compute.restrictProtocolForwardingCreationForTypes (列表)新转发规则仅限内部使用。 ["is:INTERNAL"]
compute.restrictSharedVpcSubnetworks (列表)定义符合条件的资源可以使用的一组共享 VPC 子网。提供具有共享 VPC 子网的项目的名称。

VPC_SUBNET 子网替换为您希望用户管理的笔记本使用的专用子网的资源 ID。
["under:projects/VPC_SUBNET"]
compute.vmExternalIpAccess (列表)定义有权使用外部 IP 地址的一组 Compute Engine 虚拟机实例。 deny all=true
compute.skipDefaultNetworkCreation (布尔值)当值为 true 时,会导致 Google Cloud 在 Google Cloud 资源创建期间跳过默认网络和相关资源的创建。 true
compute.disableSerialPortAccess (布尔值)当值为 true 时,阻止串行端口访问 Compute Engine 虚拟机。 true
compute.disableSerialPortLogging (布尔值)当值为 true 时,阻止串行端口从 Compute Engine 虚拟机记录到 Cloud Logging。 true

如需详细了解其他政策控制措施,请参阅 Google Cloud 企业基础蓝图

身份验证和授权

此蓝图可帮助您建立可应用于用户管理的笔记本的 IAM 控制措施和访问模式。还可帮助您通过以下方式定义访问模式:

  • 使用信任较高的数据科学家群组。单个身份未获得访问数据的权限。
  • 定义一个名为 restrictedDataViewer 的自定义 IAM 角色。
  • 使用最小权限原则限制对数据的访问权限。

用户和群组

信任较高的边界具有两个角色,如下所示:

  • 数据所有者,负责对 BigQuery 中的数据进行分类。
  • 可信数据科学家,可处理机密数据。

您可以将这些角色与群组相关联。您可以添加与群组匹配的角色,而不是向各个身份授予该角色。

此蓝图在数据科学家与其笔记本实例之间定义一对一映射,以便只有单个数据科学家身份可以访问笔记本实例,从而有助于强制执行最小权限。单个数据科学家不会被授予笔记本实例的编辑者权限。

下表显示以下信息:

  • 您分配给群组的角色。
  • 您在项目级为群组分配的 IAM 角色。
说明 角色 项目
data-owner@example.com 成员负责数据分类和管理 BigQuery 中的数据。 <a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="qZGUxiLwMwSqAayYOaEAYsqqqBP4p/061BE24HsZBYzqnuNSkSxnVKwqYjVml1pv" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">roles/bigquery.dataOwner</a{:> trusted-data
trusted-data-scientist@example.com 成员可以访问受信任的文件夹内的数据。 roles/restrictedDataViewer(自定义) trusted-data

用户管理的服务账号

您可以创建用户管理的服务账号,供用户管理的笔记本用来取代 Compute Engine 默认服务账号。下表中定义了用于笔记本实例的服务账号的角色。

服务账号 说明 角色 项目
sa-p-notebook-compute@trusted-analytics.iam.gserviceaccount.com Vertex AI 用于预配笔记本实例的服务账号。
  • roles/restrictedDataViewer(自定义)
  • <a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="qZGUxiLwMwSqAayYOaEAYsqqqBP4p/061BE24HsZBYzqnuNSkSxnVKwqYjVml1pv" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">roles/bigquery.jobUser</a{:>
  • <a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="F09OE/SDdsh4rSUv6kg1NJzBt276nqedo2zyLe4cxCi9OImFy9Pn6CEbIlOwglwwkXtNx3LSV4gEFf1hFSv84Q==" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">roles/cloudkms.cryptoKeyEncrypterDecrypter</a{:>
  • roles/compute.instanceAdmin
  • roles/notebooks.viewer
trusted-analytics

通过提供对指定客户管理的加密密钥 (CMEK) 的 Google 管理服务账号访问权限,该蓝图还可以帮助您配置代表您的用户管理的笔记本的 Google 管理服务账号。此特定于资源的授予操作将最小权限应用至用户管理的笔记本使用的密钥。

由于项目没有定义项目所有者,因此数据科学家无权管理该密钥。

自定义角色

在蓝图中,您可以通过移除导出权限来创建 roles/restrictedDataViewer 自定义角色。自定义角色基于预定义的 BigQuery dataViewer 角色,可让用户从 BigQuery 表中读取数据。您可以将此角色分配给 trusted-data-scientists@example.com 群组。下表显示了 roles/restrictedDataViewer 角色使用的权限。

自定义角色名称 说明 权限
roles/restrictedDataViewer 允许信任较高的边界内的笔记本实例从 BigQuery 中查看敏感数据。

基于不具有导出权限(例如 bigquery.models.export)的 roles/bigquery.dataViewer <a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="qZGUxiLwMwSqAayYOaEAYsqqqBP4p/061BE24HsZBYzqnuNSkSxnVKwqYjVml1pv" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">role
。</a{:>
bigquery.datasets.get
bigquery.datasets.getIamPolicy
bigquery.models.getData
bigquery.models.getMetadata
bigquery.models.list
bigquery.routines.get
bigquery.routines.list
bigquery.tables.get
bigquery.tables.getData
bigquery.tables.getIamPolicy
bigquery.tables.list
resourcemanager.projects.get
resourcemanager.projects.list

最低权限

此蓝图可帮助您授予具有最低级别权限的角色。例如,您需要在单个数据科学家身份与笔记本实例之间配置一对一映射,而不是配置与服务账号的共享映射。限制权限有助于防止数据科学家直接登录托管其笔记本实例的实例。

特权访问权限

信任较高的数据科学家群组 trusted-data-scientists@example.com 中的用户具有特权访问权限。此访问权限级别意味着这些用户拥有可以访问机密数据的身份。与您的身份团队合作,为这些数据科学家身份提供启用了两步验证硬件安全密钥

网络

您可以为笔记本指定共享 VPC 环境,例如由 Google Cloud 企业基础网络脚本定义的共享 VPC 环境。

笔记本实例的网络具有以下属性:

  • 使用没有外部 IP 地址的专用受限网络的共享 VPC。
  • 限制性防火墙规则。
  • VPC Service Controls 边界,包含用户管理的笔记本与之交互的所有服务和项目。
  • Access Context Manager 政策。

受限的共享 VPC

您可以将用户管理的笔记本配置为使用您指定的共享 VPC。由于需要使用 OS Login,因此共享 VPC 可最大限度地减少对笔记本实例的访问。您可以使用 Identity-Aware Proxy (IAP) 为数据科学家配置显式访问权限。

您还可以使用 restricted.googleapis.com 网域在共享 VPC 中配置与 Google API 和服务的专用连接。此配置使您的环境中的服务能够支持 VPC Service Controls。

如需查看有关如何设置共享受限 VPC 的示例,请参阅安全基础蓝图网络配置 Terraform 脚本

VPC Service Controls 边界

此蓝图可帮助您使用 VPC Service Controls 为受信任的环境建立信任较高的边界。

服务边界是一种组织级层的控制措施,可通过降低数据渗漏的风险来帮助保护项目中的 Google Cloud 服务。

下表介绍如何配置 VPC Service Controls 边界。

属性 注意事项
projects 包括包含使用用户管理的笔记本的数据科学家访问的数据的所有项目,包括密钥。 ["trusted-kms"
"trusted-data"
"trusted-analytics"]
services 根据需要添加其他服务。 ["compute.googleapis.com",
"storage.googleapis.com",
"notebooks.googleapis.com",
"bigquery.googleapis.com",
"datacatalog.googleapis.com",
"dataflow.googleapis.com",
"dlp.googleapis.com",
"cloudkms.googleapis.com",
"secretmanager.googleapis.com",
"cloudasset.googleapis.com",
"cloudfunctions.googleapis.com",
"pubsub.googleapis.com",
"monitoring.googleapis.com",
"logging.googleapis.com"]
access_level 添加 <a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="lusaVihyw0i6CzgawuRRYyk10Dou6dGBPtPXPAqkVYhqg3ciWN7dEYftf8SKI5K5" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">Access Context Manager 原则,其符合安全要求且包含更详细的<a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="ZRmADm/vo/JQ2+/D/vUUr0WE0NcjMCq0U/gbksCiqgf1jsdW/MbrYpK1/gdk16L117PUzYIUuMKSr0A78yDcsQ==" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">端点验证原则。</a{:></a{:> ACCESS_POLICIES
如需了解详情,请参阅 <a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="RD1gsl2tw43oA/PJKkk1nXjCRwUobSSsbtnFJlSTCBLjoLksm7evman24//KLCurKSqCdTDqIF3jaY3PSD/AkaFbN8pCOwuaC/vIQ9/k+Vf+HXbWtslLzKBVhXD8qB/Z" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">Access Context Manager
</a{:>

Access Context Manager

此蓝图可帮助您使用 VPC Service Controls 边界配置 Access Context Manager。借助 Access Context Manager,您可以为项目和资源定义基于特性的精细访问权限控制。您可使用端点验证并配置政策,以满足关于访问数据的公司治理要求。请与管理员合作,为企业中的数据科学家创建访问权限政策。

我们建议您将下表中所示的值用于访问权限政策

条件 注意事项
ip_subnetworks 使用企业信任的 IP 范围。 (列表)有权访问边界内的资源的 CIDR 范围。
members 添加可访问边界的高特权用户。 (列出)用于预配的数据科学家和 Terraform 服务账号的特权身份。
device_policy.require_screen_lock 设备必须启用屏幕锁定功能。 true
device_policy.require_corp_owned 仅允许公司设备访问用户管理的笔记本。 true
device_policy.allowed_encryption_statuses 仅允许数据科学家使用加密静态数据的设备。 (list) ENCRYPTED
regions 维护区域化,以便数据科学家可以访问其笔记本实例。

仅限于您希望数据科学家在其中工作的一组最小区域。
<a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="8N5kFK1nMdX9Lm9PBXn1Gik10Dou6dGBPtPXPAqkVYhCA27lJ8v3AtKljasH4ygRJI82FsX3O5bO4YFtCsDjBg==" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">有效的区域码
(list) </a{:>

BigQuery 最小权限

此蓝图介绍了如何配置对 BigQuery 中由数据科学家使用的数据集的访问权限。在您设置的配置中,数据科学家必须具有笔记本实例才能访问 BigQuery 中的数据集。

您设置的配置还可以帮助您通过以下方式为 BigQuery 中的数据集添加以下安全层:

  • 为笔记本实例的服务账号授予访问权限。数据科学家必须具有笔记本实例才能直接访问 BigQuery 中的数据集。
  • 降低数据科学家创建不符合企业数据治理要求的数据副本的风险。需要直接与 BigQuery 交互的数据科学家必须添加到 trusted-data-scientists@example.com 群组中。

或者,如需为数据科学家提供对 BigQuery 的有限访问权限,您可以使用精细的访问权限控制,例如列级安全性。数据所有者必须与治理团队合作来创建适当的分类。然后,数据所有者可以使用敏感数据保护扫描数据集,帮助对数据集进行分类和标记以匹配分类。

密钥管理

为了帮助保护您的数据,用户管理的笔记本会使用加密密钥。密钥由 FIPS 140-2 3 级 Cloud HSM 提供支持。您在环境中创建的密钥通过以下方式帮助保护数据:

  • 为信任较高的边界内的所有服务启用 CMEK。
  • 密钥可用性可按区域配置。
  • 密钥轮替可配置。
  • 密钥访问权限受到限制。

CMEK

此蓝图可帮助您使用 CMEK,它会使用您管理的密钥为所有数据创建一个加密边界。您的环境将对信任较高的边界中的所有服务使用相同的 CMEK 密钥。使用 CMEK 的另一个好处是,您可以在不再需要笔记本实例时销毁用于保护这些实例的密钥。

密钥可用性和轮替

您可以通过创建多地区密钥环来提高可用性,从而增加密钥的可用性。

在此蓝图中,您将创建具有自动轮替值的密钥。如需设置轮替值,请遵循企业设置的安全政策。您可以更改默认值来匹配安全政策,或者在必要时更频繁地轮替密钥。

下表介绍了您为密钥配置的特性。

属性 注意事项
rotation 匹配由企业的合规轮替政策设置的值。 45 天
location 通过使用<a{: l10n-attrs-original-order="href,track-type,track-name,track-metadata-position" l10n-encrypted-href="Z98fpOVAlHdfgDS3sMyCXJRrt04oQqGzq1Aef2125xKSjPY+/eF9aEsSeoGJf8A6" track-metadata-position="body" track-name="internalLink" track-type="solution" }="">多区域位置的密钥环来提升更高的可用性。</a{:> 根据用户管理的笔记本可用区配置进行自动选择。
protection level 使用企业指定的保护级别。 HSM

密钥访问

此蓝图将密钥放在与数据资源位于不同文件夹中的 Cloud HSM 模块中,从而帮助您保护密钥。使用此方法的原因如下:

  • 任何资源都需要加密密钥才能使用该密钥。
  • 密钥管理团队与数据所有者分开。
  • 需要对密钥进行额外的控制和监控。使用单独的文件夹可让您管理独立于数据的密钥的政策。

用户管理的笔记本安全控制措施

本部分介绍的控制措施可保护用户管理的笔记本中使用的数据。此蓝图可帮助您配置用户管理的笔记本安全控制措施,如下所示:

  • 降低数据渗漏的风险。
  • 限制提升权限。

数据下载管理

默认情况下,笔记本实例允许数据科学家将数据下载或导出到其机器。该蓝图安装的启动脚本可以帮助您避免执行以下操作:

  • 将数据导出和下载到本地设备。
  • 输出笔记本实例计算的输出值。

该脚本是在 trusted_kms 项目中创建的。此蓝图通过限制访问权限和配置 CMEK 来帮助您保护存储脚本的存储分区。将脚本与用户管理的笔记本的项目分开,还有助于降低未经批准的代码添加到启动脚本中的风险。

由于将用户管理的笔记本配置为使用您的专用受限 VPC 子网,因此您的笔记本实例无法访问公共网络。此配置有助于防止数据科学家安装外部模块、访问外部数据源以及访问公共代码库。我们建议您为企业中的数据科学家设置私有工件代码库(例如 Artifact Registry)。

特权管理

此蓝图可帮助您限制分配给 trusted-data-scientists@example.com 群组的权限。例如,该群组未被分配用于创建永久性磁盘快照的角色,因为快照的本地文件系统可能包含含有来自企业的数据的笔记本实例。

此外,为了帮助防止数据科学家获取特权访问权限,请不要在笔记本实例命令行中使用 sudo 命令。此操作有助于防止数据科学家更改在笔记本实例中安装的控件,例如已获批准的软件包或日志记录。

运营安全

除了使用此蓝图确立的安全控制措施之外,您还必须配置以下运营安全政策,以确保数据在企业使用的笔记本中受到持续保护:

  • 日志记录和监控配置。
  • 漏洞管理政策。
  • 资源的公开范围。

日志记录和监控

创建层次结构后,您必须配置用于新项目的日志记录和检测控制。如需详细了解如何配置这些控制,请参阅安全基础蓝图日志记录脚本

漏洞管理

Deep Learning VM Image 会定期更新。我们建议您在现有笔记本实例中更新映像,更新频率与漏洞扫描时间表相同。您可以查看 isUpgradeable API 结果并通过 upgrade API 启动升级。

风险可见性

我们建议您使用 Security Command Center 来了解您的资源、漏洞、风险和政策。Security Command Center 会扫描您的部署,以根据相关合规性框架评估您的环境。

综合应用

如需实现本文档中所述的架构,请执行以下操作:

  1. 根据组织结构部分创建受信任的文件夹和项目。
  2. 根据您的安全政策为这些项目配置日志记录和监控控件。如需查看示例,请参阅安全基础蓝图日志记录配置
  3. 按照用户和群组中所述创建您的 IAM 群组,并将受信任的数据科学家身份添加到相应的群组中。
  4. 按照网络中所述使用共享受限 VPC 和子网设置您的网络。
  5. 按照 Access Context Manager 中的说明创建 Access Context Manager 政策。
  6. 克隆此蓝图的 GitHub 代码库
  7. 使用所需的输入创建 Terraform 环境变量文件。
  8. 将 Terraform 脚本应用于您的环境,以创建此蓝图中所述的控件。
  9. 根据您的安全和数据治理要求,审核受信任的环境。您可以针对 Security Command Center 合规性框架扫描新创建的项目。
  10. trusted-data 项目的 BigQuery 中创建数据集,或使用 data GitHub 代码库模块中提供的示例。
  11. 与企业中的数据科学家合作,测试他们对新创建的笔记本实例的访问权限。
  12. 在用户管理的笔记本环境中进行测试,检查数据科学家是否可以按预期方式与 BigQuery 中的数据进行交互。您可以在关联的 GitHub 代码库中使用示例 BigQuery 命令

资源