버킷 정책 예시
예: 모든 사람에게 버킷에 대한 읽기 전용 액세스 허용
이 예에서 익명 사용자를 포함한 모든 사용자는 버킷에 있는 객체를 나열하고 버킷에 있는 모든 객체에 대해 GetObject 작업을 수행할 수 있습니다. 그 외의 모든 작업은 거부됩니다. 이 정책은 루트 계정 외에는 버킷에 쓸 수 있는 권한이 없기 때문에 그다지 유용하지 않을 수 있습니다.
{
"Statement": [
{
"Sid": "AllowEveryoneReadOnlyAccess",
"Effect": "Allow",
"Principal": "*",
"Action": [ "s3:GetObject", "s3:ListBucket" ],
"Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"]
}
]
}
예: 한 계정의 모든 사람에게 버킷에 대한 전체 액세스 권한을 허용하고 다른 계정의 모든 사람에게 버킷에 대한 읽기 전용 액세스 권한을 허용합니다.
이 예에서 지정된 계정의 모든 사람은 버킷에 대한 전체 액세스 권한이 부여되는 반면, 지정된 다른 계정의 모든 사람은 버킷을 나열하고 버킷의 개체에 대해 GetObject 작업을 수행하는 것만 허용됩니다. shared/ 객체 키 접두사.
|
|
StorageGRID 에서 소유자가 아닌 계정(익명 계정 포함)이 생성한 객체는 버킷 소유자 계정의 소유입니다. 버킷 정책은 이러한 객체에 적용됩니다. |
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "95390887230002558202"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
},
{
"Effect": "Allow",
"Principal": {
"AWS": "31181711887329436680"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucket/shared/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "31181711887329436680"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::examplebucket",
"Condition": {
"StringLike": {
"s3:prefix": "shared/*"
}
}
}
]
}
예: 모든 사람에게 버킷에 대한 읽기 전용 액세스 권한과 지정된 그룹에 대한 전체 액세스 권한 허용
이 예에서 익명을 포함한 모든 사람은 버킷을 나열하고 버킷의 모든 개체에 대해 GetObject 작업을 수행할 수 있지만 그룹에 속한 사용자만 가능합니다. Marketing 지정된 계정에서는 전체 액세스가 허용됩니다.
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::95390887230002558202:federated-group/Marketing"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
},
{
"Effect": "Allow",
"Principal": "*",
"Action": ["s3:ListBucket","s3:GetObject"],
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
}
]
}
예: IP 범위에 클라이언트가 있는 경우 모든 사람에게 버킷에 대한 읽기 및 쓰기 액세스 허용
이 예에서 익명을 포함한 모든 사람은 버킷을 나열하고 버킷에 있는 모든 객체에 대해 모든 객체 작업을 수행할 수 있습니다. 단, 요청이 지정된 IP 범위(54.240.143.0~54.240.143.255, 54.240.143.188 제외)에서 오는 경우에 한합니다. 다른 모든 작업은 거부되고, IP 범위를 벗어난 모든 요청은 거부됩니다.
{
"Statement": [
{
"Sid": "AllowEveryoneReadWriteAccessIfInSourceIpRange",
"Effect": "Allow",
"Principal": "*",
"Action": [ "s3:*Object", "s3:ListBucket" ],
"Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"],
"Condition": {
"IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
"NotIpAddress": {"aws:SourceIp": "54.240.143.188"}
}
}
]
}
예: 지정된 페더레이션 사용자에게만 버킷에 대한 전체 액세스 허용
이 예에서 페더레이션 사용자 Alex는 다음에 대한 전체 액세스 권한을 갖습니다. examplebucket 버킷과 그 객체. 'root'를 포함한 다른 모든 사용자는 모든 작업이 명시적으로 거부됩니다. 하지만 'root'는 Put/Get/DeleteBucketPolicy에 대한 권한을 거부당하지 않습니다.
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
},
{
"Effect": "Deny",
"NotPrincipal": {
"AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex"
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::examplebucket",
"arn:aws:s3:::examplebucket/*"
]
}
]
}
예: PutOverwriteObject 권한
이 예에서는 Deny PutOverwriteObject 및 DeleteObject에 대한 효과는 누구도 객체의 데이터, 사용자 정의 메타데이터 및 S3 객체 태그를 덮어쓰거나 삭제할 수 없도록 보장합니다.
{
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:PutOverwriteObject",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
],
"Resource": "arn:aws:s3:::wormbucket/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::wormbucket"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::wormbucket/*"
}
]
}