S3 ARN(Amazon Resource Name)を解析する
IAMポリシー、バケットポリシー、CloudFormationテンプレートで使用されるS3リソースのARN形式を解析します。構造とそのコンポーネントを理解します。
ARN Format
詳細な説明
S3 ARN:IAMポリシー形式
Amazon Resource Name(ARN)はAWSリソースを一意に識別します。S3 ARNは主にIAMポリシー、バケットポリシー、CloudFormation/Terraformリソース定義で使用され、データアクセスには使用されません。
ARN構造
arn:aws:s3:::BUCKET/KEY
3つのコロン(:::)に注意 — S3バケット名はグローバルに一意であるため、リージョンとアカウントIDフィールドは空です。
例
arn:aws:s3:::production-data/backups/database/*
解析されたコンポーネント
| コンポーネント | 値 |
|---|---|
| パーティション | aws |
| サービス | s3 |
| リージョン | (空 — S3バケットはグローバル) |
| アカウントID | (空 — S3バケット名はグローバルに一意) |
| バケット | production-data |
| キーパターン | backups/database/* |
ARNのバリエーション
| ARN | スコープ |
|---|---|
arn:aws:s3:::bucket |
バケット自体(バケットレベルのアクション用) |
arn:aws:s3:::bucket/* |
バケット内のすべてのオブジェクト |
arn:aws:s3:::bucket/prefix/* |
特定のプレフィックス下のすべてのオブジェクト |
arn:aws:s3:::bucket/specific-key.txt |
特定の単一オブジェクト |
IAMポリシー例
{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": [
"arn:aws:s3:::production-data/backups/database/*"
]
}
S3アクセスポイントARN
S3アクセスポイントにはアカウントIDとリージョンを含む異なるARN形式があります:
arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point
よくあるミス
- バケットレベルARNの欠落 — バケットレベルの操作(
s3:ListBucketなど)にはarn:aws:s3:::bucketが必要で、オブジェクトレベルの操作にはarn:aws:s3:::bucket/*が必要であることを忘れがち。 - リージョン/アカウントの含有 — S3バケットARNはリージョンとアカウントフィールドを空にする必要があります。
- ワイルドカードスコープ —
arn:aws:s3:::*を使用するとすべてのS3バケットへのアクセスが許可され、セキュリティリスクとなります。
ユースケース
CI/CDパイプラインに特定のS3権限を付与するIAMポリシーを構築し、Resource ARNがデプロイメントバケットのプレフィックスのみにアクセスを正しくスコープしていることを確認する。