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}/*"
]
}
]
}