IAM은 Identity and Access Management의 약자로 사용자를 생성하고 그룹에 배치하는 글로벌 서비스다.
AWS Root 계정을 생성할때 기본으로 생성된다. Root 계정은 한번 만들고 난 뒤 더이상 생성되거나 공유되어선 안된다.
그 대신 사용자를 생성하는데, IAM에서 사용자를 생성할 때, 하나의 사용자는 조직 내의 한 사람에 해당된다.
필요하다면 사용자들을 그룹으로 묶을 수 있다. 그룹에는 오직 사용자만 배치할 수 있고 다른 그룹을 포함할 순 없다.
어떤 사용자는 어느 그룹에도 배치될 수 있고 다수의 그룹에도 참여가 가능하며, 또한 추천하지는 않지만 어느 그룹에도 속하지 않을 수 있다.
IAM에서 사용자와 그룹을 생성하는 이유는 AWS 계정을 사용하도록 허용하기 위해서고, 허용을 위해서는 사용자들에게 권한을 부여해야 한다.
이를 위해 사용자 또는 그룹에게 정책 또는 IAM 정책이라고 불리는 JSON 문서를 지정할 수 있다. 이 문서는 특정 사용자, 특정 그룹이 어떤 작업에 권한을 가지고 있는지 설명해 놓은 것이다.
이 정책들을 사용해 사용자들의 권한을 정의할 수 있게 된다.
AWS는 모든 사용자에게 모든 권한을 허용하지 않는데, 그 이유는 새로운 사용자가 너무 많은 서비스를 실행하여 큰 비용이 발생하거나, 보안 문제를 야기할 수 있기 때문이다.
그렇기에 AWS는 최소 권한의 원칙을 적용한다.
즉, 사용자가 꼭 필요로 하는 것 이상의 권한을 주지 않는 것을 의미한다.
예를 들어, 한 사용자가 세 개의 서비스에 접근해야 한다면 그에 대한 권한만 생성한다.
Developers 라는 개발자 그룹이 있다고 가정해보자. 구성원은 A,B,C 세 사람이고, 정책을 그룹 레벨에서 연결해 보자. 이렇게 하면 정책이 그룹에 속한 모든 구성원에게 적용되어 모든 구성원이 권한을 얻게 되어 정책의 상속이 가능하다.
만약 어느 그룹에도 속해 있지 않다면 사용자에게만 연결이 가능한 인라인 정책이라는 걸 생성할 수도 있다. 인라인 정책은 그룹에 속해 있든 아니든 간에 원하는 사용자에게 적용 가능하다.
만약 특정 사용자가 여러 그룹에 속해있다면 그 사용자들은 속해 있는 모든 그룹의 정책도 상속하게 된다.
IAM 정책 구조는 여러 요소를 포함하고 있다.
1. Version
2012-10-17
이다.IAM을 통해 사용자와 그룹을 만들었다면, 이러한 사용자와 그룹이 손상되지 않도록 보호해야 한다. 이를 위해 두가지 방어 메커니즘이 있다.
비밀번호 정책 정의
다중 인증 또는 MFA(Multi Factor Authentication)
AWS에서의 MFA 장치 옵션
AWS에 액세스 하는 방법은 세 가지가 있다.
1. AWS 콘솔
액세스 키는 AWS 관리 콘솔을 사용해서 생성할 수 있다. 그리고 사용자들이 자신들의 액세스 키를 직접 관리한다.
사용자 측면에서, 액세스 키는 비밀번호와 마찬가지로 암호와 같으므로 절대로 다른 사람과 공유해선 안된다.
Access Key ID는 사용자 이름, Secret Access Key ID는 비밀번호와 마찬가지라고 생각하면 된다.
CLI란 명령줄 인터페이스다. AWS CLI는 명령줄 셸에서 명령어를 사용하여 AWS 서비스들과 상호작용할 수 있도록 해주는 도구다.
이를 사용하는 이유는 모든 명령어가 aws로 시작하기 때문이다.
CLI를 사용하면 AWS 서비스의 공용 API로 직접 액세스가 가능하다. 그리고 CLI를 통해 리소스를 관리하는 스크립트를 개발해 일부 작업을 자동화할 수 있다.
CLI는 오픈 소스로, 깃허브에서 모든 소스코드를 찾을 수 있고 AWS 관리 콘솔 대신 사용되기도 한다.
SDK는 소프트웨어 개발 키트다.(Software Development Kit)
이는 특정 언어로 된 라이브러리의 집합인데, 따라서 프로그래밍 언어에 따라 개별 SDK가 존재한다.
SDK를 사용해서도 역시 AWS 서비스나 API에 프로그래밍을 위한 접근이 가능하다. 하지만 SDK는 터미널 내에서 사용하는 것이 아닌 코딩을 통해 애플리케이션 내에 심어두어야 한다.
즉 애플리케이션 내에 자체적으로 AWS SDK가 있는 것이다.
다양한 프로그래밍 언어를 지원하고 모바일과 IoT 또한 지원한다.
AWS SDK로 구축할 수 있는 것의 예로, AWS CLI는 Boto라는 파이썬용 AWS SDK에 구축되어 있다.