AWS IAM 완전 정복 – 루트 계정을 잠그고 안전하게 권한 관리하기

1. AWS 계정을 처음 만들고 가장 먼저 해야 할 일

AWS 계정을 생성하면 **루트 계정(Root Account)**이 만들어집니다. 이 계정은 AWS의 모든 서비스에 대한 완전한 접근 권한을 가집니다. 심지어 계정 자체를 삭제하거나 결제 정보를 변경할 수도 있습니다.

루트 계정을 일상적인 작업에 사용하는 것은 마스터 열쇠를 매일 들고 다니는 것과 같습니다. 분실하거나 도난당하면 모든 것이 위험에 처합니다.

AWS가 강력히 권장하는 것은 루트 계정에 MFA를 설정하고, 이후 모든 작업은 IAM 사용자로 처리하는 것입니다.

2. IAM이 존재하는 이유

**IAM(Identity and Access Management)**은 누가 어떤 AWS 리소스에 어떤 작업을 할 수 있는지를 세밀하게 제어하는 서비스입니다.

다섯 명의 개발팀이 있다고 가정합니다. 모든 팀원에게 루트 계정을 공유하면 누가 무엇을 했는지 추적이 불가능합니다. 누군가 실수로 운영 DB를 삭제해도 책임 소재를 알 수 없습니다.

IAM을 사용하면 각 팀원에게 업무에 필요한 최소한의 권한만 부여하고, 모든 행동이 CloudTrail 로그에 기록됩니다.

3. IAM의 네 가지 핵심 개념

사용자(User): AWS에 접근하는 개인 또는 애플리케이션입니다. 각 사용자는 고유한 자격증명을 가집니다.

그룹(Group): 여러 사용자를 묶어 동일한 권한을 관리합니다. 개발팀 그룹, 운영팀 그룹처럼 역할별로 구성합니다.

정책(Policy): 어떤 리소스에 어떤 작업을 허용하거나 거부하는 JSON 규칙입니다.

역할(Role): 특정 사용자가 아닌 AWS 서비스나 외부 사용자에게 임시로 권한을 부여합니다.

4. IAM 사용자와 그룹 설정하기

IAM 콘솔에서 사용자 그룹을 먼저 만듭니다. 개발팀이라면 EC2, S3, RDS 접근 권한을 가진 그룹을 만들고, 해당 관리형 정책을 연결합니다.

사용자를 만들 때 해당 그룹에 추가합니다. 이후 팀원이 새로 합류하면 그룹에 추가하고, 퇴사하면 그룹에서 제거합니다. 개별적으로 권한을 관리하는 것보다 훨씬 효율적입니다.

콘솔 접근이 필요한 사용자에게는 비밀번호를 발급합니다. API나 CLI 접근이 필요하면 액세스 키를 발급합니다. 액세스 키는 코드나 GitHub에 절대 넣으면 안 됩니다.

5. IAM 정책 – 무엇을 허용하고 거부할지 정의하기

IAM 정책은 JSON 형태입니다. Effect(Allow/Deny), Action(어떤 API 작업), Resource(어떤 리소스) 세 가지가 핵심입니다.

S3의 특정 버킷만 읽기 가능하도록 하는 정책 예시입니다.

{ “Effect”: “Allow”, “Action”: [“s3:GetObject”, “s3:ListBucket”], “Resource”: [“arn:aws:s3:::my-bucket”, “arn:aws:s3:::my-bucket/*”] }

AWS가 제공하는 **관리형 정책(Managed Policy)**을 활용하면 자주 쓰이는 권한 묶음을 직접 작성할 필요 없이 바로 사용할 수 있습니다.

6. IAM 역할(Role) – 서비스에 권한 부여하기

EC2 서버가 S3에 파일을 저장해야 한다면 어떻게 해야 할까요? 코드에 액세스 키를 넣는 방법은 키가 노출될 위험이 있습니다.

올바른 방법은 EC2 인스턴스에 **IAM 역할(Role)**을 연결하는 것입니다. S3 쓰기 권한이 있는 역할을 만들고 EC2에 연결하면, EC2는 자동으로 임시 자격증명을 발급받아 S3에 접근합니다. 코드에 키가 없으니 유출 위험이 없습니다.

7. IAM 보안 체크리스트

루트 계정에 MFA를 설정합니다. 루트 계정으로 일상 작업을 하지 않습니다. 모든 IAM 사용자에게 MFA를 설정합니다. 필요한 최소한의 권한만 부여합니다(최소 권한 원칙). 90일 이상 사용하지 않은 자격증명을 삭제합니다. EC2에서 AWS 서비스를 사용할 때는 액세스 키 대신 IAM 역할을 사용합니다.

8. 정리 및 다음 단계

오늘 배운 핵심을 정리합니다.

  • IAM은 AWS 리소스 접근 권한을 세밀하게 제어하는 서비스입니다.
  • 루트 계정에 MFA를 설정하고 일상 작업은 IAM 사용자로 처리합니다.
  • 사용자를 그룹으로 관리하면 팀 확장 시 권한 관리가 효율적입니다.
  • EC2에서 AWS 서비스를 사용할 때는 액세스 키 대신 IAM 역할을 사용합니다.

다음 글에서는 AWS VPC로 가상 네트워크 구조를 이해하는 방법을 알아보겠습니다.

댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.