为设置服务角色 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. 按照用户指南中的创建向 IAM 用户委派权限的角色过程进行AWS Identity and Access Management 操作

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

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

    如果要... 然后使用...
    查看资源和元数据 AWS 托管策略:AWSCleanRoomsReadOnlyAccess
    查询 AWS 托管策略:AWSCleanRoomsFullAccess
    查询和接收结果 AWS 托管策略:AWSCleanRoomsFullAccess
    管理协作资源但不要查询 AWS 托管策略:AWSCleanRoomsFullAccessNoQuerying

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

创建服务角色来读取数据

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

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

如果... 那么
您拥有创建服务角色所必需的 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": "RoleTrustPolicyForCleanRoomsService", "Effect": "Allow", "Principal": { "Service": "cleanrooms.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  3. 根据使用自定义信任策略创建角色(控制台)过程使用以下权限策略

    注意

    以下示例策略支持读取 AWS Glue 元数据及其相应的 Amazon S3 数据所需的权限。但是,您可能需要修改此策略,具体取决于您设置 S3 数据的方式。例如,如果您为 S3 数据设置了自定义 KMS 密钥,则可能需要修改此策略,使其具有额外的 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. 用您自己的信息替换每个占位符

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

创建服务角色以接收结果

注意

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

如果您是同时可以查询和接收结果的成员(在控制台中,您的成员权限查询接收结果),则可以跳过此过程。

对于只能接收结果的协作成员, AWS Clean Rooms 使用服务角色将协作中查询数据的结果写入指定的 Amazon 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. 用您自己的信息替换每个占位符

    • 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-exampleaaaa — 可以查询的会员的单一会员 ARN。可以在协作的详细信息选项卡上找到成员身份 ARN。这样可以确保 AWS Clean Rooms 只有当该成员在此协作中运行分析时才担任该角色。

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

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

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

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