Amazon Simple Storage Service (Amazon S3) のバケットポリシーで Amazon Quick Suite からのアクセスが許可されていることを確認したいです。
簡単な説明
Amazon S3 バケットが Deny ポリシーを使用している場合、そのポリシーは Quick Suite コンソールで指定した S3 アクセス許可よりも優先されます。Amazon Quick Suite が S3 バケットにアクセスできるようにするには、Amazon Quick Sight サービスロール (aws-quicksight-service-role-v0) を Deny ポリシーの例外として追加します。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
次の手順を実行します。
-
Quick Suite に S3 バケットへのアクセス許可があることを確認します。
-
aws-quicksight-service-role-v0 ロールの一意の ID を取得するには、get-role AWS CLI コマンドを実行します。
aws iam get-role --role-name aws-quicksight-service-role-v0 --query 'Role.RoleId' --output json"AROAEXAMPLEID"
注: AWS Identity and Access Management (IAM) の GetRole API コールを使用することもできます。ID は各 Quick Suite アカウントに固有です。
-
(オプション) IAM ユーザーに例外を追加する場合は、get-user AWS CLI コマンドを実行してユーザーの一意の ID を検索します。
aws iam get-user --user-name example-username
注: example-username を IAM ユーザー名に置き換えてください。
-
Amazon S3 コンソールを開きます。
-
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"
]
}
}
}
]
}
注: examplebucketname を自分の S3 バケット名に、AROAEXAMPLEID を固有の ID に置き換えてください。IAM ユーザーに例外を追加するには、AIDAEXAMPLEUSERID を IAM ユーザーの固有の ID に置き換えます。IAM ユーザーポリシーには、S3 バケットの Allow ステートメントも含まれている必要があります。
Quick Sight サービスロールと IAM ユーザーを削除すると、バケットからロックアウトされます。この問題を解決するには、AWS アカウントのルートユーザーとしてログインし、delete-bucket-policy AWS CLI コマンドを使用してバケットポリシーを削除します。
関連情報
Amazon S3 バケットアクセスを特定の IAM ロールに制限する方法