Amazon S3のアクセス制御の方法は、間違えると大きな問題になってしまいます。
ただ、すごい複雑です。しっかり把握しましょう。
S3バケット一覧のページから、アクセスの概要を確認できます。
| アクセス | 説明 |
|---|---|
| オブジェクトは公開可能 | パブリックアクセス設定を無効にしています。 |
| バケットとオブジェクトは非公開 | パブリックアクセス設定を有効にしています。 |
| 公開 | パブリックアクセス設定を無効にしています。 ACLでバケット公開しています。 |
ACLよりもバケットポリシーの方が強くなります。
バケットポリシーで設定されていない場合は、ACLによって制御されています。
{
"Id": "VPCe",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VPCe",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::<<S3-BUCKET-NAME>>",
"arn:aws:s3:::<<S3-BUCKET-NAME>>/*"
],
"NotAction": [
"s3:ListBucket",
"s3:ListAllMyBuckets"
],
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": [
"<<MY-ENDPOINT-ID>>"
]
}
},
"Principal": "*"
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-bucket",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"111.111.222.111/32",
"111.111.222.222/32"
]
}
}
}
]
}
54.240.143.0/24 の範囲の IP アドレスは許可して、54.240.143.188 からのアクセスは拒否
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
"NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"}
}
}
]
}
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"IpAddress": {"aws:SourceIp": [
"54.240.143.0/24",
"192.1680.143.0/24"
]
},
"NotIpAddress": {"aws:SourceIp": [
"54.240.143.188/32",
"192.1680.143.10/24"
]
}
}
}
]
}
IAMの詳細は、AWS IAMで、ユーザ管理
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListAllMyBuckets",
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::testbucket",
"arn:aws:s3:::testbucket/*"
]
}
]
}
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action": "s3:ListAllMyBuckets",
"Resource":"arn:aws:s3:::*"
},
{
"Effect":"Allow",
"Action":["s3:ListBucket","s3:GetBucketLocation"],
"Resource":"arn:aws:s3:::awsexamplebucket1"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:PutObjectAcl",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:DeleteObject"
],
"Resource":"arn:aws:s3:::awsexamplebucket1/*"
}
]
}
ACL無効化が推奨。
バケットへのアクセス制御を ポリシー(IAMユーザーポリシーやバケットポリシー)に 絞ることができます。
バケット単位のACLの設定に関係なくオブジェクト単位のACLが優先されます。
オブジェクトへのアクセス ON/OFF オブジェクトの一覧 ON/OFF オブジェクトの書き込み このバケットの ACL へのアクセス ON/OFF バケットのアクセス権限の読み取り ON/OFF バケットのアクセス権限の書き込み
パブリックからのアクセスを拒否したい場合に設定します。
以下の4つをON/OFFにできます。
パブリックアクセスをすべてブロックすることになります。
オブジェクトにアクセスできるのは、AWS サービスとバケット所有者のアカウント内の承認されたユーザーのみに制限されます。
ACLの新規作成、設定変更でパブリックアクセス可能な設定にしない
ACLで、パブリックアクセスをすべてブロックする
バケットポリシーの新規作成、設定変更でパブリックアクセス可能な設定にしない
一般向けサイト
ITエンジニア向けサイト
英語サイト
Portfolio
Copyright (c) 2025 クラウドのインフラ技術 All Rights Reserved.