사용자 정책으로 버킷에 대한 액세스 제어
사용자 정책으로 버킷에 대한 액세스 제어 (Controlling access to a bucket with user policies)
이 예시 워크스루는 AWS 계정에서 사용자 정책(IAM 정책)을 사용해 버킷에 대한 액세스를 제어하는 방법을 보여줘요. 시나리오는 계정에 형제 팀 몇 개가 있고, 각 팀이 자체 버킷 세트에 액세스하는 상황이에요. 액세스 권한을 개별적으로 관리하는 대신 팀별로 그룹을 만들고 그룹에 버킷 권한을 부여하는 권장 방법을 안내해요.
이 워크스루를 시작하기 전에 먼저 워크스루용 도구 설정을 완료해 AWS CLI를 구성하세요. 예시는 AWS Management Console을 사용해 리소스와 권한을 만들고, AWS CLI를 사용해 권한을 테스트해요.
출처: 문서
본문
시나리오
계정에서 다음 워크스루를 따라 시나리오를 구축해요. 계정 소유자가 버킷을 만들고, IAM 그룹과 사용자를 만들며, 그룹에 정책을 연결해 버킷에 대한 액세스를 제어해요.
- 팀 구성 - 회계(accounting), 분석(analysis), 조사(investigation) 팀이 있다고 가정해요. 각 팀은 자체 버킷에 액세스해야 해요.
- 그룹 만들기 - 계정 소유자가 IAM 그룹(예:
Accountants,Analysts,Investigators)을 만들고 각 팀의 사용자를 해당 그룹에 추가해요. - 정책 연결 - 각 그룹에 해당 팀의 버킷에 대한 필요한 권한을 부여하는 IAM 정책을 연결해요.
- 버킷 만들기 - 각 팀이 사용할 버킷을 만들고, 정책이 버킷에 대한 액세스를 규정해요.
1단계: 버킷 만들기
다음 단계에 따라 각 팀이 사용할 버킷을 만들어요. 예시에서는 버킷 이름으로 다음을 사용해요.
amzn-s3-demo-bucket-accounting(회계 팀)amzn-s3-demo-bucket-analysis(분석 팀)amzn-s3-demo-bucket-investigation(조사 팀)
AWS Management Console로 버킷 만들기
- AWS Management Console에 로그인하고 Amazon S3 콘솔을 열어요.
- 버킷 만들기(Create bucket) 를 선택해요.
- 버킷 이름을 입력하고(S3 버킷 이름은 전역에서 고유해야 해요) 리전을 선택해요.
- 기본 설정을 유지하고 버킷을 만들어요.
- 각 팀 버킷에 대해 이 과정을 반복해요.
대체로, 버킷은 리소스를 만들고 관리하는 완전한 S3 기능을 제공하는 일반 목적 버킷으로 만들어요.
2단계: IAM 그룹 만들기
이제 각 팀에 대해 IAM 그룹을 만들어요. 그룹을 사용하면 개별 사용자가 아닌 그룹 단위로 권한을 관리할 수 있어요.
- IAM 콘솔을 열고 사용자 그룹(User Groups) 을 선택해요.
- 그룹 만들기(Create group) 를 선택해요.
- 그룹 이름(예:
Accountants)을 입력하고 그룹을 만들어요. - 각 팀에 대해 같은 과정을 반복해 그룹을 만들어요 (
Analysts,Investigators).
3단계: IAM 사용자 만들기와 그룹에 추가
각 팀에 속한 사용자를 만들고 해당 그룹에 추가해요. 이렇게 하면 사용자가 그룹에 부여된 권한을 상속받아요.
- IAM 콘솔에서 사용자(Users) 를 선택하고 사용자 만들기(Create user) 를 선택해요.
- 사용자 이름을 입력하고 다음으로 진행해요.
- 권한 설정 단계에서 사용자를 적절한 그룹(예: 사용자가 회계 팀이면
Accountants그룹)에 추가해요. - 사용자 만들기를 선택해 사용자를 만들어요.
- 각 사용자에 대해 이 과정을 반복해요.
4단계: 그룹에 정책 연결 및 버킷 액세스 구성
이제 각 그룹에 해당 팀의 버킷에 대한 권한을 부여하는 정책을 연결해요. 권장 접근 방식은 그룹 기반 권한으로, 사용자가 팀을 옮길 때 그룹 멤버십만 변경하면 돼요.
예를 들어 회계 그룹(Accountants)에 연결할 정책의 예시는 다음과 같아요. 이 정책은 회계 버킷과 그 객체에 대한 전체 액세스를 허용해요.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket-accounting",
"arn:aws:s3:::amzn-s3-demo-bucket-accounting/*"
]
}
]
}
- IAM 콘솔에서 사용자 그룹(User Groups) 을 선택하고 그룹(예:
Accountants)을 선택해요. - 권한(Permissions) 탭을 선택하고 권한 추가(Add permissions) 를 선택해요.
- 인라인 정책 만들기(Create inline policy) 를 선택하고 위와 같은 정책 JSON을 편집기에 붙여넣어요.
- 정책 이름을 입력하고 정책을 만들어요.
- 각 그룹에 해당 팀의 버킷을 가리키도록 정책을 구성해 연결해요. 예를 들어
Analysts그룹에는amzn-s3-demo-bucket-analysis버킷에 대한 정책을,Investigators그룹에는amzn-s3-demo-bucket-investigation버킷에 대한 정책을 연결해요.
5단계: 권한 테스트
권한이 올바르게 구성되었는지 AWS CLI로 확인해요. 먼저 AWS CLI를 구성하고 각 사용자의 자격 증명으로 프로필을 만들어요.
예를 들어 회계 사용자 자격 증명으로 버킷 목록을 확인하려면 다음을 실행해요.
aws s3 ls --profile AccountAadmin
회계 버킷의 객체를 나열하려면:
aws s3 ls s3://amzn-s3-demo-bucket-accounting --profile AccountAadmin
권한이 없는 버킷(예: 회계 사용자가 분석 버킷)에 액세스하려고 하면 접근 거부 오류가 발생하는 것을 확인할 수 있어요.
aws s3 ls s3://amzn-s3-demo-bucket-analysis --profile AccountAadmin
이 명령은 이 사용자가 해당 버킷에 대한 권한이 없으므로 오류를 반환해야 해요.
정리 및 모범 사례
- 그룹 기반 권한 사용 - 개별 사용자에게 직접 권한을 부여하는 대신 그룹에 권한을 부여하고 사용자를 그룹에 추가해요. 사용자 관리가 쉬워지고 권한을 일관되게 유지할 수 있어요.
- 최소 권한 적용 - 각 팀이 실제로 필요한 버킷과 작업에 대해서만 권한을 부여해요. 이 예시에서 각 그룹은 자체 버킷에 대해서만 액세스가 가능해요.
- 권한 테스트 - 권한을 부여한 후 실제 사용자로 접근을 시도해 예상대로 작동하는지 확인하세요.
- 버킷 이름 - 버킷 이름은 전역에서 고유해야 하므로 예시의 이름을 본인의 고유한 이름으로 바꿔 사용하세요.