为设置服务角色 AWS Clean Rooms - AWS Clean Rooms

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为设置服务角色 AWS Clean Rooms

创建管理员用户

要使用 AWS Clean Rooms,您需要为自己创建一个管理员用户,并将该管理员用户添加到管理员组中。

要创建管理员用户,请选择以下选项之一。

选择一种方法来管理您的管理员 目的 方式 您也可以
在 IAM Identity Center 中

(建议)

使用短期凭证访问 AWS。

这符合安全最佳实操。有关最佳实践的信息,请参阅《IAM 用户指南》中的 IAM 中的安全最佳实践

有关说明,请参阅《AWS IAM Identity Center 用户指南》中的入门 通过在《AWS Command Line Interface 用户指南》 AWS IAM Identity Center中配置 AWS CLI 要使用的来配置编程访问权限。
在 IAM 中

(不推荐使用)

使用长期凭证访问 AWS。 按照《IAM 用户指南》中的创建用于紧急访问的 IAM 用户中的说明进行操作。 按照《IAM 用户指南》中的管理 IAM 用户的访问密钥,配置编程式访问。

为协作成员创建 IAM 角色

成员是 AWS 指参与协作的客户。

为协作成员创建 IAM 角色
  1. 请按照《AWS Identity and Access Management 用户指南》创建向 IAM 用户委派权限的角色步骤中的说明进行操作。

  2. 创建策略步骤中,选择策略编辑器中的 JSON 选项卡,然后根据授予协作成员的能力添加策略。

    AWS Clean Rooms 根据常见用例提供以下托管策略。

    有关提供的不同托管策略的信息 AWS Clean RoomsAWS 的托管策略 AWS Clean Rooms,请参阅

创建服务角色以从 Amazon S3 读取数据

AWS Clean Rooms 使用服务角色从 Amazon S3 读取数据。

有两种方法可以创建此服务角色。

  • 如果您拥有创建服务角色所必需的 IAM 权限,请使用 AWS Clean Rooms 控制台创建服务角色。

  • 如果您没有iam:CreateRoleiam:CreatePolicyiam:AttachRolePolicy权限或想要手动创建 IAM 角色,请执行以下任一操作:

    • 使用以下步骤使用自定义信任策略创建服务角色。

    • 要求管理员使用以下步骤创建服务角色。

注意

只有在您没有使用 AWS Clean Rooms 控制台创建服务角色的必要权限时,您或您的 IAM 管理员才应遵循此过程。

使用自定义信任策略创建服务角色以从 Amazon S3 读取数据
  1. 使用自定义信任策略创建角色。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用自定义信任策略创建角色(控制台)过程。

  2. 根据使用自定义信任策略创建角色(控制台)步骤使用以下自定义信任策略。

    注意

    如果您想帮助确保该角色仅在特定的协作成员资格环境中使用,则可以进一步缩小信任策略的范围。有关更多信息,请参阅 防止跨服务混淆代理

    { "Version": "2012-10-17", "Statement": [ { "Sid": "RoleTrustPolicyForCleanRoomsService", "Effect": "Allow", "Principal": { "Service": "cleanrooms.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  3. 根据使用自定义信任策略创建角色(控制台)步骤使用以下权限策略。

    注意

    以下示例策略支持读取 AWS Glue 元数据及其相应的 Amazon S3 数据所需的权限。但是,您可能需要修改此政策,具体取决于您设置 Amazon S3 数据的方式。例如,如果您为 Amazon S3 数据设置了自定义 KMS 密钥,则可能需要使用额外 AWS Key Management Service (AWS KMS) 权限修改此政策。

    您的 AWS Glue 资源和底层 Amazon S3 资源必须与 AWS Clean Rooms 协作 AWS 区域 相同。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "NecessaryGluePermissions", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases", "glue:GetTable", "glue:GetTables", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "arn:aws:glue:aws-region:accountId:database/database", "arn:aws:glue:aws-region:accountId:table/table", "arn:aws:glue:aws-region:accountId:catalog" ] }, { "Effect": "Allow", "Action": [ "glue:GetSchema", "glue:GetSchemaVersion" ], "Resource": [ "*" ] }, { "Sid": "NecessaryS3BucketPermissions", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::bucket" ], "Condition":{ "StringEquals":{ "s3:ResourceAccount":[ "s3BucketOwnerAccountId" ] } } }, { "Sid": "NecessaryS3ObjectPermissions", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3::bucket/prefix/*" ], "Condition":{ "StringEquals":{ "s3:ResourceAccount":[ "s3BucketOwnerAccountId" ] } } } ] }
  4. 将每个 placeholder 替换为您自己的信息。

  5. 继续按照使用自定义信任策略创建角色(控制台)步骤创建角色。

创建服务角色以读取来自亚马逊 Athena 的数据

AWS Clean Rooms 使用服务角色从 Amazon Athena 读取数据。

使用自定义信任策略创建服务角色以从 Athena 读取数据
  1. 使用自定义信任策略创建角色。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用自定义信任策略创建角色(控制台)过程。

  2. 根据使用自定义信任策略创建角色(控制台)步骤使用以下自定义信任策略。

    注意

    如果您想帮助确保该角色仅在特定的协作成员资格环境中使用,则可以进一步缩小信任策略的范围。有关更多信息,请参阅 防止跨服务混淆代理

    { "Version": "2012-10-17", "Statement": [ { "Sid": "RoleTrustPolicyForCleanRoomsService", "Effect": "Allow", "Principal": { "Service": "cleanrooms.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  3. 根据使用自定义信任策略创建角色(控制台)步骤使用以下权限策略。

    注意

    以下示例策略支持读取 AWS Glue 元数据及其相应的 Athena 数据所需的权限。但是,您可能需要修改此政策,具体取决于您设置 Amazon S3 数据的方式。例如,如果您已经为自己的 Amazon S3 数据设置了自定义 KMS 密钥,则可能需要修改此政策,使其具有额外的 AWS KMS 权限。

    您的 AWS Glue 资源和底层 Athena 资源必须与协作 AWS 区域 相同。 AWS Clean Rooms

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:GetDataCatalog", "athena:GetWorkGroup", "athena:GetTableMetadata", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:StartQueryExecution" ], "Resource": [ "arn:aws:athena:region:accountId:workgroup/workgroup", "arn:aws:athena:region:accountId:datacatalog/AwsDataCatalog" ] }, { "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTable", "glue:GetPartitions" ], "Resource": [ "arn:aws:glue:region:accountId:catalog", "arn:aws:glue:region:accountId:database/database name", "arn:aws:glue:region:accountId:table/database name/table name" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketLocation", "s3:AbortMultipartUpload", "s3:ListBucket", "s3:PutObject", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::bucket", "arn:aws:s3:::bucket/*" ] }, { "Effect": "Allow", "Action": "lakeformation:GetDataAccess", "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:region:accountId:key/*" } ] }
  4. 将每个 placeholder 替换为您自己的信息。

  5. 继续按照使用自定义信任策略创建角色(控制台)步骤创建角色。

设置 Lake Formation 权限

服务角色必须具有 GDC 视图的 “选择描述” 访问权限,并对存储 GDC 视图的 AWS Glue 数据库具有 “描述” 权限。

Set up Lake Formation permissions for a GDC View
为 GDC 视图设置 Lake Formation 权限
  1. 打开 Lake Formation 控制台 https://console.aws.amazon.com/lakeformation/

  2. 在导航窗格中的数据目录下,选择数据库,然后选择视图

  3. 选择您的视图,然后在 “操作” 下选择 “授权”。

  4. 对于委托人,在 IAM 用户和角色下,选择您的服务角色。

  5. 对于 “查看” 权限,在 “查看权限” 下,选择 “选择描述”。

  6. 选择授权

Set up Lake Formation permissions for the AWS Glue database that the GDC View is stored in
为存储 GDC 视图的 AWS Glue 数据库设置 Lake Formation 权限
  1. 打开 Lake Formation 控制台 https://console.aws.amazon.com/lakeformation/

  2. 在导航窗格中的数据目录下,选择数据库

  3. 选择 AWS Glue 数据库,然后在 “操作” 下选择 “授权”。

  4. 对于委托人,在 IAM 用户和角色下,选择您的服务角色。

  5. 对于数据库权限,在数据库权限下,选择描述

  6. 选择授权

创建服务角色以从 Snowflake 读取数据

AWS Clean Rooms 使用服务角色检索您的 Snowflake 凭证,以便从该来源读取您的数据。

可以使用两种方法创建此服务角色:

  • 如果您拥有创建服务角色所必需的 IAM 权限,请使用 AWS Clean Rooms 控制台创建服务角色。

  • 如果您没有iam:CreateRoleiam:CreatePolicyiam:AttachRolePolicy权限或想要手动创建 IAM 角色,请执行以下任一操作:

    • 使用以下步骤使用自定义信任策略创建服务角色。

    • 要求管理员使用以下步骤创建服务角色。

注意

只有在您没有使用 AWS Clean Rooms 控制台创建服务角色的必要权限时,您或您的 IAM 管理员才应遵循此过程。

使用自定义信任策略创建服务角色以从 Snowflake 读取数据
  1. 使用自定义信任策略创建角色。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用自定义信任策略创建角色(控制台)过程。

  2. 根据使用自定义信任策略创建角色(控制台)步骤使用以下自定义信任策略。

    注意

    如果您想帮助确保该角色仅在特定的协作成员资格环境中使用,则可以进一步缩小信任策略的范围。有关更多信息,请参阅 防止跨服务混淆代理

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowIfSourceArnMatches", "Effect": "Allow", "Principal": { "Service": "cleanrooms.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ForAnyValue:ArnEquals": { "aws:SourceArn": [ "arn:aws:cleanrooms:region:accountId:membership/membershipId", "arn:aws:cleanrooms:region:queryRunnerAccountId:membership/queryRunnerMembershipId" ] } } } ] }
  3. 根据使用自定义信任策略创建角色(控制台)过程使用以下权限策略之一。

    使用客户拥有的 KMS 密钥加密的机密的权限策略

    { "Version": "2012-10-17", "Statement": [ { "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:region:secretAccountId:secret:secretIdentifier", "Effect": "Allow" }, { "Sid": "AllowDecryptViaSecretsManagerForKey", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:keyOwnerAccountId:key/keyIdentifier", "Effect": "Allow", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.region.amazonaws.com", "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:region:secretAccountId:secret:secretIdentifier" } } } ] }

    使用加密的机密的权限策略 AWS 托管式密钥

    { "Version": "2012-10-17", "Statement": [ { "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:region:accountId:secret:secretIdentifier", "Effect": "Allow" } ] }
  4. 将每个 placeholder 替换为您自己的信息。

  5. 继续按照使用自定义信任策略创建角色(控制台)步骤创建角色。

创建服务角色来接收结果

注意

如果您是只能接收结果的成员(在控制台中,您的成员能力为仅接收结果),请按照以下步骤操作。

如果您是既能查询也能接收结果的成员(在控制台中,您的成员能力既是查询又是接收结果),则可以跳过此步骤。

对于只能接收结果的协作成员, AWS Clean Rooms 使用服务角色将协作中查询数据的结果写入指定的 S3 存储桶。

可以使用两种方法创建此服务角色:

  • 如果您拥有创建服务角色所必需的 IAM 权限,请使用 AWS Clean Rooms 控制台创建服务角色。

  • 如果您没有iam:CreateRoleiam:CreatePolicyiam:AttachRolePolicy权限或想要手动创建 IAM 角色,请执行以下任一操作:

    • 使用以下步骤使用自定义信任策略创建服务角色。

    • 要求管理员使用以下步骤创建服务角色。

注意

只有在您没有使用 AWS Clean Rooms 控制台创建服务角色的必要权限时,您或您的 IAM 管理员才应遵循此过程。

使用自定义信任策略创建用于接收结果的服务角色
  1. 使用自定义信任策略创建角色。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用自定义信任策略创建角色(控制台)过程。

  2. 根据使用自定义信任策略创建角色(控制台)步骤使用以下自定义信任策略。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowIfExternalIdMatches", "Effect": "Allow", "Principal": { "Service": "cleanrooms.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "sts:ExternalId": "arn:aws:*:region:*:dbuser:*/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa*" } } }, { "Sid": "AllowIfSourceArnMatches", "Effect": "Allow", "Principal": { "Service": "cleanrooms.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ForAnyValue:ArnEquals": { "aws:SourceArn": [ "arn:aws:cleanrooms:us-east-1:555555555555:membership/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa" ] } } } ] }
  3. 根据使用自定义信任策略创建角色(控制台)步骤使用以下权限策略。

    注意

    以下示例策略支持读取 AWS Glue 元数据及其相应的 Amazon S3 数据所需的权限。但是,您可能需要修改此策略,具体取决于您设置 S3 数据的方式。

    您的 AWS Glue 资源和底层 Amazon S3 资源必须与 AWS Clean Rooms 协作 AWS 区域 相同。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::bucket_name" ], "Condition": { "StringEquals": { "aws:ResourceAccount":"accountId" } } }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket_name/optional_key_prefix/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount":"accountId" } } } ] }
  4. 用你自己的信息替换每一个placeholder信息:

    • region - AWS 区域的名称。例如,us-east-1

    • a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa— 可以查询的成员的会员 ID。可以在协作的详细信息选项卡上找到成员身份 ID。这样可以确保 AWS Clean Rooms 只有当该成员在此协作中运行分析时才担任该角色。

    • arn:aws:cleanrooms:us-east-1:555555555555:membership/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa— 可以查询的成员的单一会员 ARN。可以在协作的详细信息选项卡上找到成员身份 ARN。这样可以确保 AWS Clean Rooms 只有当该成员在此协作中运行分析时才担任该角色。

    • bucket_name— S3 存储桶的亚马逊资源名称 (ARN)Amazon 资源名称 (ARN) 可在 Amazon S3 存储桶的属性选项卡上找到。

    • accountId— S3 存储桶所在的 AWS 账户 ID。

      bucket_name/optional_key_prefix亚马逊 S3 中结果目标的亚马逊资源名称 (ARN)Amazon 资源名称 (ARN) 可在 Amazon S3 存储桶的属性选项卡上找到。

  5. 继续按照使用自定义信任策略创建角色(控制台)步骤创建角色。