AWS

클라우드 보안을 위한 AWS IAM 개념 정리 - 사용자, 정책, 보안 설정

heesoohi 2025. 2. 13. 18:42

1. IAM (= Identity and Access Management)

서비스 중 하나인 IAM 은 사용자를 생성하고 그룹에 배치하는 기능을 제공한다.
IAM은 글로벌 서비스이기 때문에 region을 따로 선택하지 않아도 된다.

 

AWS에서 계정을 생성할 때 루트 계정이 기본으로 생성된다.
이후에 루트 계정은 더이상 사용하거나 공유해서는 안 되고,
루트 계정으로 생성한 사용자를 이용하는 것!

 

이렇게 생성된 사용자들을 필요에 따라 그룹으로 묶어 관리한다.
그룹에는 사용자만 배치할 수 있다. (그룹에 그룹 포함은 불가)
한 사용자가 다수의 그룹에 속하는 것은 가능하다 (⬇️ 아래 이미지 참고)

 

1-1. 🤔 이렇게 사용자와 그룹을 생성하는 이유는 뭘까?

 

-> 계정을 가진 사용자들이 AWS 계정을 사용하도록 허용하기 위함!
-> 허용하기 위해서는 이들에게 권한을 부여해야 함!

 

1-2. ✅ Permissions - 권한을 부여하는 방법

  • 사용자 or 그룹에게 'IAM 정책'이라는 JSON 문서를 지정
    - JSON 문서에는 사용자 or 그룹에 속한 사용자들이 어떤 작업에 권한을 가지는지 설명되어 있음

⬆️ 위 이미지와 같은 JSON 문서를 사용자에게 지정함으로서 'AWS 서비스를 이용하도록 허용'

 

-> 최소 권한의 원칙 적용: 모든 사용자에게 모든 것을 허용하지 않는다.
-> 사용자에게 필요 이상의 권한을 주지 않음으로서, 보안이나 큰 비용 발생 등의 문제를 막을 수 있다.

 

2. IAM Policies

 

특정 권한을 부여하는 것을 정책(policy)라고도 할 수 있다.

 

어떤 그룹에 적용된 정책이 있다면, 해당 정책이 그룹의 모든 구성원에게 적용된다.
이를 '정책의 상속 = IAM Policies Inheritance' 이라고도 한다.

 

사용자가 그룹에 속해 있든 아니든, 특정 사용자에게 인라인 정책을 적용하는 것도 가능하다.

 

2-1. 정책 구조

  • Version: 정책의 언어 버전 (보통 2012-10-17)
  • Id: 정책 식별 아이디 (optional)
  • Statement: 하나 이상의 statements 로 구성 (Required)
    • Sid: statement의 id(=식별자) (optional)
    • Effect: statement가 특정 API에 접근하는걸 허용할지 거부할지 -> Allow 혹은 Deny 값을 가짐
    • Principal: 정책이 적용될 유저/계정/역할
    • Action: effect에 기반하여 허옹 혹은 거부되는 API 호출 목록
    • Resource: action이 적용될 리소스 목록
    • Condition: statement가 언제 적용될지 결정 (optional)

 

3. Password Policy - 비밀번호 정책

 

사용자와 그룹이 손상되지 않도록 보호해야 하는데, 두가지 방어 메커니즘을 사용할 수 있다.

 

1. 패스워드 설정

  • 비밀번호 정책을 정의하여 방어할 수 있다!
  • 비밀번호가 강력할수록 계정 보안이 강화됨

2. MFA - 다중 인증

Multi Factor Authentication 의 약자로, AWS에서 필수로 사용해야 하는 방어 메커니즘이다.

사용자가 기억하는 비밀번호와 사용자가 소유하는 실물 보안 장치를 모두 사용하는 방식으로, 단순히 비밀번호만 사용하는 것보다 보안이 강화된다!

📱MFA devices options in AWS

  1. 가상 MFA 장치 - Virtual MFA device
    : 모바일로 발급된 번호로 인증
    단일 장치에서 여러 토큰을 지원하기 떄문에, 원하는 만큼 많은 유저와 계정을 보유할 수 있음
  2.  U2F 보안키 - Universal 2nd Factor Security Key
    : 물리적인 장치
    이를 보안 토큰에 달면 사용 가능
    단일 보안키를 사용하여 여러 루트 & IAM 사용자 지원

  3. Hardware Key Fob MFA Device, Hardware Key Fob MFA Device for AWS GovCloud(us) 등의 하드웨어 보안 토큰도 사용 가능!

 

4. AWS에 엑세스 하는 방법

AWS에 액세스하는 방법은 3가지가 있다.

 

1. AWS Management Console

: 지금까지 살펴본 '비밀번호 + MFA' 방식

2. AWS CLI(Command Line Interface)

: 액세스 키에 의해 보호되는 방식으로, 컴퓨터에서 설정할 수 있음

 

🤔 CLI란?
-> 명령줄 인터페이스
-> AWS CLI 는 명령줄 셸에서 명령어를 사용하여, AWS 서비스들과 상호작용할 수 있도록 하는 도구
-> CLI를 사용하면 AWS 서비스의 공용 API로 직접 액세스 가능

 

⬇️ CLI에서 명령줄을 입력하면 아래 이미지와 같이 결과가 반환됨.

 

 

🤔 액세스 키란?
-> 자격 증명으로, 터미널에서의 AWS 액세스를 가능하게 해줌
-> 액세스 키는 관리 콘솔에서 생성할 수 있음
-> 사용자들이 자신들의 액세스 키를 직접 관리
-> 사용자 입장에서 액세스 키는 비밀번호와 같은 암호이니, 공유해선 안 됨!

 

3. AWS SDK(Software Developer Kit)

: AWS로 부터 애플리케이션 코드 내에 API를 호출할 때 사용하는 방식
CLI와 동일한 액세스 키로 보호됨.

 

🤔 SDK란?
: 소프트웨어 개발 키트로, 특정 언어로 된 라이브러이의 집합이다.
(-> 프로그래밍 언어에 따라 개별 SDK가 있음)
-> SDK를 사용해서도 AWS 서비스와 API에 액세스할 수 있음

 

but! CLI와 달리 터미널 내에서 사용하는 것이 아니라, 애플리케이션 내에 자체적으로 존재