Wisdom’s Cloud

[AWS] 22. Amazon IAM 본문

AWS/Beginner

[AWS] 22. Amazon IAM

지혜로운지혜쓰 2021. 3. 11. 16:30

구분 내용
서비스명 Amazon Identity & Access Management(IAM)
설명 AWS 서비스 및 리소스에 대한 액세스를 안전하게 관리
주요 특징 - AWS IAM를 통해 사용자의 AWS 서비스와 리소스에 대한 액세스를 안전하게 통제 가능
- AWS 사용자 및 그룹을 만들고 관리하며, AWS 리소스에 대한 액세스 허용 및 거부 가능
- AWS를 안전하게 사용하기 위한 인증/허가 시스템
- AWS 사용자 인증 및 접근 정책 관리
- AWS 관리를 위한 그룹, 사용자 및 역할 생성 가능
- 그룹별 제한된 권한의 부여, 사용자별 인증 및 권한 부여 가능
프리티어(Free Tier) IAM 사용에 대해 비용이 발생하지 않음

 

 

IAM 사용자(User)
  • IAM 사용자란 AWS에서 생성한 개체로, AWS와 서비스 및 리소스와 상호 작용하기 위해 그 개체를 사용하는 사람 또는 서비스를 말한다.
  • IAM 사용자는 필요에 따라 신규 생성/수정/삭제할 수 있으며, 하나의 AWS 계정에 최대 5,000개의 계정을 생성할 수 있고, 각 IAM 사용자는 오직 한 개의 AWS 계정만 연결된다.
  • 신규 생성된 IAM 사용자는 아무런 권한도 할당되지 않으며, AWS 작업을 수행하거나 AWS 리소스에 액세스할 수 있는 권한이 없다.
  • 따라서 필요한 AWS 리소스에 접근하기 위해 사용자 계정에 직접 권한을 할당하거나 IAM 그룹, IAM 역할과 사용자 계정을 추가하여 권한 및 자격증명을 할당할 수 있다.
  • 또한 개별 IAM 사용자에게 권한을 할당하여 이들이 AWS 리소스를 관리하고 다른 IAM 사용자까지 생성하고 관리하도록 구성할 수 있다.

 

IAM 그룹(Group)
  • IAM 그룹은 IAM 사용자들의 집합으로, 그룹을 활용하면 다수의 사용자들에 대한 권한을 지정함으로써 해당 사용자들에 대한 권한을 더 쉽게 관리할 수 있다.
  • 예를 들어 Admins라는 그룹을 만들어 관리자에게 필요한 유형의 권한을 부여할 수 있다.
  • 이 그룹에 할당된 권한이 이 그룹에 속하는 모든 사용자에게 자동으로 부여되며, 관리자 권한을 필요로 하는 새로운 사용자가 조직에 들어올 경우 해당 사용자를 이 그룹에 추가하여 적절한 권한을 할당할 수 있다.
  • 또한 조직에서 직원의 업무가 바뀌면 해당 사용자의 권한을 편집하는 대신 이전 그룹에서 해당 사용자를 제거한 후 적절한 새 그룹에 추가하면 된다.

 

IAM 역할(Role)
  • AWS에서 자격증명을 처리하거나 하지 못하도록 권한 및 정책을 보유하고 있다는 측면에서 IAM 역할은 IAM 사용자와 유사하다.
  • 하지만 IAM의 역할은 한 사용자만 연결되지 않고 그 역할이 필요한 사용자 또는 그룹이면 누구든지 연결할 수 있도록 고안되었다.
  • 예를 들어 AWS 계정 사용자에게 리소스에 대한 액세스 권한을 부여하거나, 하나의 AWS 계정 사용자에게 다른 계정 리소스에 대한 액세스 권한을 부여해야 할 경우나, 모바일 앱에서 AWS 리소스를 사용할 수 있도록 하되 앱에 AWS 키를 내장하길 원치 않는 경우도 있다.
  • 이러한 경우 IAM 역할을 사용하여 AWS 리소스에 대한 액세스 권한을 위임할 수 있다.

 

IAM 서비스 동작 방식
  • IAM은 AWS 내 리소스 및 자원 관리를 위한 사용자와 그룹의 생성 및 관리 기능을 통해 고유한 보안 자격증명을 생성할 수 있으며, AWS 서비스 API와 리소스에 대한 권한을 부여함으로써 AWS 서비스와 내부 리소스에 대해 강력한 보안을 통해 안전하게 리소스를 관리할 수 있다.
  • 관리자 계정은 EC2에 대해 모든 작업이 가능한 권한을 보유하고 있기 때문에 EC2에 대해 정지(Stop), 종료(Terminate)가 가능하지만, EC2 권한이 없는 개발자 계정의 경우 EC2 인스턴스에 대해 정지/종료가 불가능하다.
  • IAM은 사용자 계정을 통해 개별 AWS 리소스에 대해 세부적인 권한을 부여할 수 있으며, IAM을 통해 제어할 수 있는 대상은 AWS 리소스를 관리하기 위한 콘솔에 대한 접속 권한과 AWS 내부 리소스에 대한 접속 권한, AWS 내 데이터에 대해 프로그래밍 방식으로 접속하는데 필요한 권한이 있다.

 

IAM 자격증명 관리 기능
  • IT 서비스 중 영구적인 자격증명이 필요하지 않고 일시적으로 임시 자격증명이 필요한 경우, IAM 역할을 사용하면 AWS 리소스에 대한 액세스 권한이 없는 사용자나 서비스에 임시적인 액세스 권한을 부여할 수 있다.
  • IAM은 암호, 액세스 키, Amazon CloudFront 키 페어, SSH 퍼블릭 키, X.509 인증서와 같은 유형의 자격증명 관리 기능을 제공한다.
  • AWS IAM의 Federation 서비스를 사용하면 AWS 리소스를 중앙에서 관리할 수 있다. Federation과 함께 SSO를 사용하여 회사 내에서 사용하는 LDAP나 Active Directory와 연동 가능하며, 이를 통해 AWS 계정에 액세스할 수 있다. 또한 Federation은 SAML과 같은 개방형 표준 인증을 사용하여 ID 제공자와 애플리케이션 간에 ID 및 암호를 교환한다.

 

실습: IAM User 및 Group 생성

 

1. AWS 계정으로 로그인한 후 서비스 메뉴에서 보안 자격 증명 및 규정 준수의 [IAM]로 이동한다.
2. 그룹에서 [새로운 그룹 생성] 버튼을 클릭한다.
3. 그룹 이름 설정 페이지에서 그룹 이름에 "EC2ReadOnly"를 입력한 후 [다음 단계] 버튼을 클릭한다.
4. 정책 연결 페이지에서 "AmazonEC2ReadOnlyAccess"를 선택한 후 [다음 단계] 버튼을 클릭한다.
5. 검토 페이지에서 내용을 검토한 후 [그룹 생성] 버튼을 클릭한다.
6. IAM 그룹이 정상적으로 생성됨을 확인한다.
7. 사용자 생성을 위해 사용자로 이동한 후 [사용자 추가] 버튼을 클릭한다.
8. 사용자 추가 페이지에서 사용자 세부 정보 설정의 사용자 이름을 "AWS_user"라고 입력한다.
9. AWS 액세스 유형 선택에서 액세스 유형은 "AWS Management Console 액세스"에 체크하고, 콘솔 비밀번호는 "사용자 지정 비밀 번호"로 선택하여 비밀번호를 입력한 후 [다음: 권한] 버튼을 클릭한다.
10. 그룹에 사용자 추가에서 이전에 생성한 "EC2ReadOnly" 그룹을 선택한 후 [다음: 태그] 버튼을 클릭한다.
11. 태그 추가는 하지 않고 [다음: 검토] 버튼을 클릭한다.
12. 등록한 사용자 정보를 검토한 후 [사용자 만들기] 버튼을 클릭한다.
13. 사용자 계정이 정상적으로 생성되었음을 확인한다.
14. 생성된 계정을 클릭한 후 보안 자격 증명 탭에서 콘솔 로그인 링크를 복사한다.
15. 루트 계정을 로그아웃한 후 IAM 사용자로 로그인한다.
16. 비밀번호를 변경해 준다.
17. EC2로 이동한 후 인스턴스에서 기존에 생성된 EC2를 선택하여 종료시킨다.

* 해당 IAM 계정은 EC2 Read Only Access 권한만을 가지고 있으므로
위와 같이 인스턴스 종료 오류가 표시되며 EC2 인스턴스가 삭제되지 않는다.
따라서 해당 EC2에 대해 종료 권한을 추가하기 위해서는 루트 계정으로 로그인한 후
IAM 그룹에 EC2FullAccess 권한을 추가해야 한다. *

 

실습: IAM Role 생성 및 IAM Role 정책을 통한 EC2 권한 할당

 

1. 다시 루트 계정으로 로그인한 후 IAM으로 이동하여 역할에서 [역할 만들기] 버튼을 클릭한다.
2. 역할 만들기 페이지에서 사용 사례 선택을 "EC2"로 선택한 후 [다음: 권한] 버튼을 클릭한다.
3. 권한 정책 연결에서 "AmazonEC2FullAccess"를 선택한 후 [다음: 태그] 버튼을 클릭한다.
4. 태그 추가는 하지 않고 [다음: 검토] 버튼을 클릭한다.
5. 검토에서 역할 이름을 "IAMRole-DEV"라고 입력한 후 [역할 만들기] 버튼을 클릭한다.
6. 역할에서 정책이 정상적으로 생성됨을 확인한다.
7. 역할 할당 및 테스트를 위해 EC2로 이동한 후 인스턴스에서 [인스턴스 시작] 버튼을 클릭한다.
8. AMI 선택 페이지에서 "Amazon Linux 2 AMI(HVM)"을 선택한다.
9. 인스턴스 유형 선택 페이지에서 "t2.micro"를 선택한 후 [다음: 인스턴스 세부 정보 구성] 버튼을 클릭한다.
10. 인스턴스 세부 정보 구성 페이지에서 네트워크는 "tutorial-vpc"로, 서브넷은 "Tutorial public"으로, 퍼블릭 IP 자동 할당은 "활성화"로, IAM 역할은 "IAMRole-DEV"로 선택한 후 [검토 및 시작] 버튼을 클릭한다.
11. 인스턴스 시작 검토 페이지에서 [시작하기] 버튼을 클릭한다.
12. 키 페어 설정 페이지에서 기존에 생성한 키 페어를 선택한 후 [인스턴스 시작] 버튼을 클릭한다.
13. 생성된 인스턴스의 세부 정보에서 퍼블릭 IP를 확인한다.
14. Putty로 서버 접속 후 S3의 버킷에 대해 접속을 시도하면 다음과 같이 Access Denied 메시지를 받게 된다. 이는 EC2가 S3에 접근 권한이 없으므로 발생하는 문제이다.
15. IAM Role에 S3 권한을 추가하기 위해 IAM로 이동한 후 IAMRole-DEV 역할에서 [정책 연결] 버튼을 클릭한다.
16. 권한 연결 페이지에서 "AmazonS3FullAccess"을 선택한 후 [정책 연결] 버튼을 클릭한다.
17. IAMRole-DEV 역할에서 "AmazonS3FullAccess" 정책이 추가됨을 확인한다.
18. 다시 S3의 버킷에 대해 접속을 시도하면 접근 가능하다는 것을 확인할 수 있다.

'AWS > Beginner' 카테고리의 다른 글

[AWS] 24. Amazon Lightsail  (0) 2021.03.12
[AWS] 23. 클라우드 용어 정리(10)  (0) 2021.03.12
[AWS] 21. 클라우드 용어 정리(9)  (0) 2021.03.11
[AWS] 20. Amazon CloudFront  (0) 2021.03.11
[AWS] 19. 클라우드 용어 정리(8)  (0) 2021.03.10