AWS IAM(Identity and Access Management)은 클라우드 리소스에 대한 액세스를 제어하기 위한 필수적인 도구입니다. IAM 정책을 통해 사용자는 다양한 서비스와 리소스에 대한 권한을 부여받을 수 있으며, 이를 통해 조직의 보안 및 권한 관리를 효율적으로 수행할 수 있습니다. 이번 글에서는 IAM 정책의 기본 구조와 그룹 및 사용자에 대한 권한 부여 방법에 대해 알아보겠습니다.
IAM 정책의 구조
IAM 정책은 JSON 형식으로 작성되며, 다음과 같은 주요 구성 요소를 포함합니다.
- Version: 정책 언어의 버전을 나타냅니다. 대부분의 정책은 "2012-10-17" 버전을 사용합니다:
- Id: 정책의 식별자로, 선택 사항입니다.
- Statement: 정책의 주요 부분으로, 여러 개의 문장으로 구성될 수 있습니다. 각 문장은 다음의 요소로 이루어집니다:
- Sid (Statement ID): 문장의 고유 식별자로 선택 사항입니다.
- Effect: 특정 API에 대한 접근을 허용할지(Allow) 거부할지(Deny) 결정합니다.
- Principal: 정책이 적용될 사용자, 계정, 또는 역할을 지정합니다.
- Action: 허용 또는 거부할 API 호출의 목록입니다.
- Resource: 정책이 적용될 리소스의 목록입니다.
- Condition: 특정 조건이 만족될 때만 문장이 적용되도록 설정하는 선택적 요소입니다.
그룹과 사용자의 정책 적용
IAM 정책은 그룹 또는 사용자 수준에서 적용될 수 있습니다. 이를 통해 조직 내의 권한 관리를 효율적으로 수행할 수 있습니다.
그룹에 대한 정책 적용
- 개발자 그룹: 예를 들어, Alice, Bob, Charles가 속한 개발자 그룹에 특정 정책을 적용할 수 있습니다. 이 경우, 그룹에 부여된 권한은 그룹의 모든 구성원에게 상속됩니다. 즉, 이 그룹의 모든 구성원이 동일한 권한을 갖게 됩니다.
- 운용자 그룹: 다른 정책이 적용된 운영자 그룹에는 David와 Edward가 속해 있으며, 이 그룹에는 개발자 그룹과는 다른 권한이 부여됩니다.
사용자에 대한 인라인 정책 적용
- 개별 사용자 권한 부여: Fred와 같은 사용자는 특정 그룹에 속하지 않을 수 있습니다. 이 경우, 사용자에게만 적용되는 인라인 정책을 생성할 수 있습니다. 인라인 정책은 그룹에 속하지 않은 사용자에게 개별적으로 권한을 부여할 수 있는 방법입니다.
복수 그룹에 속한 사용자에 대한 정책 상속
Charles와 David가 감사팀에도 속해 있다고 가정해 봅시다. 이 경우, 이들은 각각 개발자 및 운영자 그룹의 정책뿐만 아니라 감사팀의 정책도 상속받게 됩니다. 예를 들어, Charles는 개발자와 감사팀의 정책을 모두 적용받고, David는 운영팀과 감사팀의 정책을 적용받게 됩니다. 이렇게 복수의 정책이 적용되는 경우, 정책 간의 충돌이 발생할 수 있으며, AWS는 명시적인 거부(Deny)가 명시적인 허용(Allow)보다 우선순위를 갖도록 설계되어 있습니다.
마치며
IAM 정책은 AWS에서 리소스에 대한 액세스를 제어하는 중요한 도구입니다. 정책을 올바르게 설계하고 관리함으로써, 조직 내에서 권한을 명확히 하고 보안을 강화할 수 있습니다.