IAM(Identity and Access Management) 개념 정리

Park sang woo·2024년 7월 25일

11주차 AWS란

목록 보기
8/8

🗻 IAM 정의

IAM은 사용자의 접근 권한을 관리하는 서비스입니다.
AWS 사용자 및 그룹을 만들고 관리하며 AWS 리소스에 대한 액세스를 허용 및 거부 설정함으로써 전반적인 사용자 관리를 하는 서비스입니다.

IAM을 통해서 회사 내 AWS를 사용하는 사람들에게 부서 마다 사용자별로 AWS에서 제공하는 서비스들, 서비스에 생성된 자원 등에 대해 세분화된 권한을 지정할 수 있습니다.

ex) 개발 부서 그룹은 EC2와 S3 서비스에 대한 엑세스 권한, DB 관리 부서 그룹은 RDS 엑세스 권한 부여.


최고 관리자가 Root 계정을 관리하고 그밖의 사용자들은 각자 계정을 발급받아 제한된 권한을 갖고 AWS를 이용하게 됩니다.

IAM은 AWS 서비스에 대한 액세스 권한 설정 뿐만 아니라, 언제 어디서 누가 무엇을 어떻게 할 수 있는가를 상세히 설정도 가능합니다.

  • ex) 회사 IP로 된 요청에서 2-3시까지만 S3의 특정 버킷의 회계 자료를 열람할 수 있게 설정하는 식으로 다양하게 권한 설정이 가능.

1️⃣ 사용자 생성/관리/계정의 보안 : 사용자의 패스워드 정책 관리 (일정 시간마다 pw 변경 등)

2️⃣ AWS 계정에 대한 공유 액세스 : AWS 계정의 리소스 관리 및 권한을 다른 사람에게 부여 가능.

3️⃣ 세분화된 권한 : 리소스에 따라 여러 사람에게 다양한 권한 부여 가능.

  • 일부 사용자에게 EC2 전체 액세스 권한, S3 읽기 전용 권한 등을 부여

4️⃣ EC2 애플리케이션 권한 자격 부여(IAM 역할 사용) : 사용자 뿐만 아니라 EC2에서 실행되는 애플리케이션에 IAM기능을 이용해 자격증명 제공.

5️⃣ 멀티 팩터 인증(MFA) : 보안 강화를 위해 암호나 액세스 키뿐 아니라 특별히 구성된 디바이스 코드를 제공하는 인증을 추가 가능.

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

7️⃣ 글로벌 서비스 (리전 서비스 X) : AWS의 계정은 전세계에서 유니크.






🗻 IAM 구성 요소

크게 사용자(Users), 그룹(Groups), 역할(Roles), 정책(Policies) 으로 구성되어 있습니다.

1️⃣ IAM 사용자(Users)

실제 AWS의 기능과 자원을 이용하는 사람 혹은 애플리케이션을 의미합니다.
각 사용자마다 권한을 부여합니다.



2️⃣ IAM 그룹 (Groups)

사용자가 많아지면 관리하기 불편해지기 때문에 그룹을 사용합니다.
하나의 그룹에 여러 명의 사용자를 지정해서 공통적으로 권한을 주어야 하는 상황일 때 유용합니다.

  • IAM 사용자마다 매번 정책을 직접 연결해줘야 하는 번거로움 줄이기 가능.

  • 그룹은 동일한 권한을 가지는 사용자에게 권한을 설정하는 것을 편리하게 하기 위함이지, 그룹 자체가 보안 주체가 될 수는 없습니다.

  • 사용자 한명은 최대 10개의 그룹에 속할 수 있다.



3️⃣ IAM 정책(Policy)

사용자와 그룹, 역할이 무엇을 할 수 있는지에 대한 permission 설정 모음 데이터 문서.

하나 이상의 AWS리소스에 대한 어떤 작업을 수행할 수 있는지 허용 규칙이 JSON 형식으로 작성됩니다.

  • "어떤 유저는 인스턴스를 올릴 수 있는데 삭제를 못하거나, 버킷에 접근은 가능한데 파일을 추가할 수 없다" 같은 정책

이렇게 만들어진 정책 문서를 IAM 사용자와 그룹, 역할에 연결합니다.


Policy 종류(타입) | 자주 사용하는 정책만 정리

  • 자격 증명 기반

    • AWS 관리형 정책 - AWS에서 미리 제공하는 정책
    • AWS 고객 관리형 정책 - 고객이 직접 만들어서 사용하는 정책
    • AWS 인라인 정책 - 단일 사용자, 그룹, 역할에 직접 추가하는 방식
  • 리소스 정책 기반 - EC2 같은 리소스에 적용하는 정책

  • 권한 경계 기반 정책

  • 조직 SCP 기반 정책

  • 액세스 제어 리스트

  • 세션 정책

🌀 자격(ID)증명 기반 정책

ID(사용자, 사용자 그룹 및 역할)가 수행할 수 있는 작업, 리소스 및 조건을 제어하는 JSON 권한 정책 문서입니다.

✔️ AWS 관리형 정책

AWS에서 생성 및 관리하는 독립적인 정책입니다. (AWS에서 기본으로 제공되는 정책.)
IAM 정책 탭에서 나오는 미리보기 정책들이 AWS 관리형 정책입니다.
정책 스스로 정책 이름이 포함된 Amazon 리소스 이름(ARN)을 가지고 있습니다.


AWS에서 미리 만들어놓은 정책들로 IAM 사용자나 그룹에 할당하게 되면 각 정책 권한이 적용됩니다.

🌀 AWS 고객 관리형 정책


사용자가 정책을 새로 생성해서 커스텀한 정책입니다.
오직 Account에서만 사용할 수 있습니다.

🌀 AWS 인라인 정책


1대1 정책으로 명시적으로 할당되는 정책입니다.
하나의 사용자에게 하나의 정책만을 적용하는 것입니다.

AWS IAM에서는 인라인 정책보다 관리형 정책 사용을 권장합니다.
명시적으로 특정 사용자에게만 특정 권한을 주고 싶다면 인라인 정책을 사용하면 됩니다.



4️⃣ IAM 역할

리소스에 대한 액세스 권한이 없는 사용자나 서비스에게 일시적으로 권한을 위임하는 것입니다.

만약 사용할 일이 끝나 정책을 회수하려면 다시 일일이 설정을 다시 업데이트 해야 하기 때문에 임시 자격 증명서를 IAM 사용자 / EC2 인스턴스에게 부여해서 임시 세션 토큰을 발급 받고, 역할에 연결된 권한을 사용할 수 있게 됩니다. (역할 부여해 사용하고 회수 가능!)


🗳️ 역할은 AWS 리소스가 무엇을 할 수 있는지를 정의하는 자격증명서
🗳️ 그룹에 바로 권한을 부여하는 대신, 역할을 만들고 역할을 그룹이나 사용자에게 주는 방식.

  • 역할은 여러 권한들을 묶는 개념으로 사용됨. (그룹에 역할을 부여.)

🗳️ 다른 사용자가 역할을 부여 받아 사용 가능.

  • 임시 보안 자격 증명

🗳️ AWS 사용자 뿐만 아니라 EC2 인스턴스, AWS 계정, Facebook, Google 등 접근 권한을 설정 가능.


🗣️ Role 장점

  • 보안 자격 증명을 공유할 필요가 없습니다.
  • 언제든지 접근 권한 회수가 가능합니다.
  • 각 사용자에게 매번 필요한 권한을 일일이 부여할 필요가 없습니다.


🗻 IAM 권한 검증 절차

🌀 사용자가 S3를 사용하고 싶다면

  1. 사용자에게 S3 정책이 설정되어 있는지
  2. 사용자가 속한 그룹에게 S3 정책이 설정되어 있는지
  3. S3 정책이 설정된 역할이 사용자에게 부여되어 있는지
  4. 성공/실패



🌀 Lambda(서비스)에서 S3를 사용하고 싶다면

  1. AWS 서비스에 S3 정책이 설정된 역할이 부여되어 있는지
  2. 성공/실패






Reference

https://somaz.tistory.com/181
ID 및 액세스 관리(IAM)란 무엇입니까?
IAM 정책 JSON 구조

profile
일상의 인연에 감사하라. 기적은 의외로 가까운 곳에 있을지도 모른다.

0개의 댓글