언제 IAM을 사용할까요?
언제 IAM을 사용할까요?
AWS Identity and Access Management(IAM)는 AWS 내에서 자격 증명 기반 접근 제어의 기반이 되는 핵심 인프라 서비스예요. AWS 계정에 접근할 때마다 IAM을 사용하게 되죠. 다만 사용하는 방식은 조직 안에서 맡은 역할과 직무에 따라 달라져요. AWS 서비스 사용자는 일상 업무에 필요한 AWS 리소스에 접근하기 위해 IAM을 쓰고, 관리자는 적절한 권한을 부여하며, IAM 관리자는 IAM 자격 증명을 관리하고 리소스 접근을 통제하는 정책을 작성해요. 어떤 역할을 맡든 AWS 리소스에 대한 접근을 인증·승인할 때마다 IAM과 상호작용하게 돼요. 이번 글에서는 역할별 IAM 사용법과 정책 유형을 정리해 볼게요.
출처: 문서
본문
다양한 직무를 수행할 때 (When you are performing different job functions)
IAM은 AWS에서 하는 일에 따라 사용 방식이 달라져요.
- 서비스 사용자 (Service user) – AWS 서비스를 업무에 사용한다면 관리자가 필요한 자격 증명과 권한을 제공해 줘요. 더 고급 기능을 쓰면서 추가 권한이 필요할 수도 있는데, 접근 관리가 어떻게 되는지 이해하면 관리자에게 올바른 권한을 요청하는 데 도움이 돼요.
- 서비스 관리자 (Service administrator) – 회사에서 AWS 리소스를 담당한다면 아마 IAM에 대한 전체 접근 권한을 갖고 있을 거예요. 서비스 사용자가 어떤 IAM 기능과 리소스에 접근해야 하는지 결정하고, 서비스 사용자의 권한을 바꾸기 위해 IAM 관리자에게 요청을 제출하는 게 업무예요.
- IAM 관리자 (IAM administrator) – IAM 관리자는 IAM 자격 증명을 관리하고, IAM에 대한 접근을 관리하는 정책을 작성해요.
AWS 리소스에 접근할 권한이 있을 때 (When you are authorized to access AWS resources)
인증(Authentication)은 자격 증명을 사용해 AWS에 로그인하는 방식이에요. AWS 계정 루트 사용자, IAM 사용자로 인증하거나 IAM 역할을 맡아(assume) 인증해야 해요.
AWS IAM Identity Center(IAM Identity Center), 단일 로그온 인증, 또는 Google/Facebook 자격 증명 같은 자격 증명 소스를 사용해 페더레이션 자격 증명으로 로그인할 수도 있어요. 로그인에 대한 자세한 내용은 _AWS Sign-In 사용자 가이드_의 AWS 계정에 로그인하는 방법을 참고하세요.
프로그래밍 방식 접근을 위해 AWS는 요청을 암호학적으로 서명하는 SDK와 CLI를 제공해요. 자세한 내용은 _IAM 사용자 가이드_의 API 요청에 대한 AWS Signature Version 4를 참고하세요.
IAM 사용자로 로그인할 때 (When you sign-in as an IAM user)
_IAM 사용자_는 한 명의 사용자 또는 애플리케이션을 위한 특정 권한을 가진 자격 증명이에요. 장기 자격 증명을 가진 IAM 사용자보다는 임시 자격 증명을 사용하는 것을 권장해요. 자세한 내용은 _IAM 사용자 가이드_의 휴먼 사용자는 임시 자격 증명으로 AWS에 접근하도록 ID 공급자와 페더레이션해야 함을 참고하세요.
_IAM 그룹_은 IAM 사용자의 모음을 지정하며, 많은 사용자 집합에 대해 권한 관리를 더 쉽게 만들어 줘요. 자세한 내용은 _IAM 사용자 가이드_의 IAM 사용자 사용 사례를 참고하세요.
IAM 역할을 맡을 때 (When you assume an IAM role)
_IAM 역할_은 임시 자격 증명을 제공하는 특정 권한을 가진 자격 증명이에요. 콘솔에서 사용자에서 IAM 역할로 전환하거나 AWS CLI·AWS API 작업을 호출해 역할을 맡을 수 있어요. 자세한 내용은 _IAM 사용자 가이드_의 역할을 맡는 방법을 참고하세요.
IAM 역할은 페더레이션 사용자 접근, 일시적인 IAM 사용자 권한, 계정 간 접근, 서비스 간 접근, Amazon EC2에서 실행되는 애플리케이션에 유용해요. 자세한 내용은 _IAM 사용자 가이드_의 IAM에서 계정 간 리소스 접근을 참고하세요.
정책과 권한을 만들 때 (When you create policies and permissions)
사용자에게 권한을 부여하려면 정책(policy)을 만들어요. 정책은 사용자가 수행할 수 있는 액션(actions)과 그 액션이 영향을 줄 수 있는 리소스를 나열하는 문서예요. 명시적으로 허용되지 않은 액션이나 리소스는 기본적으로 거부돼요. 정책은 만들어서 프린시펄(principal: 사용자, 사용자 그룹, 사용자가 맡은 역할, 리소스)에 연결(attach)할 수 있어요.
IAM 역할과 함께 사용할 수 있는 정책은 다음과 같아요.
- 신뢰 정책 (Trust policy) – 어떤 프린시펄이 어떤 조건에서 역할을 맡을 수 있는지를 정의해요. 신뢰 정책은 IAM 역할을 위한 리소스 기반 정책의 특별한 유형이며, 역할은 신뢰 정책을 하나만 가질 수 있어요.
- 자격 증명 기반 정책 (Identity-based policies, 인라인·관리형) – 역할 사용자가 수행할 수 있거나(또는 거부되는) 권한과, 어느 리소스에 대해 그런지 정의해요.
예시 IAM 자격 증명 기반 정책을 사용해 IAM 자격 증명의 권한을 정의할 수 있어요. 필요한 정책을 찾은 뒤 "view the policy"를 선택하면 정책의 JSON을 볼 수 있고, 이 JSON 정책 문서를 자기 정책의 템플릿으로 사용할 수 있어요.
참고 — IAM Identity Center로 사용자를 관리한다면, 프린시펄에 권한 정책을 연결하는 대신 IAM Identity Center에서 권한 세트(permission sets)를 할당해요. AWS IAM Identity Center에서 그룹이나 사용자에 권한 세트를 할당하면, IAM Identity Center가 각 계정에 해당 IAM 역할을 만들고 권한 세트에 지정된 정책을 그 역할에 연결해요. IAM Identity Center가 역할을 관리하며, 정의한 권한 사용자가 역할을 맡도록 허용해요. 권한 세트를 수정하면 IAM Identity Center가 해당 IAM 정책과 역할도 그에 맞게 업데이트해 줘요.
또 계정 접근 관리자(account access manager)라는 IAM 기능도 있어요. 직접 만들고 관리하는 기존 IAM 역할을 IAM Identity Center 사용자와 그룹에 할당해서, IAM 역할의 전체 기능 세트를 쓸 수 있게 해 주죠. 권한 세트와 함께 쓸 수도 있고 단독으로 쓸 수도 있어요.
IAM Identity Center에 대한 자세한 내용은 _AWS IAM Identity Center 사용자 가이드_의 IAM Identity Center란 무엇인가요?를 참고하세요.