如何在使用拒绝策略时允许 Amazon QuickSight 访问 S3 存储桶?

上次更新日期:2020 年 11 月 25 日

如何确保我的 Amazon Simple Storage Service (Amazon S3) 存储桶拒绝策略允许从 Amazon QuickSight 访问?

简短描述

当您的 Amazon S3 存储桶采用拒绝策略时,该策略会覆盖您在 Amazon QuickSight 控制台上指定的任何 S3 权限。如要允许 Amazon QuickSight 访问 S3 存储桶,请将 Amazon QuickSight 服务角色 (aws-quicksight-service-role-v0) 添加为拒绝策略中的例外。

解决方法

1.    确保 Amazon QuickSight 具有访问 S3 存储桶的权限

2.    使用 AWS 命令行界面 (AWS CLI)AWS Identity and Access Management (IAM) API 来获取 aws-quicksight-service-role-v0 角色的唯一 ID。每个 Amazon QuickSight 账户的 ID 都是唯一的。例如:

aws iam get-role --role-name aws-quicksight-service-role-v0 --query 'Role.RoleId' --output json 

"AROAEXAMPLEID"

注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

3.    打开 Amazon S3 控制台

4.    选择要使用 Amazon QuickSight 访问的存储桶。

5.    选择路由视图。

6.    选择存储桶策略

7.    输入与本示例类似的存储桶策略。将 AROAEXAMPLEID 替换为您的唯一 ID.如果需要为 IAM 用户添加例外,请将 AIDAEXAMPLEUSERID 替换为 IAM 用户唯一的 ID IAM 用户策略还必须包含 S3 存储桶的允许语句 。例如:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::examplebucketname",
        "arn:aws:s3:::examplebucketname/*"
      ],
      "Condition": {
        "StringNotLike": {
          "aws:userid": [
            "AROAEXAMPLEID:*",
            "AIDAEXAMPLEUSERID"
          ]
        }
      }
    }
  ]
}

拒绝策略为 Amazon QuickSight 服务角色和 IAM 用户添加了例外。

注意:如果您删除 Amazon QuickSight 服务角色和 IAM 用户,您将被锁在存储桶之外。要解决此问题,请以 AWS 账户根用户身份登录,然后使用 delete-bucket-policy 命令删除该存储桶策略。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?