ID
AWS 계정 루트 사용자(계정 소유자)인 경우 AWS 계정을 생성할 때 설정한 크레덴셜(Credentials)을 사용하여 AWS에 로그인할 수 있다. IAM 사용자인 경우 계정 관리자가 AWS에 로그인하는 데 사용할 수 있는 아이덴터티(Identities)를 제공할 수 있다.
AWS 계정 루트 사용자 또는 계정의 IAM 관리자가 IAM 아이덴터티를 생성할 수 있다. IAM 아이덴터티를 통해 AWS 계정에 액세스할 수 있다. 사용자 그룹은 하나의 단위로 관리되는 IAM 사용자 집합이다. IAM 아이덴터티는 사용자를 대표하며, 인증된 후 AWS에서 작업을 수행할 수 있는 권한을 부여받는다. 각 IAM 아이덴터티는 하나 이상의 정책과 연결될 수 있다. 정책은 사용자, 역할 또는 사용자 그룹 멤버가 수행할 수 있는 작업, 작업의 대상 AWS 리소스 및 작업 수행 조건을 결정한다.
1. AWS 계정 루트 사용자
Amazon Web Services(AWS) 계정을 처음 생성하는 경우에는 계정의 모든 AWS 서비스 및 리소스에 대한 전체 액세스 권한을 지닌 단일 로그인 아이덴터티로 시작한다. 이 아이덴터티는 AWS 계정 루트 사용자라고 하며, 계정을 생성할 때 사용한 이메일 주소와 암호로 로그인하여 액세스한다.
2. IAM 사용자
IAM 사용자는 AWS에서 생성하는 엔터티이다. IAM 사용자는 IAM 사용자를 사용하여 AWS와 상호 작용하는 사람 또는 서비스를 나타낸다. IAM 사용자의 주된 용도는 대화형 작업을 위해 AWS Management Console에 로그인하고 API 또는 CLI를 사용해 AWS 서비스에 프로그래밍 방식으로 요청할 수 있는 기능을 사용자에게 부여하는 것이다. AWS에서 사용자는 이름, AWS Management Console에 로그인할 암호, 그리고 API 또는 CLI와 함께 사용할 수 있는 2개의 액세스 키로 이루어져 있다. IAM 사용자를 생성하는 경우, 사용자를 적절한 권한 정책이 연결된 사용자 그룹의 멤버로 만들거나(권장) 사용자에 정책을 직접 연결하여 해당 사용자에게 권한을 부여한다. 또한 기존 IAM 사용자의 권한을 복제할 수도 있는데, 이 경우 새 사용자가 자동으로 같은 사용자 그룹의 멤버가 되고 동일한 정책이 모두 연결된다.
3. IAM 사용자 그룹
IAM 사용자 그룹은 IAM 사용자의 집합이다. 사용자 그룹을 활용하면 사용자 집합에 권한을 지정하여 해당 사용자의 권한을 더 쉽게 관리할 수 있다. 예를 들어 Admins라는 사용자 그룹이 있는 경우 해당 사용자 그룹에 일반적으로 관리자에게 필요한 권한 유형을 부여할 수 있다. 사용자 그룹에 할당된 권한이 해당 사용자 그룹에 속하는 모든 사용자에게 자동으로 부여된다. 조직에 들어오는 새 사용자에게 관리자 권한이 필요한 경우 이 사용자를 해당 사용자 그룹에 추가하여 적절한 권한을 할당할 수 있다. 마찬가지로 조직에서 직원의 업무가 바뀌면 해당 사용자의 권한을 편집하는 대신 이전 사용자 그룹에서 해당 사용자를 제거한 후 적절한 새 사용자 그룹에 추가하면 된다. 리소스 기반 정책에서는 사용자 그룹을 Principal
로 식별할 수 없다. 사용자 그룹은 한 번에 여러 사용자에 정책을 연결하는 방법이다. 아이덴터티 기반 정책을 사용자 그룹에 연결하면 사용자 그룹의 모든 사용자가 사용자 그룹에서 권한을 받는다.
4. IAM 역할
AWS에서 아이덴터티가 할 수 있는 것과 없는 것을 결정하는 권한 정책을 갖춘 아이덴터티라는 점에서 IAM 역할은 사용자와 아주 유사하다. 그러나 역할은 그와 연관된 어떤 크레덴셜(암호 또는 액세스 키)도 없다. 역할은 한 사람과만 연관되는 것이 아니라 그 역할이 필요한 사람이면 누구든지 맡을 수 있도록 고안되었다. IAM 사용자는 한 가지 역할을 맡음으로써 특정 작업을 위해 다른 권한을 임시로 얻을 수 있다. 역할은 IAM 대신에 외부 아이덴터티 공급자를 사용해 로그인하는 페더레이션 사용자에게 할당될 수 있다. AWS는 아이덴터티 공급자가 전달하는 세부 정보를 사용해 페더레이션 사용자에게 어떤 역할을 매핑할지 결정한다.
5. IAM의 임시 크레덴셜
임시 크레덴셜은 기본적으로 IAM 역할에 사용되지만 다른 용도로도 사용된다. 일반 IAM 사용자보다 제한된 권한을 갖는 임시 크레덴셜을 요청할 수 있다. 이렇게 하면 제한된 크레덴셜으로는 허용되지 않는 작업을 뜻하지 않게 수행하는 것을 방지할 수 있다. 임시 크레덴셜의 장점은 설정한 기간이 지나면 자동으로 만료된다는 것이다. 크레덴셜의 유효 기간을 통제할 수 있다.
6. IAM 사용자(역할이 아님)를 생성해야 하는 경우
IAM 사용자는 계정에서 특정 권한을 갖는 아이덴터티일 뿐이므로 크레덴셜이 필요한 모든 경우를 위해 IAM 사용자를 만들 필요는 없다. 많은 경우 IAM 사용자와 연결된 장기 크레덴셜 대신 IAM 역할과 임시 보안 크레덴셜을 활용할 수 있다.
-
AWS 계정을 만들었는데 계정 내에 다른 사람이 없는 경우
AWS 계정의 루트 사용자 크레덴셜을 사용하여 AWS로 작업할 수 있지만 이 방법은 권장하지 않는다. 대신 본인을 위한 IAM 사용자를 만들고 AWS로 작업할 때 해당 사용자의 아이덴터티를 사용하는 것이 좋다.
-
사용자 그룹에 속한 다른 사람이 AWS 계정으로 작업해야 하며 사용자 그룹에 사용 중인 다른 크레덴셜 메커니즘이 없는 경우
AWS 리소스에 액세스해야 하는 사람 각자에 대해 IAM 사용자를 만들어 각 사용자에게 적절한 권한을 할당하고 고유한 아이덴터티를 부여한다. 다수의 사용자가 크레덴셜을 공유하는 일이 절대 없도록 한다.
7. IAM 역할(사용자가 아님)를 만들어야 하는 경우
다음 상황에서 IAM 역할을 생성한다.
-
Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 실행되는 애플리케이션을 생성 중이고 해당 애플리케이션이 AWS에 요청하는 경우
IAM 사용자를 만들어 해당 사용자의 크레덴셜을 애플리케이션에 전달하거나 크레덴셜을 애플리케이션에 포함하면 안 된다. 대신 EC2 인스턴스에 연결하는 IAM 역할을 생성하여 인스턴스에서 실행되는 애플리케이션에 임시 보안 크레덴셜을 부여한다. 애플리케이션이 AWS에서 이러한 크레덴셜을 사용하면 역할에 연결된 정책에서 허용하는 모든 작업을 수행할 수 있다.
-
휴대폰에서 실행되는 앱을 만들고 그 앱이 AWS로 요청을 보내는 경우
IAM 사용자를 만들어 앱을 통해 해당 사용자의 액세스 키를 배포하면 안 된다. 대신 Login with Amazon, Amazon Cognito, Facebook 또는 Google과 같은 아이덴터티 공급자를 사용하여 사용자를 인증한 다음 사용자를 IAM 역할에 매핑한다. 앱은 역할을 사용함으로써 역할에 연결된 정책에 의해 지정된 권한을 갖는 임시 보안 크레덴셜을 얻을 수 있다.
-
회사의 사용자가 기업 네트워크에서 인증을 받았는데 다시 로그인하지 않고도 AWS를 사용할 수 있기를 원하는 즉, 사용자가 AWS로 페더레이션되도록 허용하고 싶은 경우
IAM 사용자는 만들면 안 된다. 엔터프라이즈 아이덴터티 시스템과 AWS 사이의 연동 관계를 구성한다. 두 가지 방법으로 수행할 수 있다.
-
회사의 아이덴터티 시스템이 SAML 2.0과 호환된다면 회사의 아이덴터티 시스템과 AWS 간에 신뢰를 구축할 수 있다.
-
사용자의 엔터프라이즈 아이덴터티를 임시 AWS 보안 크레덴셜을 제공하는 IAM 역할로 변환하는 사용자 지정 프록시 서버를 만들고 사용한다.
-