진짜 개발자
본문 바로가기

AWS/Security & Identity

AWS - 이론) 인증 및 허가 서비스

728x90

IAM (인증 , 인가 서비스)

- Identity Acess Management

- 정책(Policy)에는 어떠한 서비스를 사용가능한지에 대한 권한이 들어 있다

- User 또는 Group정책(Policy)을 부여하여 Resource 접근 권한을 제어할 수 있다


사용법

1) User에게 권한을 주어 Resource 제한

- User 에게 직접 Policy부여가 가능하지만 추천하지 않는 방법



2) Group에 권한을 주어 User를 해당 Group에 속하게 하여 Resource 제한




과금
- 무료 사용 가능



IAM 구성요소

1. Principal(보안주체)

- 보안 주체란 AWS 리소스에 대한 작업을 수행할 수 있는 개체

- 사용자, 역할, 연동사용자(Facebook, Google)등


2. Policy(정책)

- 개체 또는 리소스에 연결될때 해당 권한을 정의한다

- 사용자와 같은 보안주체가 어떤 자원을 요청할 때 정책을 평가하고 허용 또는 거부를 한다

- IAM 또는 AWS 리소스에 연결하여 AWS 엑세스를 관리한다(S3나 IAM등에 정책을 적용)

- JSON 문서로 이루어져 AWS에 저장된다


사용자가 us-east-2리전내의 123456789012 계정에서 dynamodb의 모든 작업을 수행할 수 있도록 Allow하는 JSON 정책


IAM 동작과정

1. 보안주체가 AWS콘솔, AWS API등을 이용하기 위해 AWS에 인증(Authentication)을 한다

*인증 유형

1) 이메일 주소 및 암호 

- AWS 루트 계정 

2) IAM 사용자 이름 및 암호 

- AWS Management Console 이용에 사용됨

3) 엑세스 키 

- API 및 SDK 요청과 CLI에 사용됨

4) 멀티팩터 인증(MFA) 

- 보안의 추가인증 , OTP , 하드웨어 등의 인증을 이용하여 추가인증을 제공

5) 키페어 

- EC2 같은 특정 서비스에 사용됨


2. 인증이된 보안주체가 요청을 한다 요청에는 아래의 내용이 포함된다

1) 작업 

- 보안주체가 수행하고자 하는 작업

2) 리소스 

- 수행된 작업

3) 보안주체 

- 요청을 보내는 사용자 또는 역할

4) 환경 데이터 

-  IP주소, 사용자 에이전트,SSL 사용상태 등의 정보

5) 리소스 데이터 

- 요청되는 리소스와 관련된 데이터 

- ex) Dynamo DB 테이블의 이름 또는 Amazon EC2의 인스턴스 태그


3. AWS는 요청 컨텍스트 값을 사용하여 요청을 허용할지 거부할지 여부에 적용되는 정책을 검사한다.

( *대부분의 정책은 JSON문서로 AWS에 저장됨 )


4. 권한이 부여된후 AWS가 요청된 작업을 승인한다




계정 유형

1) 루트계정

- 권한을 제어할 수 없다

- 모든 리소스에 대한 엑세스 권한


2) IAM

- 세부적 권한 제어 가능

- 다른 AWS서비스와 통합

- 자격증명 연동

- 어플리케이션에 대한 안전한 엑세스



IAM 권한

- 어떤 리소스와 어떤 작업을 사용할 수 있는지 결정

- 암시적으로 모든 권한에 대해 거부 되어있다

- 특정 서비스를 이용하기 위해서는 특정정책에 명시적으로 추가해야한다.

- 명시적거부와 허용이 같이 존재할경우 거부가 우선시된다

IAM 권한 확인 과정

1) 명시적으로 거부되어있는지 확인

예 : 거부

아니요 : 2) 로

2) 명시적으로 허용되어 있는지 확인

예 : 허용

아니요 : 거부


IAM 정책

- 하나 이상의 IAM권한으로 구성된 공식 문

- 정책을 엔티티 즉 , 사용자 , 그룹 또는 역할에 연결한다

- 서비스에대한 허용과 거부 항목들을 JSON형식으로 나타냄



IAM 그룹

- IAM 사용자의 모음이다

- 사용자에게 정책을 줄경우 사용자의 부서가 옮겨 졌을때 해당 사용자의 권한을 빼앗아야 한다

  하지만 그룹에게 정책을 주고 사용자를 해당 그룹에 속하게 하면 부서에 속해있을 때는 해당 그룹권한을 가진상태로

   서비스에 접근이 가능하지만 부서를 떠나 그룹에서 나가게되면 정책이 자동으로 탈환된다.



IAM 역할

- 특정 권한들이 부여되어 있는 것을 역할이라고 한다

- EC2에 역할을 부여하여 AWS 서비스를 호출할 수 있는 권한을 줄 수 있다.

- AWS 리소스에 대한 엑세스 권한을 위임하는데 사용된다

- 임시 엑세스를 제공한다

- 권한은 IAM 사용자 또는 그룹이 아니라 역할에 연결된다.

역할의 악용을 방지해야한다 -> 타계정으로 역할을 부여하여 나의 계정으로 서비스를 사용하는것이 가능하기 때문




AWS 사용첫날 꼭 해야할 것

1) 루트계정 사용중단
2) MFA

3) Cloud Trail

4) AWS Config