AWS의 IAM은 특히 새로운 사용자들에게는 사용하기와 이해하기 어려운 도구일 수 있습니다. 하지만 걱정하지 마세요! 만약 AWS에서 사용자 권한을 관리하는 IAM의 작동 방식에 어려움을 겪고 있다면, 여기에서 IAM이 무엇을 할 수 있는지 이해하는 데 도움이 될 것입니다.
이 튜토리얼에서는 서로 연계된 일련의 예제를 통해 IAM의 기본 개념을 익히는 방법을 안내합니다.
준비되셨나요? 한번 깊게 숨을 들이마시고 시작해봅시다!
전제 조건
이 튜토리얼은 실습을 포함한 데모로 진행됩니다. 따라오고 싶다면 PC와 AWS 계정이 필요합니다. AWS 계정이 없다면 무료 계층 계정을 만들 수 있습니다.
AWS의 IAM 사용자 생성
IAM이 어떻게 작동하는지 이해하기 전에, 이 튜토리얼에서는 먼저 사용자를 생성하여 시작합니다. 사용자는 다양한 용도로 사용될 수 있지만, 이 튜토리얼에서는 어떤 권한도 갖지 않고 어떤 그룹에도 속하지 않으며, 아무것도 접근할 수 없는 사용자를 생성합니다.
1. AWS 콘솔에 로그인하세요. 이 데모에서는 ‘cloud_user’라는 사용자 이름을 사용하지만, 여러분의 사용자 이름은 다를 것입니다.

2. AWS 콘솔에서 검색 상자에 IAM을 입력한 다음 아래에 나와 있는 것처럼 팝업되는 IAM 서비스를 클릭합니다. 브라우저가 IAM 대시보드로 리디렉션됩니다.

IAM은 전역 서비스이며 사용자 및 사용 권한이 전체 AWS 계정/지역에 적용됨을 나타냅니다. 여러 사람이 하나의 AWS 계정을 공유하는 경우 (이는 매우 흔한 경우로 예를 들어 회사 전체 개발 팀의 경우), 적절한 IAM 인력 회전을 보장해야 합니다.
또한 us-east 지역 내에 EC 인스턴스를 생성할 수 있습니다. 인스턴스는 지역적입니다. 그러나 AWS Identity and Access Management 컨트롤은 지역적이지 않습니다. 사용자에게 할당된 권한은 사용자가 연결하는 EC 인스턴스의 지역과 관계없이 적용됩니다.

4. IAM 대시보드에서 왼쪽 패널에서 사용자를 클릭한 다음 페이지 상단 오른쪽에 있는 사용자 추가를 클릭하여 사용자 추가를 초기화합니다.

이제 다음을 사용하여 사용자 세부 정보를 구성하십시오:
- 아래에 표시된 사용자 이름 필드에 사용자 이름을 제공하십시오. 이 예에서 사용자 이름은 user-1로 설정됩니다.
- AWS Management Console 액세스 – 암호 옵션을 활성화하여 사용자가 AWS Management Console에 로그인할 수 있도록합니다.
- 사용자 지정 암호 옵션을 선택하여 콘솔 암호에 안전한 암호를 제공하십시오.
- 암호 재설정 필요 옵션을 선택 취소하여 사용자가 다음 로그인시 새로운 암호를 만들도록 하지 않으려면 다음: 권한을 클릭합니다.

5. 권한 설정을 건너뛰고 다음: 태그를 클릭하세요. 사용 권한이 없는 사용자를 생성하고 있으므로.

6. 태그 추가도 건너뛰고 다음: 검토를 클릭하세요.

7. 사용자 세부 정보를 검토한 후 사용자 생성를 클릭하여 사용자 생성을 완료하세요.

사용자를 생성한 후에는 아래와 같은 성공 화면이 표시됩니다.

8. 이제 IAM 대시보드의 사용자 페이지로 돌아가서 새로 생성된 사용자(사용자-1)를 클릭하여 사용자 정보를 확인하세요. 사용자-1을 엽니다

아래에서 권한 및 그룹 탭에서는 사용자-1이(가) 어떤 권한도 가지고 있지 않으며 어떤 그룹의 구성원도 아님을 확인할 수 있습니다.


보안 자격 증명 탭에서는 사용자-1이 가질 수 있는 다양한 액세스 키를 볼 수 있습니다. 이 탭에서 AWS EC2 인스턴스에 대한 SSH 공개 키를 업로드할 수 있습니다.

액세스 어드바이저 탭에서는 사용자-1이 직접 또는 다른 서비스를 통해 액세스한 서비스 및 마지막으로 해당 서비스에 액세스한 시간을 확인할 수 있습니다.

9. 마지막으로, 두 개의 추가 사용자(user-2 및 user-3)를 생성하려면 과정을 (3단계에서 7단계까지) 반복하세요. IAM 대시보드의 사용자 페이지로 돌아가면 아래와 유사한 목록이 표시됩니다.

사용자 그룹 생성
이제 사용자를 만들었으니 그룹을 만들 차례입니다. AWS 관리 정책과 JSON 파일을 사용하여 그룹을 만들 것입니다.
이 튜토리얼에서는 세 개의 그룹을 만들 것입니다:
- EC2-Admin : EC2 인스턴스를 보고, 시작하고 중지하는 데 필요한 권한을 제공합니다.
- EC2-Support : EC2에 대한 읽기 전용 액세스를 제공합니다.
- S3-Support : S3에 대한 읽기 전용 액세스를 제공합니다.
사용자 그룹을 만드는 방법은 다음과 같습니다:
1. IAM 대시보드에서 왼쪽 창에서 사용자 그룹을 클릭한 다음 그룹 생성을 클릭합니다.
2. 사용자 그룹 이름 (EC2-Admin)을 입력합니다. 아래 그림과 같이 사용자 그룹 생성 페이지에 입력합니다.

기본 권한을 유지한 채로 그룹 생성을 클릭하여 EC2-Admin 그룹 생성을 완료합니다.

새 그룹을 만든 후에는 아래 그림과 같이 페이지 상단에 EC2-Admin 사용자 그룹이 생성되었습니다 메시지가 표시됩니다. 그런 다음 브라우저가 자동으로 사용자 그룹 페이지로 리디렉션됩니다 (3단계).

3. 그룹 이름 열 아래의 EC2-Admin 그룹을 클릭하여 그룹의 요약 정보를 볼 수 있는 창으로 이동합니다 (4단계).

4. 이제 권한 탭을 클릭한 다음 -> 권한 추가 -> 인라인 정책 생성을 클릭하여 인라인 정책을 생성합니다. 인라인 정책은 일회성 상황에서 사용자와 직접 관련이 있으며 일반적으로 권한을 적용하는 데 사용됩니다.
예를 들어, 팀이 오래된 EC2 환경을 새로운 환경으로 이전하고 있습니다. 이전 EC2 인스턴스의 관리자가 새 EC2 인스턴스에서 시작/중지 및 보안 그룹 설정을 복사할 수 있도록 하려고 합니다.

5. 정책 생성 페이지에서 아래에 표시된 JSON 탭을 클릭하여 정책을 생성할 JSON 편집기를 엽니다.

6. 아래의 코드(정책)를 편집기 필드에 붙여 넣고 정책 검토를 클릭하여 인라인 정책을 생성합니다. 이 인라인 정책은 AWS나 AWS 계정 내의 관리자가 사용자의 정확한 요구에 맞게 사용, 사용자 정의 또는 편집할 수 있는 미리 작성된 것입니다.
이 정책을 사용하면 EC2-Admin 그룹 구성원이 EC2 인스턴스를 시작 ("ec2:StartInstances"
), 중지 ("ec2:StopInstances"
) 및 보기 ("ec2:Describe*"
)를 허용합니다. 모든 리소스 ("Resource": "*"
)에 대한 작업을 수행할 수 있습니다 (”Effect”: “Allow”
). 이러한 작업은 본질적으로 AWS의 프로그래밍 또는 API 호출과 연결됩니다.
EC2-Admin 그룹 구성원은 또한 모든 탄력적인 부하 균형 (Action": "elasticloadbalancing:Describe
), 메트릭 목록 (cloudwatch:ListMetrics
), 메트릭 통계 가져오기 cloudwatch:GetMetricStatistics
및 메트릭 설명 (cloudwatch:Describe
)을 볼 수 있는 권한이 있습니다.
CloudWatch 메트릭은 EC 인스턴스에 자동으로 구성되며, 동일한 것이 Auto Scaling 서비스에도 적용됩니다.

7. 정책 요약을 검토하고 변경 사항 저장을 클릭하여 정책을 저장합니다.

8. 이제 IAM 대시보드로 이동하여 그룹을 생성하는 단계와 동일하게 그룹을 초기화하세요. 다만 이번에는 User group name을 EC2-Support로 지정하십시오.
스크롤하여 AmazonEC2ReadOnlyAccess를 Attach permissions policies 검색 상자에서 찾아 해당 정책을 그룹(EC2-Support)에 연결하세요:
AmazonEC2ReadOnlyAccess은 여러 사용자 또는 사용자 그룹에도 연결할 수 있는 인라인 정책과 유사한 관리 정책입니다. 그러나 인라인 정책과 달리 관리자가 만든 이 유형의 정책은 재사용 가능하며 조직 전체 또는 계정의 모든 AWS 계정과 공유할 수 있습니다.
A managed policy is a shared policy. As a result, all users or groups of users who use the shared policy will have updated permissions automatically when the policy is updated.
이 자동 업데이트 기능은 관리 정책을 인라인 정책보다 더 매력적으로 만듭니다. 인라인 정책의 경우 정책이 변경되면 각 권한을 관리자가 업데이트해야 합니다.
AmazonEC2ReadOnlyAccess 옵션을 선택하고 Create group을 클릭하여 그룹 생성을 완료하세요.

10. 이제 S3-Support 그룹을 만들기 위해 여덟 번부터 아홉 번까지의 단계를 반복하십시오. S3-Support 그룹을 생성하면 각 그룹이 정의된 권한을 보여주는 아래와 유사한 그룹 목록이 나타납니다.

사용자를 해당 그룹에 추가
정의된 권한을 가진 사용자 및 그룹을 만들었습니다. 이제 각 그룹의 요약 페이지를 열고 해당 그룹에 사용자를 수동으로 추가하세요.
아래 표는 각 사용자를 추가할 적절한 그룹을 보여줍니다:
Users | In-group | Permissions |
---|---|---|
user-1 | S3-Support | Read-only access to S3 Bucket |
user-2 | EC2-Support | Read-only access to EC2 Instance |
user-3 | EC2-Admin | Full EC2 Access (View/Start/Stop) |
1. 당신의 IAM 대시보드에서 사용자 그룹 페이지로 이동하고 아래에 표시된 S3-Support 그룹을 클릭하여 그룹의 요약 페이지에 액세스하십시오.

2. 그 다음, 사용자 탭을 클릭한 후 —> 사용자 추가를 클릭하여 그룹에 사용자를 추가하는 초기화를 수행하십시오. 브라우저가 사용자 그룹에 아직 속하지 않은 사용자 목록이 표시되는 페이지로 리디렉션됩니다 (세 번째 단계).

3. user-1 앞의 상자를 확인하고, 사용자 추가를 클릭하여 사용자를 S3-Support 그룹에 추가하십시오. 그런 다음 브라우저가 자동으로 S3-Support 그룹의 요약 페이지로 리디렉션됩니다.

아래에서 user-1이 이제 S3-Support 그룹의 일원임을 확인할 수 있습니다.

4. 사용자-2 및 사용자-3을 각각의 올바른 그룹에 추가하려면 단계 1에서 3까지 반복하십시오.
5. 마지막으로 사용자 그룹 페이지로 이동하면 아래 스크린샷과 같이 각 그룹에 사용자 하나씩이 있음을 알 수 있습니다.

사용자 권한 테스트가 제대로 작동하는지 확인하기
당신은 권한을 정의된 사용자 그룹에 완전히 생성했습니다. 그러나 작동하는지 어떻게 알 수 있을까요? 권한이 의도한대로 작동하는지 확인하는 다양한 방법이 있습니다. 가장 일반적인 방법 중 하나는 웹 기반 AWS 관리 콘솔을 사용하는 것입니다.
1. IAM 대시보드로 이동하여 오른쪽 패널에 있는 IAM 사용자 로그인 URL을 복사하십시오.

2. 웹 브라우저에서 이전에 참고한 로그인 URL로 이동하여 사용자-1의 자격 증명으로 로그인하십시오. 이 작업에 대해 Google 크롬과 Firefox가 가장 추천되는 브라우저입니다.

3. 검색 상자에 S3을(를) 입력하고 아래에 표시된 S3 링크를 클릭하여 Amazon S3 버킷 페이지에 액세스하십시오.

4. 이제 버킷 만들기를 클릭하여 S3 버킷을 초기화하십시오.

5. 일반 구성 섹션에 버킷 이름을 입력한 다음 S3 버킷을 만들어 보려면 버킷 만들기를 클릭하십시오.


이미지 파일이 첨부된 경우, AmazonS3ReadOnlyAccess 정책을 user-1에 연결했음을 기억하십시오. 이 정책은 사용자-1에게 S3 버킷을 보기 위한 읽기 전용 권한만 부여합니다. 따라서 사용자-1이 S3 버킷을 만들거나 삭제하거나 업데이트하려고 시도하면 아래에 표시된 오류 메시지가 표시됩니다.
아래의 오류 메시지는 사용자-1에게 설정한 권한이 올바르게 작동함을 나타냅니다.

사용자-1에게 EC2 권한도 없다는 점에 유의하십시오. 따라서 이중 확인을 위해 EC2 대시보드로 이동하면 아래 스크린샷처럼 많은 API 오류가 발생합니다.
당신은 이러한 오류를 최소 권한의 원칙(PoLP) 때문에 받게 됩니다. PoLP는 특정한 OS 사용자 계정 또는 프로세스가 작업을 완료하는 데 필요한 절대 최소한의 권한을 가져야 한다는 개념입니다.

6. 이제 user-1에서 로그아웃하고 user-2로 로그인한 후 EC2 대시보드로 이동하세요.

7. 실행 중인 어떤 EC2 인스턴스를 클릭하여 user-2의 권한을 확인하세요. 아래와 같이 인스턴스에 대한 정보를 얻을 수 있습니다. 인스턴스 ID, 공용 IPv4 주소 등입니다.

8. 페이지의 가장 오른쪽 부분에 있는 인스턴스 상태를 클릭하고 인스턴스 중지, 다시 시작 또는 인스턴스 종료 옵션 중 하나를 선택하여 user-2의 권한이 제대로 작동하는지 테스트하세요.

user-2는 EC2 인스턴스에 대한 읽기 전용 액세스만 가지고 있음을 기억하세요(AmazonEC2ReadOnlyAccess). 따라서 사용자가 EC2 인스턴스를 조작하려고 할 때 아래의 오류 메시지가 표시됩니다.
아래의 오류를 얻으면 user-2의 권한이 올바르게 작동하는 것입니다.

9. 마지막으로 user-2에서 로그아웃한 다음 user-3으로 로그인하여 계정에서 실행 중인 어떤 EC2 인스턴스든 조작해 보세요. user-3은 전체 EC2 권한을 가지고 있으므로 오류 메시지 없이 인스턴스를 시작, 중지 또는 종료할 수 있습니다.
결론
이 튜토리얼을 통해 IAM 사용자 및 정책이 정의된 사용자 그룹을 만드는 방법을 배웠습니다. 또한 EC2 인스턴스 상태를 변경하려고 시도하고 S3 버킷을 만들어 보면 권한이 의도한 대로 작동하는지 확인하는 방법에 대해 언급했습니다.
이 시점에서 IAM 사용자 및 그룹의 기본 설정이 완료되었습니다. 물론 계정에 더 많은 사용자를 추가하고 필요에 따라 더 많은 정책을 적용할 수 있습니다.
이제 새로 얻은 지식을 기반으로 어떤 것을 더 구축할 수 있을까요? 아마도 IAM과 함께 작동하는 Auto-Scaling에 EC2 서비스를 설정해보는 것이 좋을 것입니다.