'AWS S3 버킷별 권한 주기'에 해당되는 글 1건

  1. 2024.01.18 [AWS] S3 특정 버킷 또는 폴더에만 접근 권한 부여하기

출처: AWS Documentation(https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example4.html)

Amazon S3를 사용하다보면 보안 문제로 특정 사용자에게 제한적인 권한을 줘야할 때가 있다.

 

보통 S3를 처음 쓰거나 할때는 전체 권한을 주는 경우가 많은데 S3에 접근하는 계정이나 App이 많아지면 보안문제가 발생할 수 있다. (A가 접근하지 말아야 할 버킷에 파일을 삭제하거나 다운로드 받는 등)

 

1. IAM에서 사용자 추가

 

2. 사용자계정의 엑세스키 만들기

 

3.  사용자선택 후 권한 추가 -> 인라인 정책생성

 

4. Json 탭 선택 후 아래 코드 입력

 

 

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::버킷명",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "폴더명/*"
                }
            }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::버킷명/폴더명/*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "s3:GetBucketVersioning",
            "Resource": "arn:aws:s3:::버킷명"
        }
    ]
}

 

위와 같이 하면 버킷 아래의 폴더 단위까지 컨트롤이 가능하다. 

특히 S3 버킷안에 부서/사용자 별로 접근해야 하는 폴더가 다른 경우 유용하게 사용할 수 있다.

삭제 권한을 빼려면 (업로드/다운로드만 가능하게 하려면) 중간의 "s3:DeleteObject" 부분을 제거해 준다.

 

예시)

Mybucket/testfolder/myfolder

버킷명: Mybucket

폴더명: testfolder/myfolder

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucketVersions",
                "s3:ListBucket"
            ],
            "Resource": "arn:aws:s3:::Mybucket",
            "Condition": {
                "StringLike": {
                    "s3:prefix": "testfolder/myfolder/*"
                }
            }
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::Mybucket/testfolder/myfolder/*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "s3:GetBucketVersioning",
            "Resource": "arn:aws:s3:::Mybucket"
        }
    ]
}

위와 같이 하면 권한이 있는 폴더를 제외한 다른 버킷/폴더는 해당 권한을 가진 IAM계정에서 보이지 않게 된다.

 

App에서만 사용하는 경우는 여기까지만 하면 되고 만약 사용자를 Amazon S3 콘솔에서 접근하게 하려면 보안자격증명에서 콘솔엑세스관리를 눌러 콘솔 접근 권한을 부여해주면 된다.

 

S3 Direct 링크는 다음과 같다. 

https://s3.console.aws.amazon.com/s3/buckets/Mybucket/testfolder/myfolder/ 

 

 

무분별하게 "AmazonS3FullAccess" 권한을 주고 있다면 제한적인 권한으로 보안을 강화시켜보자

 

 

'생활정보 > Cloud' 카테고리의 다른 글

S3 Browser 사용방법  (0) 2024.01.19
AWS EBS 볼륨 축소 방법  (0) 2020.02.12
Posted by IT매니저
이전버튼 1 이전버튼

블로그 이미지
IT 관리자 일기
IT매니저

공지사항

Yesterday
Today
Total

최근에 올라온 글

최근에 달린 댓글

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30