사용자 정책으로 버킷에 대한 액세스 제어

사용자 정책으로 버킷에 대한 액세스 제어 (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로 버킷 만들기

  1. AWS Management Console에 로그인하고 Amazon S3 콘솔을 열어요.
  2. 버킷 만들기(Create bucket) 를 선택해요.
  3. 버킷 이름을 입력하고(S3 버킷 이름은 전역에서 고유해야 해요) 리전을 선택해요.
  4. 기본 설정을 유지하고 버킷을 만들어요.
  5. 각 팀 버킷에 대해 이 과정을 반복해요.

대체로, 버킷은 리소스를 만들고 관리하는 완전한 S3 기능을 제공하는 일반 목적 버킷으로 만들어요.

2단계: IAM 그룹 만들기

이제 각 팀에 대해 IAM 그룹을 만들어요. 그룹을 사용하면 개별 사용자가 아닌 그룹 단위로 권한을 관리할 수 있어요.

  1. IAM 콘솔을 열고 사용자 그룹(User Groups) 을 선택해요.
  2. 그룹 만들기(Create group) 를 선택해요.
  3. 그룹 이름(예: Accountants)을 입력하고 그룹을 만들어요.
  4. 각 팀에 대해 같은 과정을 반복해 그룹을 만들어요 (Analysts, Investigators).

3단계: IAM 사용자 만들기와 그룹에 추가

각 팀에 속한 사용자를 만들고 해당 그룹에 추가해요. 이렇게 하면 사용자가 그룹에 부여된 권한을 상속받아요.

  1. IAM 콘솔에서 사용자(Users) 를 선택하고 사용자 만들기(Create user) 를 선택해요.
  2. 사용자 이름을 입력하고 다음으로 진행해요.
  3. 권한 설정 단계에서 사용자를 적절한 그룹(예: 사용자가 회계 팀이면 Accountants 그룹)에 추가해요.
  4. 사용자 만들기를 선택해 사용자를 만들어요.
  5. 각 사용자에 대해 이 과정을 반복해요.

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/*"
            ]
        }
    ]
}
  1. IAM 콘솔에서 사용자 그룹(User Groups) 을 선택하고 그룹(예: Accountants)을 선택해요.
  2. 권한(Permissions) 탭을 선택하고 권한 추가(Add permissions) 를 선택해요.
  3. 인라인 정책 만들기(Create inline policy) 를 선택하고 위와 같은 정책 JSON을 편집기에 붙여넣어요.
  4. 정책 이름을 입력하고 정책을 만들어요.
  5. 각 그룹에 해당 팀의 버킷을 가리키도록 정책을 구성해 연결해요. 예를 들어 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

이 명령은 이 사용자가 해당 버킷에 대한 권한이 없으므로 오류를 반환해야 해요.

정리 및 모범 사례

  • 그룹 기반 권한 사용 - 개별 사용자에게 직접 권한을 부여하는 대신 그룹에 권한을 부여하고 사용자를 그룹에 추가해요. 사용자 관리가 쉬워지고 권한을 일관되게 유지할 수 있어요.
  • 최소 권한 적용 - 각 팀이 실제로 필요한 버킷과 작업에 대해서만 권한을 부여해요. 이 예시에서 각 그룹은 자체 버킷에 대해서만 액세스가 가능해요.
  • 권한 테스트 - 권한을 부여한 후 실제 사용자로 접근을 시도해 예상대로 작동하는지 확인하세요.
  • 버킷 이름 - 버킷 이름은 전역에서 고유해야 하므로 예시의 이름을 본인의 고유한 이름으로 바꿔 사용하세요.