어떻게 IAM을 관리할까요?
어떻게 IAM을 관리할까요?
AWS 환경에서 AWS Identity and Access Management(IAM)를 관리하는 방법은 다양해요. 가장 흔한 방법은 웹 기반 인터페이스인 AWS Management Console을 쓰는 거예요. 콘솔에서는 사용자와 역할 생성부터 권한 구성까지 폭넓은 IAM 관리 작업을 할 수 있죠. 명령줄 환경을 더 선호한다면 AWS Command Line Interface와 AWS Tools for Windows PowerShell을 쓸 수 있고, AWS CloudShell을 이용하면 웹 브라우저에서 바로 CLI·SDK 명령을 실행할 수도 있어요. 이번 글에서는 IAM을 관리하는 여러 접근 방식을 하나씩 살펴볼게요.
출처: 문서
본문
AWS Management Console 사용하기 (Use the AWS Management Console)
AWS Management Console은 AWS 리소스를 관리하기 위한 다양한 서비스 콘솔을 포함·참조하는 웹 애플리케이션이에요. 처음 로그인하면 콘솔 홈 페이지가 보이는데, 홈 페이지에서 각 서비스 콘솔에 접근하고 AWS 관련 작업을 수행하는 데 필요한 정보를 한곳에서 볼 수 있어요. 로그인 후 사용할 수 있는 서비스와 애플리케이션은 AWS 리소스에 대한 접근 권한을 가진 범위에 따라 달라져요. 권한은 역할 맡기(assume a role), 권한이 부여된 그룹의 구성원이 되기, 또는 명시적으로 권한을 부여받는 방식으로 얻을 수 있어요. 단독 AWS 계정에서는 루트 사용자나 IAM 관리자가 리소스 접근을 구성하고, AWS Organizations에서는 관리 계정(management account) 또는 위임 관리자가 리소스 접근을 구성해요.
사람들이 AWS Management Console로 AWS 리소스를 관리하게 할 계획이라면, 보안 모범 사례로 임시 자격 증명을 가진 사용자를 구성하는 걸 권장해요. 역할을 맡은 IAM 사용자, 페더레이션 프린시펄, IAM Identity Center 사용자는 임시 자격 증명을 갖고, IAM 사용자와 루트 사용자는 장기 자격 증명을 가져요. 루트 사용자 자격 증명은 AWS 계정에 대한 전체 접근을 제공하고, 다른 사용자는 IAM 정책이 부여한 리소스에만 접근하는 자격 증명을 가져요.
AWS Management Console 사용자 유형별로 로그인 환경이 달라요.
- IAM 사용자와 루트 사용자 — 메인 AWS 로그인 URL(https://signin.aws.amazon.com)에서 로그인해요. 로그인하면 권한이 부여된 계정의 리소스에 접근할 수 있어요. 루트 사용자로 로그인하려면 루트 사용자 이메일 주소와 비밀번호가 필요하고요, IAM 사용자로 로그인하려면 AWS 계정 번호(또는 별칭), IAM 사용자 이름, IAM 사용자 비밀번호가 필요해요. 계정의 IAM 사용자는 비상 접근처럼 장기 자격 증명이 꼭 필요한 상황으로 제한하고, 루트 사용자는 루트 사용자 자격 증명이 필요한 작업에만 쓰는 것을 권장해요. 편의를 위해 AWS 로그인 페이지는 브라우저 쿠키로 IAM 사용자 이름과 계정 정보를 기억해 두고요, 다음에 AWS Management Console의 어떤 페이지에 가도 쿠키를 이용해 계정 로그인 페이지로 리다이렉트해 줘요. 세션이 끝나면 콘솔에서 로그아웃해서 이전 로그인 재사용을 막는 게 좋아요.
- IAM Identity Center 사용자 — 조직에 고유한 특정 AWS 액세스 포털로 로그인해요. 로그인한 뒤 접근할 계정이나 애플리케이션을 선택할 수 있고, 계정에 접근하면 관리 세션에 사용할 권한 세트(permission set)를 선택해요.
- OIDC·SAML 페더레이션 프린시펄 — AWS 계정에 연결된 외부 자격 증명 공급자에서 관리되며, 사용자 지정 엔터프라이즈 액세스 포털로 로그인해요. 사용자가 사용할 수 있는 AWS 리소스는 조직이 선택한 정책에 따라 달라져요.
참고 — 보안을 한층 강화하기 위해 루트 사용자, IAM 사용자, IAM Identity Center 사용자는 AWS 리소스 접근을 허용하기 전에 AWS가 다중 인증(MFA)을 확인하게 할 수 있어요. MFA를 활성화하면 로그인할 때 MFA 기기에 대한 접근도 필요해요.
다른 사용자가 관리 콘솔에 어떻게 로그인하는지 더 알아보려면 _AWS Sign-In 사용자 가이드_의 AWS Management Console에 로그인을 참고하세요.
AWS 명령줄 도구 (AWS Command Line Tools)
AWS 명령줄 도구를 사용하면 시스템 명령줄에서 명령을 실행해 IAM 및 AWS 작업을 수행할 수 있어요. 명령줄 사용은 콘솔보다 빠르고 편리할 수 있으며, AWS 작업을 수행하는 스크립트를 만들 때도 유용해요.
AWS는 두 가지 명령줄 도구, 즉 AWS Command Line Interface(AWS CLI)와 AWS Tools for Windows PowerShell을 제공해요. AWS CLI 설치·사용에 대한 내용은 AWS Command Line Interface 사용자 가이드를, Windows PowerShell용 도구는 AWS Tools for PowerShell 사용자 가이드를 참고하세요.
콘솔에 로그인한 뒤에는 브라우저에서 AWS CloudShell을 사용해 CLI나 SDK 명령을 실행할 수 있어요. AWS 리소스 접근 권한은 콘솔에 로그인할 때 사용한 자격 증명을 기반으로 해요. 경험에 따라 CLI가 AWS 계정을 관리하는 더 효율적인 방법일 수 있어요. 자세한 내용은 AWS CloudShell로 AWS Identity and Access Management 작업하기를 참고하세요.
AWS Command Line Interface(CLI)와 SDK
IAM Identity Center와 IAM 사용자는 CLI 또는 관련 SDK의 애플리케이션 인터페이스(API)를 통해 인증할 때 서로 다른 방식으로 자격 증명을 인증해요.
자격 증명과 구성 설정은 시스템·사용자 환경 변수, 로컬 AWS 구성 파일, 명령줄 매개변수 등 여러 곳에 위치해요. 어떤 위치가 다른 곳보다 우선 적용되기도 해요.
IAM Identity Center와 IAM 모두 CLI나 SDK에 사용할 수 있는 액세스 키를 제공해요. IAM Identity Center 액세스 키는 자동으로 갱신되는 임시 자격 증명이며, IAM 사용자와 연결된 장기 액세스 키보다 권장돼요.
CLI나 SDK로 AWS 계정을 관리하려면 브라우저에서 AWS CloudShell을 사용할 수 있어요. CloudShell로 CLI·SDK 명령을 실행하려면 먼저 콘솔에 로그인해야 해요. 애플리케이션 개발을 위해 CLI나 SDK를 컴퓨터에 다운로드하고 명령 프롬프트나 Docker 창에서 로그인할 수도 있는데, 이 경우 CLI 스크립트나 SDK 애플리케이션의 일부로 인증 및 접근 자격 증명을 구성하게 돼요. 환경과 사용 가능한 접근에 따라 프로그래밍 방식 접근을 다양하게 구성할 수 있어요.
- 로컬 코드를 AWS 서비스로 인증하는 권장 옵션은 IAM Identity Center와 IAM Roles Anywhere예요.
- AWS 환경 내에서 실행되는 코드를 인증하는 권장 옵션은 IAM 역할을 사용하거나 IAM Identity Center 자격 증명을 사용하는 거예요.
AWS 액세스 포털로 로그인하면 권한 세트를 선택하는 시작 페이지에서 단기 자격 증명을 얻을 수 있어요. 이 자격 증명은 정의된 기간을 가지며 자동으로 갱신되지 않아요. 이 자격 증명을 사용하려면 AWS 포털에 로그인한 뒤 AWS 계정을 선택하고 권한 세트를 선택한 다음 명령줄 또는 프로그래밍 방식 접근(Command line or programmatic access) 을 선택해 프로그래밍 방식 또는 CLI로 AWS 리소스에 접근할 수 있는 옵션을 확인하세요. 이 방법에 대한 자세한 내용은 _IAM Identity Center 사용자 가이드_의 임시 자격 증명 가져오기 및 갱신을 참고하세요. 이 자격 증명은 애플리케이션 개발 중 코드를 빠르게 테스트할 때 자주 사용돼요.
AWS 리소스 접근을 자동화할 때는 자동으로 갱신되는 IAM Identity Center 자격 증명을 사용하는 걸 권장해요. IAM Identity Center에서 사용자와 권한 세트를 구성했다면 aws configure sso 명령을 사용해 명령줄 마법사를 실행할 수 있는데, 이 마법사는 사용 가능한 자격 증명을 확인하고 프로필에 저장하는 데 도움을 줘요. 프로필 구성에 대한 자세한 내용은 _AWS Command Line Interface 사용자 가이드(버전 2)_의 aws configure sso 마법사로 프로필 구성을 참고하세요.
참고 — 많은 샘플 애플리케이션은 IAM 사용자나 루트 사용자와 연결된 장기 액세스 키를 사용해요. 장기 자격 증명은 학습 목적으로만 샌드박스 환경 안에서 사용해야 해요. 장기 액세스 키의 대안을 검토하고, 가능한 빨리 코드를 IAM Identity Center 자격 증명이나 IAM 역할 같은 대체 자격 증명으로 전환할 계획을 세우세요. 코드 전환 후에는 액세스 키를 삭제하세요.
CLI 구성에 대해 더 알아보려면 _AWS Command Line Interface 사용자 가이드(버전 2)_의 최신 AWS CLI 버전 설치·업데이트와 _AWS Command Line Interface 사용자 가이드_의 인증 및 접근 자격 증명을 참고하세요. SDK 구성은 _AWS SDKs and Tools 참조 가이드_의 IAM Identity Center 인증과 IAM Roles Anywhere를 참고하세요.
AWS SDK 사용하기 (Use the AWS SDKs)
AWS는 Java, Python, Ruby, .NET, iOS, Android 등 다양한 프로그래밍 언어와 플랫폼용 라이브러리와 샘플 코드로 구성된 SDK(소프트웨어 개발 키트)를 제공해요. SDK는 IAM과 AWS에 프로그래밍 방식으로 접근하는 편리한 방법을 제공하며, 요청의 암호학적 서명, 오류 관리, 요청 자동 재시도 같은 작업을 처리해 줘요. AWS SDK에 대한 자세한 내용(다운로드·설치 방법 포함)은 Tools for Amazon Web Services 페이지를 참고하세요.
IAM Query API 사용하기 (Use the IAM Query API)
IAM Query API를 사용하면 서비스에 HTTPS 요청을 직접 보내 IAM과 AWS에 프로그래밍 방식으로 접근할 수 있어요. Query API를 사용할 때는 자격 증명으로 요청을 디지털 서명하는 코드를 포함해야 해요. 자세한 내용은 HTTP 쿼리 요청으로 IAM API 호출하기와 IAM API 참조를 참고하세요.