사용자에게 버킷 또는 폴더(접두사)에 대한 Amazon Simple Storage Service(Amazon S3) 콘솔 액세스 권한을 부여하고 싶습니다. 하지만 사용자가 계정의 다른 버킷이나 버킷 내의 다른 폴더를 볼 수 없도록 하고 싶습니다.
간략한 설명
사용자의 AWS Identity and Access Management(IAM) 권한을 변경하여 사용자의 Amazon S3 콘솔 액세스를 특정 버킷 또는 폴더(접두사)로 제한합니다.
1. s3:ListAllMyBuckets 작업에 대한 권한을 제거합니다.
2. 사용자가 액세스하기를 원하는 버킷 또는 폴더에 대해서만 s3:ListBucket에 권한을 추가합니다. 사용자가 버킷이나 폴더에서 개체를 업로드 및 다운로드할 수 있도록 하려면 s3:PutObject 및 s3:GetObject도 포함해야 합니다.
해결 방법
1. IAM 콘솔을 엽니다.
2. 액세스를 제한하려는 IAM 사용자 또는 역할을 선택합니다.
3. IAM 사용자 또는 역할의 권한 탭에서 각 정책을 확장하여 해당 JSON 정책 문서를 확인합니다.
4. JSON 정책 문서에서 사용자에게 s3:ListAllMyBuckets 작업 또는 s3:* 작업(모든 S3 작업)에 대한 권한을 부여하는 정책을 검색합니다.
5. 정책을 수정하여 s3:ListAllMyBuckets 작업에 대한 권한을 제거합니다.
참고: 연결된 사용자 정책에서 "*" 리소스로 s3:* 또는 전체 관리자 액세스를 허용하는 경우 정책에 s3:ListAllMyBuckets 권한이 포함됩니다. "*" 리소스를 제거합니다. 그런 후 다음 예시 정책 중 하나를 사용합니다.
6. 사용자가 콘솔에서 액세스할 버킷 또는 폴더에 대해서만 s3:ListBucket에 권한을 추가합니다.
다음은 S3 버킷에 액세스하기 위한 예시 정책입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}
이 정책에 따라 사용자는 DOC-EXAMPLE-BUCKET에서만 s3:ListBucket ,s3:PutObject 및 s3:GetObject작업을 수행할 수 있습니다 .
다음 예시 정책은 폴더에 대한 액세스 권한을 부여합니다. 이 정책에 따라 사용자는 DOC-EXAMPLE-BUCKET내의 folder2에서만 s3:ListBucket, s3:ListBucketVersions, s3:PutObject, s3:GetObject 및 s3:GetObjectVersion 작업을 수행할 수 있습니다. 버킷에 버전 관리가 있고 사용자가 이전 버전의 개체에 액세스할 수 있도록 하려는 경우에만 s3:ListBucketVersions, s3:GetObjectVersion 및 s3:GetBucketVersioning을 사용하십시오.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUsersToAccessFolder2Only",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/folder1/folder2/*"
]
},
{
"Sid": "AllowListOfBucketOnlyOnPrefix",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:ListBucketVersions"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"folder1/folder2/*"
]
}
}
},
{
"Sid": "AllowListVersionOnObjectDetails",
"Effect": "Allow",
"Action": [
"s3:GetBucketVersioning"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET"
]
}
]
}
7. 사용자에게 S3 버킷 또는 폴더에 대한 다이렉트 콘솔 링크를 제공합니다.
경고: 이러한 권한을 변경한 후 사용자가 주 Amazon S3 콘솔에 액세스할 때 액세스 거부 오류가 발생합니다. 사용자는 다이렉트 콘솔 링크를 사용하여 버킷이나 폴더에 액세스해야 합니다.
다음 링크는 S3 버킷에 대한 다이렉트 콘솔 링크의 예시입니다.
https://s3.console.aws.amazon.com/s3/buckets/DOC-EXAMPLE-BUCKET/
다음 링크는 폴더에 대한 다이렉트 콘솔 링크의 예시입니다.
https://s3.console.aws.amazon.com/s3/buckets/DOC-EXAMPLE-BUCKET/folder1/folder2/
관련 정보
사용자 정책 예시