AWS KMS のデフォルト暗号化を使用する Amazon S3 バケットにファイルをアップロードするとき、Access Denied エラーが表示されるのはなぜですか。

最終更新日: 2021 年 7 月 16 日

Amazon Simple Storage Service (Amazon S3) バケットで、AWS Key Management Service (AWS KMS) のデフォルトの暗号化を使用しています。AWS Identity and Access Management (IAM) のユーザーまたはロールには、バケットに対する s3:PutObject アクセス許可があります。バケットにファイルをアップロードしようとすると、Amazon S3 から Access Denied というエラーメッセージが返されます。どうすれば解決できますか?

解決方法

表示されたエラーメッセージに基づいて、IAM ユーザーまたはロールの AWS KMS アクセス許可を更新します。

重要: AWS KMS キーと IAM ロールが別々の AWS アカウントに属している場合は、IAM ポリシーと KMS キーポリシーを更新する必要があります。KMS 許可は、IAM ポリシーと KMS キーポリシーの両方に追加するようにしてください。

また、クロスアカウント IAM プリンシパルがオブジェクトをアップロードしている場合は、デフォルトバケットの暗号化に「aws/s3」エイリアスを持つ AWS KMS キーを使用することはできません。SSE-KMS の S3 バケットキーを使用するように設定されているオブジェクトのアップロード、コピー、またはバケットには、kms:Decrypt 許可へのアクセス権が必要です。AWS KMS キーとポリシー管理の詳細については、「AWS 管理の KMS とカスタマー管理の KMS」を参照してください。

「An error occurred (AccessDenied) when calling the PutObject operation: Access Denied」

このエラーメッセージは、IAM ユーザーまたはロールに kms:GenerateDataKey アクションに対するアクセス許可が必要であることを示しています。このアクセス許可は、カスタム AWS KMS キーによるデフォルトの暗号化を使用するバケットで必要です。kms:GenerateDataKey にアクセス許可を追加するには、次の手順に従います。

1.    IAM コンソールを開きます。

2.    コンソールから、Amazon S3 バケットへのファイルのアップロードに使用する IAM ユーザーまたはロールを開きます。

3.    IAM ユーザーまたはロールの [Permissions] タブで各ポリシーを展開し、その JSON ポリシードキュメントを表示します。

4.    JSON ポリシードキュメントで、AWS KMS アクセスに関連するポリシーを探します。"Effect": "Allow" のステートメントを確認し、ユーザーまたはロールが、バケットの AWS KMS キーに対する kms:GenerateDataKey アクションに対するアクセス許可を持っているかどうかを確認します。このアクセス許可がない場合は、適切なポリシーにアクセス許可を追加します。手順については、「ユーザーへのアクセス許可の追加 (コンソール)」または「ロールのアクセス許可ポリシーの変更 (コンソール)」を参照してください。

5.    JSON ポリシードキュメントで、"Effect": "Deny" のステートメントを探します。次にこれらのステートメントがバケットでの s3: PutObject アクションを拒否しないことを確認します。これらのステートメントによって バケットの暗号化に使用されるキーに対する kms:GenerateDataKey アクションへの IAM ユーザーまたはロールのアクセスが拒否されないことも確認しますさらに、VPC エンドポイントポリシー、サービスコントロールポリシー、アクセス権限境界、またはセッションポリシーを使用する場合は、必要な KMS および S3 のアクセス許可を制限しないでください。

”CreateMultipartUpload オペレーションを呼び出すときにエラー (AccessDenied) が発生しました: アクセスが拒否されました“

このエラーメッセージは、IAM ユーザーまたはロールに kms:GenerateDataKey および kms:Decrypt アクションに対するアクセス許可が必要であることを示します。これらのアクセス許可は、AWS KMS のデフォルトの暗号化を使用したバケットへのマルチパートアップロードで必要です。次の手順に従って、kms:GenerateDataKey および kms:Decrypt のアクセス許可を追加します。

1.    IAM コンソールを開きます。

2.    コンソールから、Amazon S3 バケットへのファイルのアップロードに使用する IAM ユーザーまたはロールを開きます。

3.    IAM ユーザーまたはロールの [Permissions] タブで各ポリシーを展開し、その JSON ポリシードキュメントを表示します。

4.    JSON ポリシードキュメントで、AWS KMS アクセスに関連するポリシーを探します。"Effect": "Allow" のステートメントを確認し、バケットの AWS KMS キーに対する kms:GenerateDataKey および kms:Decrypt のアクセス許可がロールにあるかどうかを確認します。これらのアクセス許可がない場合は、適切なポリシーにアクセス許可を追加します。手順については、「ユーザーへのアクセス許可の追加 (コンソール)」または「ロールのアクセス許可ポリシーの変更 (コンソール)」を参照してください。

5.    JSON ポリシードキュメントで、"Effect": "Deny" のステートメントを探します。次にこれらのステートメントがバケットでの s3: PutObject アクションを拒否しないことを確認します。これらのステートメントによって、バケットの暗号化に使用されるキーに対する kms:GenerateDataKey および kms:Decrypt アクションに対する IAM ユーザーまたはロールのアクセスが拒否されていないことも確認します。さらに、VPC エンドポイントポリシー、サービスコントロールポリシー、アクセス権限境界、またはセッションポリシーを使用する場合は、必要な KMS および S3 のアクセス許可を制限しないでください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?