0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Access Deniedエラー備忘録:S3バケットにアクセスする際に発生する「Access Denied」エラーの原因と対処方法についてまとめてみた

Posted at

はじめに

AWS S3 を利用していると、「Access Denied」のエラーに遭遇することがあります。

このエラーはアクセス権限の設定に問題がある場合に発生しますが、IAM ポリシーやバケットポリシー、VPC エンドポイントなど、さまざまな要因が絡んでいる可能性があります。

本記事では、このエラーの原因と対処法を整理し、スムーズに問題を解決できるように解説します。

書こうと思ったきっかけ

S3 のアクセス制御は、AWS の権限管理の中でも特に混乱しやすい部分です。

私自身も S3 にアクセスできずに悩んだ経験があり、その際に IAM ポリシーやバケットポリシー、VPC エンドポイントの設定などを見直すことで解決できました。

同じように困っている方がスムーズに問題を解決できるよう、今回の記事を書くことにしました。

困っていたエラー

AWS S3バケットにアクセスしようとした際に、以下のようなエラーが発生することがあります。

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
</Error>

このエラーの原因は、主にS3バケットのアクセス権限の設定にあります。

本記事では、考えられる原因と対処方法を体系的にまとめます。

1. IAMポリシーの設定ミス

原因

IAMユーザーやロールに適切な権限が付与されていないと、S3バケットへのアクセスが拒否される可能性があります。

対処方法

  1. AWSマネジメントコンソールで、IAM > ポリシー に移動。
  2. 該当のIAMユーザーやロールに s3:GetObject または s3:ListBucket などの適切な権限が設定されているか確認。
  3. 必要に応じて、ポリシーを修正する。

例: バケット内のオブジェクトを取得する権限の付与

{
    "Effect": "Allow",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::your-bucket-name/*"
}

2. S3バケットポリシーの制限

原因

バケットポリシーが外部または特定のIAMエンティティからのアクセスを拒否している可能性があります。

対処方法

  1. S3 > バケットのアクセス権限 から、バケットポリシーを確認。
  2. Deny ステートメントが意図せず適用されていないか確認。
  3. 必要に応じてバケットポリシーを修正する。

例: 特定のIAMユーザーにアクセスを許可するポリシー

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/your-user-name"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
    ]
}

3. バケットのパブリックアクセス設定

原因

AWSのデフォルト設定では、S3バケットはパブリックアクセスが制限されています。パブリックアクセスがブロックされていると、匿名ユーザー(署名なしのリクエスト)からのアクセスは拒否されます。

対処方法

  1. S3 > バケットのアクセス権限 > パブリックアクセス設定 を確認。
  2. 必要に応じて、特定のリソースやユーザーに対して適切なアクセス権限を付与。
  3. 誤ってバケット全体をパブリックにしないように注意する。

4. AWS Organizationのサービスコントロールポリシー(SCP)

原因

AWS OrganizationsのSCPによって、特定のIAMエンティティがS3へのアクセスを制限されている可能性があります。

対処方法

  1. AWS Organizations > サービスコントロールポリシー を確認。
  2. s3:GetObjects3:ListBucket への制限がある場合、適切な修正を行う。

5. VPCエンドポイントの設定

原因

S3アクセスがVPCエンドポイント経由に制限されていると、インターネット経由のアクセスはブロックされます。

対処方法

  1. VPC > エンドポイントcom.amazonaws.region.s3 のエンドポイントを確認。
  2. エンドポイントポリシーs3:GetObject が含まれているか確認。

6. CloudFront経由のアクセス制限

原因

S3バケットがCloudFrontを介してアクセスされるよう設定されている場合、オリジンアクセス設定によって直接のS3アクセスがブロックされることがあります。

対処方法

  1. CloudFront > オリジン設定 でS3バケットが正しく設定されているか確認。
  2. Origin Access Control (OAC)Origin Access Identity (OAI) の設定を見直す。

まとめ

S3バケットへのアクセスが拒否される原因はさまざまですが、基本的には以下のポイントを確認することで解決できます。

  1. IAMポリシー で適切な権限が付与されているか?
  2. バケットポリシー で意図しない拒否設定がないか?
  3. パブリックアクセス設定 が必要に応じて有効か?
  4. AWS OrganizationsのSCP による制限がないか?
  5. VPCエンドポイント の影響を受けていないか?
  6. CloudFront経由のアクセス が影響していないか?

エラーが発生した場合は、まず IAMポリシーとバケットポリシー を確認し、それでも解決しない場合は ネットワーク関連の設定 を見直すのがおすすめです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?