我想在另一个账户中使用来Amazon Simple Storage Service(Amazon S3)存储桶的数据在 Amazon QuickSight 中创建数据集。
简短描述
完成以下步骤,创建从 Amazon QuickSight(账户 A)到另一个账户(账户 B)中加密的 Amazon S3 存储桶的跨账户访问权限:
- 在 S3 存储桶所在的账户 B 中更新您的 S3 存储桶策略。
- 将 S3 存储桶添加为 QuickSight 服务角色(账户 A)可以访问的资源。
- 允许 QuickSight 服务角色访问 S3 存储桶的 AWS Key Management Service(AWS KMS)密钥。
**注意:**本文假设您的 S3 存储桶已加密。使用 AWS KMS 密钥加密您的 S3 存储桶也是最佳做法。有关如何激活 Amazon S3 的默认加密的更多信息,请参阅配置默认加密。
解决方法
在账户 B 中更新您的 S3 存储桶政策
要设置从 QuickSight 到 Amazon S3 的跨账户访问权限,请完成以下步骤:
-
在账户 B 中更新您的 S3 存储桶的存储桶策略,例如:
{ "Version": "2012-10-17",
"Id": "BucketPolicy",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<Account A>:role/service-role/aws-quicksight-service-role-v0"
},
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::cross-account-qstest-bucket",
"arn:aws:s3:::cross-account-qstest-bucket/*"
]
}
]
}
**注意:**如果账户 A 中存在 aws-quicksight-s3-consumers-role-v0 角色,请务必改用此角色。将 aws-quicksight-service-role-v0 替换为 aws-quicksight-s3-consumers-role-v0,以避免 Amazon S3 出现连接问题。
-
将账户 A 中的 QuickSight 服务角色添加到可以访问 S3 存储桶的 AWS KMS 密钥的用户列表中:
aws kms create-grant --key-id aws_kms_key_arn --grantee-principal quickSight_role_arn --operations Decrypt
**注意:**将 aws_kms_key_arn 替换为您的 AWS KMS 密钥的 ARN,将 quicksight_role_arn 替换为您的 QuickSight 角色的 ARN。
要获取 AWS KMS 密钥 ARN,请执行以下操作:
- 打开 Amazon S3 控制台。
- 前往包含您的数据文件的 S3 存储桶。
- 选择属性选项卡。AWS KMS 密钥 ARN 位于默认加密下。
要获得 QuickSight 服务角色 ARN,请执行以下操作:
- 在账户 A 中打开 AWS Identity Access Management(IAM)控制台。
- 在导航窗格中,选择角色。
- 搜索 aws-quicksight-service-role。
- 选择您的 QuickSight 服务角色,然后复制其 ARN。
**注意:**如果账户 A 中存在 aws-quicksight-s3-consumers-role-v0 角色,请务必改用此角色。否则,当您尝试连接到 Amazon S3 时,您可能会收到错误。
将 S3 存储桶添加为 QuickSight 服务角色可以访问的资源
要允许 QuickSight 服务角色访问账户 B 中的 S3 存储桶,请完成以下步骤:
- 打开您的 Amazon QuickSight 控制台。
- 选择**管理 QuickSight **。
- 选择安全性和权限。
- 选择添加或删除。
- 选择详细信息。
- 选择选择 S3 存储桶。
- 选择您可以通过 AWS 选项卡访问的 S3 存储桶,以验证您的 S3 存储桶是否已列入 QuickSight 访问权限。
- (可选)如果您的 S3 存储桶未列出,请在使用其他存储桶下添加您的存储桶。
- 选择完成。
允许 QuickSight 服务角色访问 S3 存储桶的 AWS KMS 密钥
将以下内联 IAM 策略添加到账户 A 中的 QuickSight 服务角色中:
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt3",
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": ""arn:aws:kms:us-east-1:<account ID of your S3 bucket>:key/<KEYID>"
}
]
}
**注意:**前面的内联策略允许 QuickSight 服务角色访问您在账户 B 中的 AWS KMS 密钥。将 ExampleStmt3 替换为您的声明 ID。
**重要事项:**如果账户 A 中存在 aws-quicksight-s3-consumers-role-v0 角色,则必须将 AWS KMS 策略附加到该角色。AWS KMS 策略会解密您的 S3 存储桶中的数据。如果您将更新的角色策略附加到您的 QuickSight 服务角色,则可能会遇到权限错误。有关如何解决权限错误的信息,请参阅如何故障排除 Amazon QuickSight 中的 AWS 资源权限错误?
其他注意事项
当您设置从 QuickSight 到另一个账户中的 S3 存储桶的跨账户访问权限时,请考虑以下几点:
相关信息
Editing keys
I can't connect to Amazon S3
Troubleshooting Amazon QuickSight
Viewing a key policy (console)