IAM이 그래서 뭔데???

정연희·2024년 4월 2일
0

AWS

목록 보기
1/18
post-thumbnail

IAM의 정의

IAM은 "Identity and Access Management"의 약자로, AWS 리소스에 대한 사용자 접근을 안전하게 관리 및 제어하는 Global 서비스이다. 쉽게 말해서 사용자마다 AWS 리소스에 대한 접근을 설정해서 AWS 리소스를 보호하는 도구이다. IAM을 사용하면 각 사용자에게 필요한 최소한의 권한을 부여함으로써 보안을 강화할 수 있고, 사용자의 활동을 추적하고 모니터링하여 보안 사고를 사전에 예방할 수 있다. AWS IAM은 클라우드 환경에서 보안을 강화하고, 리소스를 안전하게 관리하기 위한 필수 도구이다.

AWS 리소스란?
AWS 리소스는 AWS에서 제공하는 다양한 클라우드 기반 서비스를 가리킨다. 가령, 가상 서버(EC2), 데이터베이스(RDS), 스토리지(S3), 로드 밸런서, 컨테이너 서비스(ECS), 그리고 인공지능 및 기계 학습 서비스인 SageMaker 등이 AWS 리소스에 해당한다.

IAM의 구성요소

1. Root Account (루트 계정)

AWS 루트 계정은 AWS의 모든 리소스에 대한 권한을 가진 root 사용자 계정이라 생각하면 된다. 계정은 AWS 리소스의 소유주와 마찬가지이며, AWS의 모든 서비스 및 기능을 사용할 수 있는 주체이다. AWS에 가입하는 것은 AWS root 계정/사용자를 만드는 것이다. 이 계정을 이용해 여러 명이 접근할 수 있기 때문에 하나의 계정은 한 사람을 의미하는 것이 아니다. 이때, IAM User가 로그인하는 계정은 IAM account아묘 root account와 다다.

2. User (사용자)

사용자는 특정 AWS 계정 내에서의 개별적인 사용자로, AWS 리소스에 접근 및 작업할 수 있는 사람이나 프로그램을 가리킨다. 사용자는 개별적인 보안 자격 증명과 권한을 가진다. 이러한 사용자는 AWS 계정의 IAM에서 생성되며, 계정 소유주가 필요에 따라 사용자에게 권한을 수정할 수 있다. 사용자는 사람 한 명한테 주라고 만든 단위라고 생각하면 되며, 그렇기에 여러 명이 같은 User를 사용하면 안된다.

3. Role (역할)

역할은 특정 작업을 수행하는 데 필요한 권한을 의미한다. 이 역할은 사용자에게 부여되거나 AWS 서비스에 할당될 수 있다. 가령, 컴퓨팅 서비스가 데이터베이스에 접근하고자 하면 데이터베이스 읽기/쓰기 권한이 필요한데, 이때 역할을 만들어 컴퓨팅 서비스에 부여할 수 있다. 역할은 주로 일시적으로 권한을 부여하고자 할 때 사용된다. 일반적으로 EC2 인스턴스, Lambda 함수 등의 AWS 리소스가 역할을 가지고 외부 서비스와 통신하거나 다른 AWS 리소스에 액세스할 때 사용됩니다.

잠깐만! IAM Role vs User, 둘의 차이점은?


둘 다 해당 role/user에게 권한을 할당받는 점에서 공통적이기에 둘이 같은 것으로 인식되기 쉽다. 그러나 둘은 엄연히 차이점이 존재하는데, 사용자는 AWS 계정의 실제 개체를 나타내는 반면, 역할은 일시적인 권한 부여를 위해 사용되는 개념이다. IAM User는 AWS에 직접적으로 로그인하는 사람이나 소프트웨어로, 각 사용자는 자신만의 로그인 정보(이름&암호 또는 액세스 키)를 가지고 있다. 사용자는 항상 AWS에 로그인할 때마다 동일한 권한을 가진다는 면에서 정적이라 할 수 있다. 한편, 역할은 임시적으로 사용되는 권한을 나타낸다. 비유하자면 임시 출입권이라고 할 수 있는데, 다른 사람 또는 서비스가 AWS 리소스에 접근해야 할 떄 일시적으로 권한을 부여하는 데 사용된다. 이러한 역할은 필요한 경우에만 일시적으로 사용되고, 특정 시간 후에는 자동적으로 제거되기에 임시적이다.

또 잠깐만! Account Root User vs IAM User, 어떤 것이 바람직할까?

IAM User!
Account Root User는 모든 권한을 보유하고 있다. 권한을 제어할 수도 없는 super user이기 때문에 보안이 굉징히 취약하다. 그래서 IAM User를 만들고 Root Account를 가급적 사용하지 않는 것이 좋다.

IAM User Group

Group은 여러 개의 User를 묶은 단위로, 여러 사용자가 같은 권한을 가질 수 있도록 하기 위해 사용되는 개념이다. 권한을 group에게도 부여할 수 있는데, 그룹 내 사용자는 그룹의 권한을 가지게 된다 (권한 상속). 이때, 한 사용자는 여러 그룹에 속할 수 있다. 이때, IAM User Group은 다른 IAM User Group을 포함할 수 없다.

IAM Policy

IAM은 사용자, 그룹, 역할로 구성되며 각각에 할당된 권한들이 있을텐데, 그 권한 설정은 IAM Policy를 통해 이루어진다 .정책이라고도 부르는 IAM Policy는 json 문서로 정의되며, 이 문서에는 누가 어떤 AWS 리소스에 어떤 작업을 수행할 수 있는지, 즉 권한들이 적혀있다. 아래 사진 예시들을 설명해보자면

  • Version: Policy language 버전
  • Id: 정책 아이디
  • Statement: 정책의 본문으로, 권한을 부여하거나 거부할 AWS 리소스 및 작업을 지정하고 있다.
  • 효과(Effect): 정책이 행위를 허용하는 내용인지 거부하는 내용인지를 지정하는 부분으로,"Allow" 또는 "Deny" 중 하나로 설정된다.
  • Principal: 정책이 적용되는 엔티티이다. Account, user, group, 또는 role가 명시된다.
  • 작업(Action): 허용하거나 거부할 작업을 나타낸다
  • 리소스(Resource): 작업이 수행될 대상 AWS 리소스를 지정한다(예: Amazon S3 버킷, Amazon EC2 인스턴스 등).
  • 조건(Condition): 정책이 적용되는 조건을 지정한다(예: 특정 IP 주소에서만 허용하는 경우 등)

IAM Polciy Statement Priority

허용 여부 결정 우선순위는 다음 순서이다.
1. 명시적 거부: 요청에 대한 모든 정책에서 Deny 를 하나라도 발견하면 거부
2. 명시적 허용: 요청에 대한 모든 정책에서 Allow를 발견하면 허용
3. 묵시적 거부(Implicit Deny): 명시되지 않은 정책은 무조건 거부

IAM Policy Attachment

IAM 엔티티에 권한을 부여하는 것인 엔티티에 policy를 attach하는 것이다(policy attachment). IAM policy는 IAM user, group, role에 붙였다 떼었다 할 수 있다. 이때, 엔티티에게 최소한의 권한을 할당하는 것이 바람직하다(principle of least privilege).

AWS Managed Policies

AWS가 정의하고 관리하는 정책으로, Standalone(독립형) policy라고도 한다. 많이 쓰일 것같은 use cases에 관해 미리 AWS가 정의해놓은 IAM policy라고 생각하면 되며, 이미 정의되어 있기에 빠르고 편하게 사용할 수 있는 장점이 존재한다. 그러나 AWS managed policy들은 수정이 불가하다.

Standalone policy
Standalone policy means
that the policy has its own
Amazon Resource Name
(ARN)

IAM MFA (Multi Factor Authentication)

  • MFA는 사용자가 두 개 이상의 인증을 해야지만 계정/시스템에 접근할 수 있도록 하는 보안 메커니즘이다.
  • IAM MFA는 사용자가 아는 비밀번호 + 사용자가 소유하고 있는 기기, 두 가지의 인증을 요구한다.
  • 장점: 비밀번호가 유출되어도, 계정이 해킹될 위험이 없다.
  • AWS가 제공하는 MFA 기기 선택지:
    • Virtual MFA device: Google Authenticator, Authy -> support for multiple otkens on a single device
    • Universal 2nd Factor (U2F) Security Key: YubiKey -> suppport for multiple root and IAM users usinga single security key
    • Hardware Key Fob MFA Device for AWS GovCloud

IAM Security Tools

IAM Credentials Report (account-level)

이 보고서는 계정과 연관된 사용자 리스트와 각 사용자의 자격 증명 정보(credentials)를 담고 있다.

IAM Access Advisor (user-level)

Access advisor는 사용자에게 할당된 권한들과 각 권한을 마지막으로 사용했는지를 보여준다. 이를 통해 사용자에게 할당되어야 할 최소한의 권한들이 무엇인지 파악할 수 있다. 사용자가 사용한지 오래된 권한이 없다면, 그 권한 할당을 취소하고 결과적으로 principle of least privilege를 실현할 수 있게 된다.

0개의 댓글