클라우드/AWS

[클라우드/AWS] IAM 사용자와 권한 및 정책

라임패션 2022. 4. 8. 16:04
728x90
반응형

AWS 계정을 생성하기 위해 먼저 AWS Root 계정을 생성한다. 계정을 생성할 때 입력한 이메일 주소와 암호를 사용하여 AWS Management Console에 로그인할 수 있다. 이러한 이메일 주소 및 암호의 조합을 루트 사용자 자격 증명이라고도 한다.

Root 계정을 사용하면 AWS 계정의 모든 리소스에 제한없이 액세스 할 수 있으므로 일반적인 액세스에서는 Root 계정을 사용하지 않는 것이 좋다.

 

다음은 AWS 사용자를 알아보자.

 

AWS Identity and Access Management(IAM)의 '자격 증명'을 통해 '사용자가 누구인지'를 확인할 수 있다. 이를 흔히 인증이라고 한다. 루트 사용자 자격 증명을 타인과 공유하는 대신, 조직의 사용자에 해당되는 계정 내에 개별 IAM 사용자를 생성할 수 있다. IAM 사용자는 개별 계정이 아니라 해당 계정 내의 사용자이다. 각 사용자는 고유의 AWS Management Console 액세스 암호를 가질 수 있다. 또한 사용자가 계정의 리소스를 사용하기 위한 프로그래밍 방식의 요청을 할 수 있도록 각 사용자에 대한 개별 액세스 키를 생성할 수 있다. 다음 그림에서는 AWS 계정 하나에 Li, Mateo, DevApp1라는 사용자가 추가되었다. 각 사용자는 고유의 자격 증명을 가진다.

※ 액세스 관리 : 권한 및 정책

AWS Identity and Access Management(IAM)의 액세스 관리를 통해 계정에서 보안 주체 엔터티에 허용된 권한을 정의할 수 있다. 보안 주체 엔터티란 IAM 엔터티(사용자 또는 역할)를 사용하여 인증된 사람 또는 애플리케이션이다. 액세스 관리를 흔히 권한 부여라고 한다. 정책을 생성하고 IAM 자격 증명(사용자, 사용자 그룹 또는 역할) 또는 AWS 리소스에 연결하여 AWS에서 액세스를 관리한다. 정책은 자격 증명이나 리소스와 연결될 때 해당 권한을 정의하는 AWS의 객체이다. AWS는 IAM 엔터티(사용자 또는 역할)가 요청을 보낼 때 이러한 정책을 평가한다. 정책에서 권한은 요청이 허용되거나 거부되는지 여부를 결정한다. 대부분의 정책은 AWS에 JSON 문서로서 저장된다.

 

- 정책 및 계정

AWS에서 하나의 계정을 관리하려면 정책을 사용하여 해당 계정 내 권한을 정의한다. 여러 계정 전반의 권한을 관리하고자 한다면 사용자에 대한 권한을 관리하기가 더 어렵다. 교차 계정 권한에 대해 IAM 역할, 리소스 기반 정책 또는 액세스 제어 목록(ACL)을 사용할 수 있다. 하지만 여러 계정을 소유하는 경우에는 이러한 권한을 쉽게 관리할 수 있도록 ACL 대신에 AWS Organizations 서비스를 사용하는 것이 좋다.

☞ AWS Organizations : 생성한 여러 AWS 계정을 조직에 통합하고 중앙에서 관리할 수 있는 계정 관리 서비스

 

- 정책 및 사용자

IAM 사용자는 서비스의 자격 증명이다. IAM 사용자를 생성할 경우, 권한을 부여하지 않는 한 사용자는 계정 내에서 어떠한 것으로도 액세스할 수 없다. 사용자 또는 사용자가 속한 그룹에 연결된 정책인 자격 증명 기반 정책을 생성하여 사용자에게 권한을 부여한다. 다음 예는 사용자가 us-east-2 리전 내의 123456789012 계정에서 Books 테이블의 모든 Amazon DynamoDB 작업(dynamodb:*)을 수행할 수 있도록 허용하는 JSON 정책을 보여준다.

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "dynamodb:*",
    "Resource": "arn:aws:dynamodb:us-east-2:123456789012:table/Books"
  }
}

이 정책을 IAM 사용자에게 연결한 후에는 해당 사용자가 이러한 DynamoDB 권한만 부여받는다. 대부분의 사용자는 해당 사용자의 권한을 함께 나타내는 여러 정책을 부여받는다.

명시적으로 허용되지 않은 작업 또는 리소스는 기본적으로 모두 거부된다. 예를 들어 앞서 다룬 정책이 사용자에게 연결된 유일한 정책이라면 이 사용자는 Books 테이블에 대한 DynamoDB 작업만 수행할 수 있다. 다른 모든 테이블에 대한 작업은 금지된다. 마찬가지로 사용자는 Amazon EC2, Amazon S3 또는 기타 다른 AWS 서비스의 어떠한 작업도 수행할 수 없다. 그 이유는 권한 정책이 함께 작업할 이러한 서비스는 정책에 포함되지 않기 때문이다.

 

- 정책 및 그룹

IAM 사용자를 IAM 그룹으로 구성하고 이 그룹에 정책을 연결할 수 있다. 이 경우 각 사용자는 별도의 자격 증명을 갖고 있지만 그룹에 연결된 정책에 명시된 권한이 그룹 내 모든 사용자에게 부여된다. 그룹을 사용하여 간편하게 권한을 관리하고 IAM의 보안 모범 사례에 따를 수 있습니다.

☞ IAM 보안 모범 사례 : https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/best-practices.html

 

IAM의 보안 모범 사례 - AWS Identity and Access Management

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

사용자 또는 그룹에 여러 정책을 연결하여 다양한 권한을 부여할 수 있다. 이 경우 사용자의 권한은 각 정책의 조합으로 계산된다. 그러나 개별 작업 및 리소스에 대한 권한을 명시적으로 부여해야 사용자가 해당 권한을 가지게 되는 기본 원칙은 여전히 적용된다.

 

- 연동 사용자 및 역할

페더레이션 사용자에게는 IAM 사용자처럼 AWS 계정에서 영구적인 ID가 부여되지 않는다. 연동 사용자에게 권한을 부여하려면 역할이라고 하는 개체를 만들어 해당 역할의 권한을 정의할 수 있다. 연동 사용자가 AWS에 로그인하면 사용자가 역할과 연결되고 역할에 정의된 권한이 부여된다.

 

- 자격 증명 기반 정책 및 리소스 기반 정책

자격 증명 기반 정책은 IAM 사용자, 그룹 또는 역할과 같은 IAM 자격 증명에 연결할 수 있는 권한 정책이다. 리소스 기반 정책은 Amazon S3 버킷 또는 IAM 역할 신뢰 정책과 같은 리소스에 연결하는 권한 정책이다.

자격 증명 기반 정책은 자격 증명이 수행할 수 있는 작업, 대상 리소스 및 이에 관한 조건을 제어한다. 자격 증명 기반 정책을 추가로 분류할 수 있다.

  • 관리형 정책 - AWS 계정에 속한 다수의 사용자, 그룹 및 역할에게 독립적으로 연결할 수 있는 자격 증명 기반 정책이다. 사용할 수 있는 관리형 정책은 두 가지가 있다.
  • AWS 관리형 정책 - AWS에서 생성 및 관리하는 관리형 정책이다. 정책 사용이 처음이라면 AWS 관리형 정책 사용을 먼저 권장한다.
  • 고객 관리형 정책 - 사용자가 자신의 AWS 계정에서 생성 및 관리하는 관리형 정책이다. 고객 관리형 정책은 AWS 관리형 정책보다 정책에 대해 더욱 정밀하게 제어할 수 있다. 시각적 편집기에서 또는 JSON 정책 문서를 직접 생성하여 IAM 정책을 생성, 편집 및 검증할 수 있다.
  • 인라인 정책 - 자신이 생성 및 관리하며, 단일 사용자, 그룹 또는 역할에 직접 포함되는 정책이다. 대부분의 경우 인라인 정책을 사용하지 않는 것이 좋다.

리소스 기반 정책은 지정된 보안 주체가 해당 리소스에 대해 수행할 수 있는 작업 및 이에 관한 조건을 제어한다. 리소스 기반 정책은 인라인 정책이며, 관리형 리소스 기반 정책은 없다. 교차 계정 액세스를 활성화하려는 경우 전체 계정이나 다른 계정의 IAM 개체를 리소스 기반 정책의 보안 주체로 지정할 수 있다.

IAM 서비스는 역할 신뢰 정책이라고 하는 리소스 기반 정책 유형 하나만 지원하며, 이 유형은 IAM 역할에 연결된다. IAM 역할은 리소스 기반 정책을 지원하는 자격 증명이자 리소스이므로 신뢰 정책과 자격 증명 기반 정책 모두 IAM 역할에 연결해야 한다. 신뢰 정책은 역할을 수임할 수 있는 보안 주체 엔터티(계정, 사용자, 역할 및 연합된 사용자)를 정의한다.

 

728x90
반응형