S3読み取り専用アクセスのIAMポリシー
特定のS3バケットへの読み取り専用アクセスを付与するIAMポリシーを作成します。GetObject、ListBucket、GetBucketLocationの権限を含みます。
Storage
詳細な説明
S3読み取り専用アクセスポリシー
最もよく必要とされるIAMポリシーの1つは、S3バケットへの読み取り専用アクセスの付与です。このポリシーにより、プリンシパル(ユーザー、ロール、サービス)はバケット内のオブジェクトをリストし、コンテンツをダウンロードできますが、アップロード、変更、削除はできません。
ポリシーJSON
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3ReadOnly",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
]
}
]
}
重要なポイント
- 2つのリソースARNが必要です:ListBucket用のバケット自体(
arn:aws:s3:::my-bucket)と、バケット内のオブジェクトへのGetObject操作用のワイルドカードサフィックス付き(arn:aws:s3:::my-bucket/*)。 - GetBucketLocationは多くのAWS SDKやツールがリクエスト前にバケットのリージョンを判断するために必要です。
- GetObjectVersionはオプションで、バケットでバージョニングが有効で以前のバージョンを読む必要がある場合のみ含めます。
最小権限の原則
読み取り専用アクセスにはs3:*やResource: "*"の使用を避けてください。特定のバケットと特定のアクションにスコープすることで、アカウント内の他のバケットの偶発的な露出を防ぎます。
ユースケース
S3に保存された設定ファイル、静的アセット、データエクスポートへの読み取り専用アクセスをWebアプリケーションやCI/CDパイプラインに付与する。読み取りレプリカ、分析データ消費者、バックアップ検証ツールで一般的です。