本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为设置服务角色 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 角色
-
请按照《AWS Identity and Access Management 用户指南》的创建向 IAM 用户委派权限的角色步骤中的说明进行操作。
-
在创建策略步骤中,选择策略编辑器中的 JSON 选项卡,然后根据授予协作成员的能力添加策略。
AWS Clean Rooms 根据常见用例提供以下托管策略。
如果要... 然后使用... 查看资源和元数据 AWS 托管策略:AWSCleanRoomsReadOnlyAccess Query AWS 托管策略:AWSCleanRoomsFullAccess 查询和接收结果 AWS 托管策略:AWSCleanRoomsFullAccess 管理协作资源但不查询 AWS 托管策略:AWSCleanRoomsFullAccessNoQuerying 有关提供的不同托管策略的信息 AWS Clean RoomsAWS 的托管策略 AWS Clean Rooms,请参阅
创建服务角色以从 Amazon S3 读取数据
AWS Clean Rooms 使用服务角色从 Amazon S3 读取数据。
有两种方法可以创建此服务角色。
-
如果您拥有创建服务角色所必需的 IAM 权限,请使用 AWS Clean Rooms 控制台创建服务角色。
-
如果您没有
iam:CreateRole
iam:CreatePolicy
、iam:AttachRolePolicy
权限或想要手动创建 IAM 角色,请执行以下任一操作:-
使用以下步骤使用自定义信任策略创建服务角色。
-
要求管理员使用以下步骤创建服务角色。
-
注意
只有在您没有使用 AWS Clean Rooms 控制台创建服务角色的必要权限时,您或您的 IAM 管理员才应遵循此过程。
使用自定义信任策略创建服务角色以从 Amazon S3 读取数据
-
使用自定义信任策略创建角色。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用自定义信任策略创建角色(控制台)过程。
-
根据使用自定义信任策略创建角色(控制台)步骤使用以下自定义信任策略。
注意
如果您想帮助确保该角色仅在特定的协作成员资格环境中使用,则可以进一步缩小信任策略的范围。有关更多信息,请参阅 防止跨服务混淆代理。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RoleTrustPolicyForCleanRoomsService", "Effect": "Allow", "Principal": { "Service": "cleanrooms.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
根据使用自定义信任策略创建角色(控制台)步骤使用以下权限策略。
注意
以下示例策略支持读取 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
" ] } } } ] } -
将每个
placeholder
替换为您自己的信息。 -
继续按照使用自定义信任策略创建角色(控制台)步骤创建角色。
创建服务角色以读取来自亚马逊 Athena 的数据
AWS Clean Rooms 使用服务角色从 Amazon Athena 读取数据。
使用自定义信任策略创建服务角色以从 Athena 读取数据
-
使用自定义信任策略创建角色。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用自定义信任策略创建角色(控制台)过程。
-
根据使用自定义信任策略创建角色(控制台)步骤使用以下自定义信任策略。
注意
如果您想帮助确保该角色仅在特定的协作成员资格环境中使用,则可以进一步缩小信任策略的范围。有关更多信息,请参阅 防止跨服务混淆代理。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RoleTrustPolicyForCleanRoomsService", "Effect": "Allow", "Principal": { "Service": "cleanrooms.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
根据使用自定义信任策略创建角色(控制台)步骤使用以下权限策略。
注意
以下示例策略支持读取 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/*" } ] } -
将每个
placeholder
替换为您自己的信息。 -
继续按照使用自定义信任策略创建角色(控制台)步骤创建角色。
设置 Lake Formation 权限
服务角色必须具有 GDC 视图的 “选择和描述” 访问权限,并对存储 GDC 视图的 AWS Glue 数据库具有 “描述” 权限。
创建服务角色以从 Snowflake 读取数据
AWS Clean Rooms 使用服务角色检索您的 Snowflake 凭证,以便从该来源读取您的数据。
可以使用两种方法创建此服务角色:
-
如果您拥有创建服务角色所必需的 IAM 权限,请使用 AWS Clean Rooms 控制台创建服务角色。
-
如果您没有
iam:CreateRole
iam:CreatePolicy
、iam:AttachRolePolicy
权限或想要手动创建 IAM 角色,请执行以下任一操作:-
使用以下步骤使用自定义信任策略创建服务角色。
-
要求管理员使用以下步骤创建服务角色。
-
注意
只有在您没有使用 AWS Clean Rooms 控制台创建服务角色的必要权限时,您或您的 IAM 管理员才应遵循此过程。
使用自定义信任策略创建服务角色以从 Snowflake 读取数据
-
使用自定义信任策略创建角色。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用自定义信任策略创建角色(控制台)过程。
-
根据使用自定义信任策略创建角色(控制台)步骤使用以下自定义信任策略。
注意
如果您想帮助确保该角色仅在特定的协作成员资格环境中使用,则可以进一步缩小信任策略的范围。有关更多信息,请参阅 防止跨服务混淆代理。
{ "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
" ] } } } ] } -
根据使用自定义信任策略创建角色(控制台)过程使用以下权限策略之一。
使用客户拥有的 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" } ] } -
将每个
placeholder
替换为您自己的信息。 -
继续按照使用自定义信任策略创建角色(控制台)步骤创建角色。
创建服务角色来接收结果
注意
如果您是只能接收结果的成员(在控制台中,您的成员能力为仅接收结果),请按照以下步骤操作。
如果您是既能查询也能接收结果的成员(在控制台中,您的成员能力既是查询又是接收结果),则可以跳过此步骤。
对于只能接收结果的协作成员, AWS Clean Rooms 使用服务角色将协作中查询数据的结果写入指定的 S3 存储桶。
可以使用两种方法创建此服务角色:
-
如果您拥有创建服务角色所必需的 IAM 权限,请使用 AWS Clean Rooms 控制台创建服务角色。
-
如果您没有
iam:CreateRole
iam:CreatePolicy
、iam:AttachRolePolicy
权限或想要手动创建 IAM 角色,请执行以下任一操作:-
使用以下步骤使用自定义信任策略创建服务角色。
-
要求管理员使用以下步骤创建服务角色。
-
注意
只有在您没有使用 AWS Clean Rooms 控制台创建服务角色的必要权限时,您或您的 IAM 管理员才应遵循此过程。
使用自定义信任策略创建用于接收结果的服务角色
-
使用自定义信任策略创建角色。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的使用自定义信任策略创建角色(控制台)过程。
-
根据使用自定义信任策略创建角色(控制台)步骤使用以下自定义信任策略。
{ "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
" ] } } } ] } -
根据使用自定义信任策略创建角色(控制台)步骤使用以下权限策略。
注意
以下示例策略支持读取 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
" } } } ] } -
用你自己的信息替换每一个
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 存储桶的属性选项卡上找到。
-
-
继续按照使用自定义信任策略创建角色(控制台)步骤创建角色。