Snowflake Data Clean Room:来自 Amazon S3 桶的外部数据

备注

Snowflake Data Clean Rooms 目前不支持数据主体同意管理。客户有责任确保其已获得使用其 Clean Room 中关联的数据的所有必要权利和同意。客户在使用 Data Clean Room 时,还必须确保遵守所有适用的法律和法规,包括与第三方连接器相关的法律法规。

Snowflake Data Clean Room 中分析的数据可以是 Snowflake 的原生数据,也可以是云提供商存储中的外部数据,或两者兼而有之。连接器 允许协作者从 Clean Room 内访问云提供商的外部数据。

外部数据连接器使用 Snowflake External Tables 来提供数据。请注意,在 Clean Room 中链接 External Tables 会增加安全风险。因此,在使用者使用连接器包含外部数据之前,提供商必须明确允许在 Clean Room 中使用 External Tables。如果提供商使用外部数据连接器,则系统会警告使用者正在使用 External Tables,以便他们决定是否安装 Clean Room。

本主题介绍如何使用连接器,以便 Clean Room 分析人员可以访问来自 Amazon S3 桶的外部数据。

重要

第三方连接器不由 Snowflake 提供,并可能受附加条款的约束。 提供这些集成是为了方便您的使用,但您必须对从这些集成发送或接收的任何内容负责。

客户有责任获得与使用 Snowflake Data Clean Room 有关的任何必要同意。请确保您在使用 Snowflake Data Clean Room 时遵守适用的法律和法规,包括与用于激活目的的第三方连接器相关的法律和法规。

先决条件

要使用外部数据的连接器,请执行以下操作:

连接到 S3 桶

要允许 Clean Room 协作者访问来自 Amazon S3 存储的数据,流程包括以下步骤:

  1. 在 AWS 中,完成以下过程:

    1. 创建具有特定权限的 IAM 策略

    2. 创建 IAM 角色,引用新的 IAM 策略。

    3. 复制 S3 桶和 IAM 角色的标识符

  2. 在 Clean Room 环境中,创建连接器

  3. 在 AWS 中,使用来自 Clean Room 环境的服务账户标识符,更新 IAM 角色

  4. 在 Clean Room 环境中,使用 AWS 对连接器进行身份验证

在 AWS 中创建 IAM 策略

Snowflake 建议您为连接器创建专用 IAM 策略,包含访问 S3 桶所需的必要权限。在后续步骤中,您将此策略添加到表示连接器标识的 IAM 角色。

要完成此过程,您需要知道与 Clean Room 环境关联的账户区域。

  • 要查找与 Clean Room 环境关联的账户区域,登录 Clean Room,然后选择 Connectors » Cleanrooms » Snowflake

要创建包含 S3 桶访问权限的 IAM 策略,请执行以下步骤:

  1. 登录 AWS Management Console

  2. Console Home 仪表板中,选择 Identity and Access Management (IAM)

  3. 在左侧导航栏中,选择 Account settings

  4. Security Token Service (STS) 部分中,找到与 Clean Room 环境关联的账户区域,然后将其切换到 Active

  5. 在左侧导航栏中,选择 Policies

  6. 选择 Create policy

  7. Policy editor 部分中,选择 JSON

  8. 复制以下策略正文并将其粘贴到策略编辑器,然后编辑 JSON 以包含您的桶名称 (<bucket>) and folder path prefix (<prefix>):

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject",
            "s3:GetObjectVersion"
          ],
          "Resource": "arn:aws:s3:::<bucket>/<prefix>/*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:ListBucket",
            "s3:GetBucketLocation"
          ],
          "Resource": "arn:aws:s3:::<bucket>",
          "Condition": {
            "StringLike": {
              "s3:prefix": [
                "<prefix>/*"
              ]
            }
          }
        }
      ]
    }
    
    Copy

    请务必保留 ::: 格式。例如,如果您的 S3 桶 URI 是 s3://sales/customers/,则 Resource JSON 字段的值是 arn:aws:s3:::sales/customers/*

  9. 选择 Next

  10. 输入策略名称(例如,snowflake_cleanroom_access),然后选择 Create policy

在 AWS 中创建 IAM 角色

AWS IAM 角色代表连接器的身份。在创建过程中,您将角色与新的 IAM 策略关联,授予连接器在访问 S3 桶时所需的权限。

要创建新的 IAM 角色,请执行以下步骤:

  1. 从 AWS 中的 Console Home 仪表板,选择 Identity and Access Management (IAM)

  2. 在左侧导航栏中,选择 Roles

  3. 选择 Create role

  4. Trusted entity type 部分中,选择 AWS account

  5. An AWS account 部分中,选择 Another AWS account

  6. Account ID 字段中,输入包含 12 位数字的临时占位符值(例如,当前 AWS 账户的账户标识符)。您稍后将替换此值。

  7. 选择 Require external id,然后输入临时占位符值,例如 0000。您稍后将替换此值。

  8. 选择 Next

  9. Permissions policies 部分中,找到您在之前的过程中创建的策略,并选中它的复选框。

  10. 选择 Next

  11. 输入角色名称(例如,snowflake_cleanroom_connector),然后选择 Create role

复制 S3 桶和 IAM 角色标识符

在 Clean Room 环境中创建连接器时,您需要 S3 桶和 IAM 角色的标识符。在创建连接器之前,请按照以下步骤复制并保存这些标识符:

要复制 IAM 角色标识符,请执行以下步骤:

  1. 从 AWS 中的 Console Home 仪表板,选择 Identity and Access Management (IAM)

  2. 在左侧导航栏中,选择 Roles

  3. 找到您在之前的过程中创建的角色,并选择它以将其打开。

  4. Summary 部分中,找到 ARN,然后选择复制图标。保存此角色标识符以备后用。

要复制 S3 桶标识符,请执行以下步骤:

  1. 从 AWS 中的 Console Home 仪表板,选择 S3

  2. 找到 S3 桶的名称,然后选中以将其打开。桶必须包含您希望在 Clean Room 中包含的数据。

  3. 导航到桶的前缀,然后选择 Copy S3 URI。保存此桶标识符以备后用。

    不要尝试选择 Objects 部分中的按钮。

创建连接器并复制服务账户详细信息

现在,您可以在 Clean Room 环境中创建连接器。创建连接器后,复制有关其服务账户的详细信息,以便它可以与 AWS 中的 IAM 角色关联。

要在 Clean Room 环境中创建连接器,请执行以下步骤:

  1. 导航至 Snowflake Data Clean Room 登录页面

  2. 输入电子邮件地址,然后选择 Continue

  3. 输入密码。

  4. 如果您与多个 Clean Room 环境相关联,请选择要使用的 Snowflake 账户。

  5. 在左侧导航栏中,选择 Connectors,然后展开 Amazon Web Services 部分。

  6. AWS Role ARN 字段中,输入您从 AWS 中复制的 IAM 角色的标识符,例如 arn:aws:iam::772412615275:role/mub00002_vhb71832_role

  7. S3 Bucket URI 字段中,输入您从 AWS 中复制的 S3 桶的标识符,例如 s3://sales/customer_data/

  8. 选择 Create

    Clean Room 会生成一个用于访问 AWS 的服务账户。

  9. 使用复制图标复制连接器服务账户的 PrincipalExternal ID 标识符,并将其保存以供后续过程使用。

使用服务账户详细信息更新 IAM 角色

现在,您可以使用与连接器的服务账户关联的标识符更新 IAM 角色。要更新 IAM 角色,请执行以下步骤:

  1. 登录 AWS Management Console

  2. Console Home 仪表板中,选择 Identity and Access Management (IAM)

  3. 在左侧导航栏中,选择 Roles

  4. 找到您之前创建的角色,并选择它以将其打开。

  5. 选择 Trust relationships 选项卡。

  6. 选择 Edit trust policy

  7. 修改信任策略的 JSON,以包含来自连接器服务账户的标识符。您之前复制了这些标识符。对 JSON 进行以下更改:

    • AWS JSON 字段的值替换为您从 Clean Room 环境中复制的 Principal 值。

      在以下示例中,Clean Room 环境中 Principal 的值为 arn:aws:iam::115136555074:user/x4gy-s-p2345g38

    • sts:ExternalId JSON 字段的值替换为您从 Clean Room 环境中复制的 External ID 值。

      在以下示例中,Clean Room 环境中 External ID 的值为 UCA56729_SFCRole=4447_uht2344sdf3mrWLNRM0y3bE=

      {
        "Version": "2012-10-17",
        "Statement": [
          {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Principal": {
              "AWS": "arn:aws:iam::115136555074:user/x4gy-s-p2345g38"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
              "StringEquals": {
                "sts:ExternalId": "UCA56729_SFCRole=4447_uht2344sdf3mrWLNRM0y3bE="
              }
            }
          }
        ]
      }
      
      Copy
  8. 选择 Update policy

对连接器进行身份验证

现在,您可以对连接器进行身份验证,以确保它可以访问 S3 桶。要对连接器进行身份验证,请执行以下步骤:

  1. 如果您已退出 Clean Room 环境,请参阅 登录 Web 应用程序

  2. 在 Clean Room 环境中,选择 Connectors 并展开 Amazon Web Services 部分。

  3. 选择您要连接到的 S3 桶,然后选择 Authenticate

移除在 AWS 上访问外部数据的权限

要从 Clean Room 环境中移除对 S3 桶的访问权限,请执行以下步骤:

  1. 导航至 Snowflake Data Clean Room 登录页面

  2. 输入电子邮件地址,然后选择 Continue

  3. 输入密码。

  4. 如果您与多个 Clean Room 环境相关联,请选择要使用的 Snowflake 账户。

  5. 在左侧导航栏中,选择 Connectors 并展开 Amazon Web Services 部分。

  6. 找到当前连接的 S3 桶,然后选择垃圾桶图标。

语言: 中文