대가는 결과를 만든다

AWS IAM 개념 및 권장 모범사례에 대한 정리 본문

개발/AWS

AWS IAM 개념 및 권장 모범사례에 대한 정리

yunzema 2019. 12. 6. 10:59
반응형

초기 AWS 서비스 사용 진입시 대부분은 서비스 자체에만 집중해서 개발을 시작하게 된다 (특히 소규모의 팀인 경우 더욱 그렇다). 하지만 여러 구성원들이, 여러 AWS 서비스들을 사용하게 되고, 유기적으로 연결된 구조로 사용하게 되면서 보안적으로 갖춰야할 관리 시스템과 권장 사항들이 있다는 것을 정리하고자 한다.

IAM이란?

(Identity and Access Management) AWS 리소스 액세스를 관리/제어하기 위한 서비스로 인증 또는 권한부여 대상을 관리한다.

 

초기 AWS 계정 생성 시 해당 계정의 모든 AWS 서비스 및 리소스에 완전한 액세스 권한이 있는 하나의 ID, 즉 AWS 계정 루트 사용자로 시작한다. 일상적인 작업, 관리 작업조차도 이 루트 사용자를 사용하지 않는 것을 권장하고 있고, 오직 처음 IAM 사용자를 처음 생성할 때만 루트 사용자를 사용하도록 권장하고 있다.

 

IAM 관리 콘솔은 우측 상단의 계정 메뉴에서 '내 보안 자격 증명'을 클릭해서 이동할 수 있다.

 

 

1. 기능

1) AWS 계정에 대한 공유 액세스

: 암호나 액세스 키 공유하지 않고 AWS 계정의 리소스 관리 및 권한을 다른 사람에게 부여가능

 

2) 세분화된 권한

: 리소스에 따라 여러 사람에게 다양한 권한 부여 가능.

  ex) 일부 사용자에게는 EC2 전체 액세스 권한, 일부에게는 S3 읽기전용 권한, 일부에게는 결제 정보에만 액세스 할 수

  있는 권한

 

3) Amazon EC2에서 실행되는 애플리케이션을 위한 보안 AWS 리소스 액세스 (IAM 역할 사용)

: EC2에서 실행되는 어플리케이션에 IAM기능을 이용해 자격증명 제공 가능하다. 예를 들어 EC2가 S3 버킷이나   DynamoDB 테이블에 접근할 수 있는 액세스 권한을 지니도록 할 수 있음.

 

: 어플리케이션 프로젝트 내부에 액세스 키를 입력하여 사용하는 것은 보안적으로 위험이 크다. 키가 노출되는 경우 aws 서비스에 대한 제어권이 모두 노출될 수 있기 때문에..., 이 부분에 대한 자세한 내용은 밑 권장사항 정리에서 다시 설명하겠다.

 

4) 멀티 팩터 인증 (MFA)

: 보안강화를 위해 암호나 액세스 키뿐 아니라 특별히 구성된 디바이스 코드를 제공하는 인증을 추가할 수 있음

 

5) 자격증명 연동

: 기업 네트워크, 인터넷 자격 증명 공급자 같이 다른 곳에 이미 암호가 있는 사용자에게 AWS 계정에 대한 임시 액세스 권한 부여 가능

 

기타 등등.....

 

2. 권장 사항

1) 계정 루트 사용자 액세스 키

액세스 키(access key Id, secret access key)를 이용하여 프로그램안에서 aws에 요청을 할 수 있다. 하지만 aws 계정 루트 사용자 액세스 키는 사용하지 말아야 한다. 루트 사용자의 액세스 키는 결제정보를 포함한 모든 aws 서비스 리소스에 대해 액세스 권한을 부여한다. 그리고 루트 액세스 키에 연결된 권한은 줄일 수 없다.

- IAM 사용자를 만들어 관리 권한을 부여해라.

- 루트 사용자 액세스키는 정말 필요한 상황이 아니면 만들지 말고, 필요하다면 주기적으로 교체하고, 공유하지 말아라.

- 루트 사용자 계정의 MFA를 활성화 하는 것이 좋다.

 

2) 개별 IAM 사용자 생성

처음 cloud를 접한 경우 대부분의 사용패턴이 루트 계정을 공유해서 사용 중일 것이다... 보안적으로 위험한 패턴이라고 한다.

AWS 계정 루트 사용자 자격 증명을 사용하여 AWS에 액세스하거나 다른 사용자와 공유하지 말아야 하고, AWS 계정에 액세스해야 하는 사용자에 대해 별도의 사용자 계정 생성을 권장하고 있다.

 

 관리자에 대해서도 IAM 사용자를 만들어 관리 권한을 부여한 후 모든 관리 작업에 대해 이 IAM 사용자를 사용할 것을 권장한다.

 

3) 그룹 관리 가능

IAM 사용자에게 다양한 권한을 부여하고, 필요할 경우 언제든지 IAM 사용자의 권한을 변경 또는 취소할 수 있다.

개별 IAM 사용자별로 하나하나 권한 정의하는 대신 업무별 그룹(관리자, 개발자, 결제자 등)을 만들어 관리 및 권한 정의도 가능하다.

 

4) EC2 인스턴스에서 실행되는 애플리케이션에 역할 사용

EC2에서 실행되는 애플리케이션이 다른 AWS 서비스에 액세스하려면(예를 들어 S3의 버킷의 파일에 액세스 하려면) 자격증명이 필요하다. IAM개념을 몰랐다면 대부분 프로젝트 코드 내부 어딘가에 액세스 키를 입력해두었을 것이다. 하지만 앞에서 언급햇듯이 노출되면 위험하다. (실제 액세스키가 노출되어 EC2를 대량으로 채굴로 사용해 엄청난 요금이 부과된 사례가 있다고함..)

자격증명을 제공하려면 IAM 역할을 사용하면 되는데, 역할은 특정 사용자나 그룹이 아닌 권한의 조합을 설정한다. 역할의 권한에 따라 애플리케이션에서 접근할 수 있는 권한이 결정된다.

IAM 역할을 사용하여 Amazon EC2 인스턴스에서 실행되는 애플리케이션에 권한 부여하기 공홈 문서 참고

 

 

모범사례 공홈 참고 https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/best-practices.html

 

IAM 모범 사례 - AWS Identity and Access Management

IAM 모범 사례 AWS 리소스를 안전하게 보호하기 위해 AWS Identity and Access Management(IAM) 서비스에 대한 다음 권장 사항을 따르십시오. AWS 계정 루트 사용자 액세스 키 잠금 액세스 키(액세스 키 ID 및 보안 액세스 키)를 사용하여 프로그래밍 방식으로 AWS에 요청을 할 수 있습니다. 그러나 AWS 계정 루트 사용자 액세스 키는 사용하지 마십시오. AWS 계정 루트 사용자에 대한 액세스 키는 결제 정보를 포함하여

docs.aws.amazon.com

참고 : https://tech.cloud.nongshim.co.kr/2018/10/11/%EC%B4%88%EB%B3%B4%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-aws-%EC%9B%B9%EA%B5%AC%EC%B6%95-2-iam-%EC%9C%A0%EC%A0%80-%EC%83%9D%EC%84%B1%ED%95%98%EA%B8%B0/

 

[초보자를 위한 AWS 웹구축] 2. IAM 유저 및 MFA 생성하기

IAM 이란? IAM(AWS Identity and Access Management)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하여 리소스를 사용하도록 인증 및 권한 부여된 대상을 제어합니다. 물리 데이터 센터를 생각해봅시다. 출입이 허가된 인원들은 출입 카드를 통해 출입하거나, 리스트에 방문 기록을 하고 허가를 받아야 합니다. IAM은 이러한 데이터 센터의

tech.cloud.nongshim.co.kr

 

Comments