IAM

기술노트

👤 IAM (Identity and Access Management)

IAM은 클라우드 컴퓨팅 환경에서 누가(Identity, 정체성) 어떤 리소스에 대해 어떤 권한(Access)을 가질지를 정의하고 관리(Management)하는 서비스 또는 프레임워크입니다. 클라우드 보안의 가장 기본적이고 핵심적인 구성 요소입니다.

IAM을 통해 '최소 권한 원칙(Principle of Least Privilege)'을 구현하여, 사용자나 애플리케이션이 꼭 필요한 작업만 수행할 수 있도록 제한함으로써 보안을 강화합니다.


🧱 IAM의 핵심 구성 요소

  • 사용자 (User) : 시스템과 상호작용하는 사람 또는 애플리케이션. (예: 개발자, 특정 서비스)
  • 그룹 (Group) : 사용자들의 집합. 여러 사용자에게 동일한 권한을 부여해야 할 때, 각 사용자에게 개별적으로 권한을 주는 대신 그룹에 권한을 부여하여 관리를 용이하게 합니다.
  • 역할 (Role) : 특정 권한들의 집합으로, 사용자나 다른 서비스가 일시적으로 해당 역할을 맡아(assume) 권한을 위임받을 수 있습니다. (예: EC2 인스턴스가 S3 버킷에 접근할 수 있는 역할)
  • 정책 (Policy) : 어떤 리소스에 대해 어떤 작업을 허용(Allow)하거나 거부(Deny)할지를 JSON 형식으로 명시한 문서입니다. IAM의 핵심으로, 권한을 정의하는 실제 내용입니다.

⚙️ IAM의 동작 방식

1. 사용자(또는 서비스)가 특정 리소스에 대한 작업을 요청합니다. 2. IAM은 해당 사용자가 누구인지 인증(Authentication)합니다. (예: 아이디/비밀번호, 액세스 키) 3. IAM은 해당 사용자에게 연결된 정책을 모두 확인하여, 요청된 작업을 수행할 권한이 있는지 인가(Authorization)합니다. 4. 권한이 있으면 작업이 허용되고, 없으면 거부됩니다.


💡 개발자 핵심 Point

  • 클라우드 환경에서 개발할 때, IAM에 대한 이해는 필수적입니다.
  • 개발용 계정에는 최소한의 권한만 부여하여, 실수로 중요한 운영 리소스를 변경하거나 삭제하는 사고를 방지해야 합니다.
  • 애플리케이션이 다른 클라우드 서비스(예: S3, DynamoDB)에 접근해야 할 때는, 액세스 키를 직접 코드에 넣는 대신 IAM 역할(Role)을 부여하는 것이 훨씬 안전하고 권장되는 방식입니다.
  • 모든 클라우드 제공업체(AWS, GCP, Azure 등)는 자신만의 IAM 서비스를 제공하며, 이름은 조금씩 다르지만 핵심 개념은 거의 동일합니다.