Amazon S3: 연합 사용자가 본인 S3 홈 디렉터리에 접근하게 허용하기

Amazon S3: 연합 사용자가 본인 S3 홈 디렉터리에 접근하게 허용하기 (프로그래매틱 및 콘솔)

이 예시는 연합(federated) 프린시펄이 S3에서 본인 홈 디렉터리 버킷 객체에 접근할 수 있게 허용하는 자격 증명 기반 정책을 만드는 방법을 보여드려요. 홈 디렉터리는 home 폴더와 개별 연합 프린시펄용 폴더를 포함하는 버킷이에요. 이 정책은 프로그래매틱 액세스와 콘솔 액세스 모두에 대한 권한을 정의해요.

출처: 문서

본문

예시 정책에서 이탤릭체로 표시된 자리표시자 텍스트를 본인 정보로 바꾼 뒤, create a policy 또는 edit a policy의 지침을 따라 적용하면 돼요.

이 정책의 ${aws:userid} 변수는 role-id:specified-name으로 변환돼요. 연합 프린시펄 ID의 role-id 부분은 생성 중에 연합 프린시펄의 역할에 할당된 고유 식별자예요. 자세한 내용은 Unique identifiers 문서를 참고하세요. specified-name은 연합 프린시펄이 역할을 맡을 때 AssumeRoleWithWebIdentity 요청에 전달된 RoleSessionName 파라미터예요.

AWS CLI 명령 aws iam get-role --role-name specified-name을 사용해 역할 ID를 볼 수 있어요. 예를 들어 친근한 이름 John을 지정하면 CLI가 역할 ID AROAXXT2NJT7D3SIQN7Z6을 반환한다고 가정해요. 이 경우 연합 프린시펄의 사용자 ID는 AROAXXT2NJT7D3SIQN7Z6:John이에요. 그러면 이 정책은 연합 프린시펄 John이 AROAXXT2NJT7D3SIQN7Z6:John 프리픽스를 가진 Amazon S3 버킷에 접근할 수 있게 해줘요.

{
    "Version":"2012-10-17",
    "Statement": [
        {
            "Sid": "S3ConsoleAccess",
            "Effect": "Allow",
            "Action": [
                "s3:GetAccountPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets"
            ],
            "Resource": "*"
        },
        {
            "Sid": "ListObjectsInBucket",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "",
                        "home/",
                        "home/${aws:userid}/*"
                    ]
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:userid}",
                "arn:aws:s3:::amzn-s3-demo-bucket/home/${aws:userid}/*"
            ]
        }
    ]
}

더 알아보기 (Learn more)