아마존 클라우드

[클라우드] AWS IAM 기본 구조

트리스탄1234 2024. 1. 7. 17:33
728x90
반응형
 

안녕하세요.이번 포스팅은 AWS 서비스 중 IAM에 관한 내용을 포스팅 해보고자 합니다.
우선 AWS와 사용자의 책임 관계를 도식화 해보면 아래 그림과 같습니다. 

 

사용자는 클라우드에 올라간 내부의 보안을 책임을 지고 AWS는 클라우드 플랫폼의 보안을 책임 집니다.

세부적인 내용은 아래 그림을 참고 하시기 바랍니다. 

https://aws.amazon.com/compliance/shared-responsibility-model/

보안과 관련되어서 기본적으로 지켜져야 될 원칙은 아래와 같습니다. 

 

1. 최소 권한의 원칙 적용

최소 권한의 원칙이란 사용자 또는 시스템에 의도한 기능을 수행하는 데 꼭 필요한 권한만 제공한다는 뜻입니다. 예를 들어 데이터베이스 지원 부서에서 근무하는 사용자는 네트워크를 관리할 필요가 없습니다. 

 

  • 필요에 따라 엑세스 권한 부여

실제로 필요로 하는 사용자에게만 데이터 및 기타 리소스에 대한 액세스 권한을 부여합니다. 먼저 모든 리소스에 대한 액세스를 거부한 후 필요에 따라 직무 역할별로 액세스 권한을 부여할 수 있습니다.

  • 역활분리 사용

AWS 리소스를 관리하는 역활에 따라서 권한을 분리 하여 사용을 합니다. 네트워크 관리자는 네트워크 리소스에 관한 권한만 부여 하고 DB관리자는 DB를 관리하기 위한 권한만 부여하는 것을 의미 합니다. 

 

  •  장기 자격 증명 사용 안함

권한 고나리를 중앙 집중화 한다음 장기 자격 증명에 대한 빈도를 낮추거나 아예 없애면 해킹으로 부터 자원을 잘 보호 하룻 있고 따라서 임시 보안 자격 증명을 사용하는 것은 리소스의 노출을 제한하는 좋은 방법 입니다. 

 

위에서 애기한 보안 원칙에 적합한 리소스가 IAM 입니다. 

우선 IAM의 기본 구조를 살펴 보면 사용자와 그룹으로 나뉘고 

 

2. IAM의 요소

 

1)사용자 및 그룹

 AWS 계정을 생성하면 시작할 때 사용하는 자격 증명으로 해당 계정의 모든 AWS 서비스와 리소스에 액세스할 수 있습니고  이 자격 증명을 사용하여 IAM에서 권한이 있는 사용자와 역할 기반 액세스를 설정하는 것이 가능해 집니다. 

 

IAM은 AWS의 모든 상호 작용이 인증이 됩니다. 

사용자 및 그룹은 계정 내부의 리소스에 대한 액세스를 관리하는 데 사용해야 합니다. 조직에서 여러 AWS 계정을 사용하는 경우 사용자 및 그룹을 확장할 수 없으므로 자격 증명 연동을 통해 모든 AWS 계정에 대한 액세스 권한을 중앙에서 관리해야 합니다.

위의 그림에서 보며 AWS Root 계정으로 Bob을 생성을 하고 이 Bob이 IAM으로 테스터 그룹, 개발자, 검토자 그룹을 생성을 하고 각 그룹에 사용자를 포함하여 권한을 부여하는 구조를 보여 주고 있습니다. 

 

2)IAM Role

IAM 역할을 통해 일반적으로 조직의 AWS 리소스에 대한 액세스 권한이 없는 사용자, 애플리케이션 또는 서비스에 액세스 권한을 위임할 수 있습니다.  이런 Role을 맡는 것은 다른 모자를 쓰는 것과 같습니다. 각 역할 또는 모자에만 해당하는 특정 액세스 권한이 있으며, 각 역할을 맡으면 해당 역할의 액세스 권한을 획득하게 됩니다.

 

쉽게 애기를 해보면 DB관리자라는 Role을 만들어 놓고, DB 관리 작업이 필요할때 IAM 사용자에게 DB Role을 부여를 해부면 필요할때 DB관리 작업을 할수 있는것 입니다. 

 

역할은 다음과 같은 시나리오에 사용할 수 있습니다.

  • 역할에서 제공하는 액세스 권한이 필요한 동일한 AWS 계정 또는 다른 AWS 계정의 IAM 사용자 또는 역할
  • AWS 리소스에 액세스해야 하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 애플리케이션
  • 사용자를 대신하여 다른 서비스를 호출하거나 계정의 리소스를 만들고 관리해야 하는 AWS 서비스
  • SAML 2.0 또는 OpenID Connect와 호환되거나 맞춤형 자격 증명 브로커와 호환되는 ID 공급자 서비스를 통해 인증된 외부 사용자
 

3. AWS 자격 증명의 유형

사용자는 AWS 콘솔에 로그인하기 위해서 이름과 암호 그리고 API 또는 CLI에서 사용할 수 있는 최대 2개의 액세스 키로 구성됩니다. 각 항목에 대한 세부적인 내용은 아래와 같습니다.  

 

1)사용자 이름 및 암호

암호 정책은 IAM 사용자가 설정할 수 있는 암호 유형을 정의한 규칙 세트입니다. 모든 IAM 사용자에 대한 암호 정책을 정의하여 강력한 암호를 적용하고 사용자에게 정기적으로 암호를 변경할 것을 요구해야 합니다. 암호 요구 사항은 대부분의 가장 안전한 온라인 환경에서 볼 수 있는 요구 사항과 유사합니다.

 

2)멀티 팩터 인증

멀티 팩터 인증(MFA)은 AWS 서비스 액세스에 대한 추가 보안 계층입니다. 이 인증 방법에서는 사용자 이름 및 암호와 MFA 디바이스의 1회용 코드로 구성되는 2개 이상의 인증 팩터를 확인한 후 액세스 권한을 부여하는 구조 입니다. 

마켓 플레이스에서 AWS MFA를 검색하여 휴대폰에 설치를 하고 AWS에 로그인 시 ID와 Password를 입력을 하고

휴대폰에서 추가 인증을 진행 하는 구조 입니다.

 

 

3)사용자 엑세스 키

AWS CLI, AWS SDK 또는 개별 AWS 서비스의 API를 사용한 직접 HTTPS 호출을 통해 AWS를 프로그래밍 방식으로 호출하려면 사용자의 개별 액세스 키가 필요합니다.

 

액세스 키는 AWS 서비스에 대한 API 호출의 디지털 서명에 사용됩니다. 각 액세스 키 자격 증명은 액세스 키 ID와 보안 키로 구성됩니다. 사용자의 액세스 키를 교체하거나 권한을 취소해야 할 때를 대비하여 사용자당 2개의 활성 액세스 키를 가질 수 있습니다.

 

4. IAM 요청 컨텍스트

IAM 정책에 대해 알아보려면 먼저 정책의 내용과 정책이 실제로 작동하는 방식을 정의하는 세 가지 주요 알아야 합니다.  이러한 부분은 IAM에 의해 인증되고 그에 따라 승인되는 요청 컨텍스트를 구성합니다. 보안 주체, 작업 및 리소스를 각각 문장의 주어, 동사, 목적어라고 생각할 수 있습니다.

보안 주체 작업 리소스
요청을 보낸 사용자, 역할, 외부 사용자 또는 애플리케이션 및 해당 보안 주체와 연결된 정책
보안 주체가 하려는 일 수행된 작업 또는 운영에 따른 AWS 리소스 객체

 

자격 증명 기반 정책을 통한 액세스

고객은 정책을 생성하고 IAM 자격 증명 또는 AWS 리소스에 연결하여 AWS에서 액세스를 관리합니다. 자격 증명 기반 정책은 IAM 자격 증명에 연결될 때 해당 권한을 정의하는 AWS의 객체입니다. AWS는 보안 주체 엔터티(IAM 사용자 또는 역할)가 요청할 때 이러한 정책을 평가합니다. 정책 권한은 요청이 허용되는지 또는 거부되는지 결정합니다. 대부분의 정책은 AWS에 JSON 문서로 저장됩니다.

자격 증명 기반 정책에는 세 가지 유형이 있습니다. 

 

AWS 관리형

이 유형의 정책(Policy)는 AWS에서 만들고 관리가 됩니다. 이러한 정책은 여러 사용자, 그룹, Role에 연결할 수 있습니다. 

 

고객관리형

이 유형의 정책은 고객이 AWS 계정에서 만들고 관리합니다. 이 유형의 정책은 AWS 관리형 정책보다 세밀한 제어 기능을 제공하며 여러 사용자, 그룹 및 역할에 연결할 수 있습니다.

 

IAM 정책 예시

아래는 특정 Amazon S3 버킷에 액세스 권한을 부여하는 IAM 자격 증명 기반 정책의 간단한 예입니다.

위의 예제를 설명을 해보면 아래와 같습니다. 

  • statement 요소는 단일 명령이나 명령어 리스트의 배열 입니다. 
  • sid는 선택 사항이며 정책 명령문에 대한 간략한 설명을 포함 합니다.
  • effect는 명령문이 엑세세를 허용할지(allow) 거부할지(deny)를 결정 합니다. 
  • action은 허용 하거나 거부해야할 엑세스 유형을 지정 합니다. s3:*object이 므로 s3내의 모든 object객체에 대해 get, put등 모든 작업이 포함 됩니다. 
  • resource는 위의 명령이 수행될 대상을 지정 합니다. 

위의 내용을 도식화 하고 설명을 해보면 아래와 같습니다. 

1) 먼저 IAM은 사용자(보안 주체)가 지정된 리소스에 대해 지정된 작업을 수행하도록 인증(로그인)되었는지 확인합니다.

 

2) IAM은 사용자에게 연결된 모든 정책을 확인하여 사용자에게 권한이 부여되었음을(적절한 권한이 있음을) 확인합니다.

 

3) 권한 부여 중에 IAM은 요청된 작업을 정책에서 허용하는지 확인합니다.

 

4) 또한 IAM은 사용자가 액세스하려고 시도하는 리소스에 연결된 모든 정책을 확인합니다. 이러한 정책을 리소스 기반 정책이라고 합니다. 자격 증명 기반 정책에서 특정 작업을 허용하지만 리소스 기반 정책에서는 허용하지 않는 경우 요청이 거부됩니다.

 

5) AWS는 정책이 요청의 각 부분을 허용한 경우에만 요청에 권한을 부여합니다. 기본적으로 모든 요청은 거부됩니다. 명시적 허용은 이 기본값을 무시하며 명시적 거부는 모든 기본값을 무시합니다. 요청이 인증 및 권한 부여된 후 AWS가 요청의 작업을 승인합니다. 그런 다음, 계정 내 관련 리소스에서 해당 작업을 수행할 수 있습니다.

 

그럼 다음 시간에는 IAM의 정책에 좀더 자세한 내용을 포스팅 하겠습니다.

좋은 하루 되세요.

 

※본 포스팅은 www.aws.com을 참조하였습니다.

 

728x90
반응형