AWS Identity and Access Management (IAM) ロールを使用して SSE-KMS で暗号化された Amazon Simple Storage Service (Amazon S3) オブジェクトをダウンロードしたいのですが、「Access Denied」エラーが発生します。
解決策
AWS Key Management Service (AWS KMS) を使用するサーバー側暗号化では、転送アクセスセッション (FAS) を使用して AWS KMS API リクエストを行います。このリクエストは、IP アドレス制限により意図せず拒否される可能性があります。IP 制限付き IAM ロールを使用して SSE-KMS で暗号化された Amazon S3 オブジェクトをダウンロードしようとした際、「Access Denied」エラーが発生する場合があります。
IAM ユーザーにアタッチされているポリシーを変更し、aws:ViaAWSService 条件を追加するには、次の手順を実行します。
-
IP アドレスを制限している IAM ユーザーの現在のポリシーを開きます。制限付きポリシーの例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"IP ADDRESS"
]
}
}
}
]
}
-
ポリシーを変更し、aws:ViaAWSService 条件を追加します。IAM ユーザーポリシーの例
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"IP ADDRESS"
]
},
"Bool": {
"aws:ViaAWSService": "false"
}
}
}
]
}
注: aws:ViaAWSService 条件が追加されると、AWS サービスは、ユーザーに代わって IP アドレス制限を適用し、API コールを行うことができます。
関連情報
IP アドレス条件の演算子