Contents
IAM(Identity & Access Management)
![](https://www.wsiyeon.com/wp-content/uploads/2023/01/aws-iam-1-1024x414.webp)
IAM이란, 통합 계정 관리를 지칭하는 용어이다. 전 산업에 걸쳐 IT 시스템의 중요도와 사용자가 늘어남에 따라 전사적 리스크 및 IT 보안을 관리하고 컴플라이언스 이슈에 대한 요구사항을 해결하기 위해 기업 IT팀의 해결 과제도 지속적으로 증가하고 있다. 회사에서 사용자 ID와 계정 및 권한에 대한 관리가 느슨할 경우 이로 인해 기대 비용이 증가하고 리스크가 증가하여 사용자 환경은 악화될 수 있다.
IAM은 일반적인 환경과 SOA(Services-Oriented Architecture) 및 웹 서비스 환경에서도 IT 관리에 대한 통합적인 관리 방법을 제시하면서, ID 및 액세스 관리를 효과적으로 수행할 수 있도록 지원하는 솔루션이라 할 수 있다.
지속적으로 증가하는 내/외부 사용자의 사용자 계정을 생성, 수정 및 삭제하는 작업을 자동화하고, 메인프레임에서 웹 애플리케이션에 이르는 모든 범위의 전사적 시스템 상에서 감사 기능을 제공해 고객들의 비즈니스를 보다 안정적이고 효율적으로 지원한다.
계정 관리 시스템의 종류
계정 관리 시스템은 회사 내 시스템에 대한 계정 정보(아이디/비밀빈호) 관리 및 시스템에 대한 통합 권한 관리 솔루션으로 SSO(Single Sign-On), EAM(Extranet Access Management), IAM(Identity Access Management)으로 분류할 수 있다.
구분 | 내용 |
---|---|
SSO(Single Sign-On) | – 한 번의 인증으로 다양한 시스템에 추가적인 인증없이 접속 가능하도록 하는 보안 솔루션 – 다수의 인증 절차 없이 1개의 계정으로 다양한 시스템 및 서비스에 접속 가능 – 사용자 편의성과 관리 비용 절감 가능 |
EAM(Extranet Access Management) | – 가트너 그룹에서 정의한 용어 – SSO, 사용자 인증 관리 및 애플리케이션, 데이터에 대한 접근 관리 기능 제공 – 보안 정책 기반의 단일 메커니즘을 이용한 솔루션 |
IAM(Identity Access Management) | – 계정 관리 전반 및 프로비저닝 기능을 포함한 포괄적인 의미의 계정 관리 솔루션 – EAM과 SSO 기능보다 포괄적으로 확장된 개념 – 고객의 요구를 반영한 기능 조합 및 확장 가능 – 업무 프로세스를 정의하고 관리하는 인프라 – 업무 효율성, 생산성, 보안성의 극대화를 통해 확실한 이익 창출을 보장하는 비즈니스 툴 |
IAM 서비스
AWS IAM(Identity & Access Management)는 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있게 해주는 서비스로 AWS 사용자 및 그룹을 만들고 관리하며, 권한을 사용해 AWS 리소스에 대한 액세스를 허용 및 거부할 수 있다.
암호나 액세스 키를 공유하지 않고도 AWS 계정의 리소스를 관리하고 사용할 수 있는 권한을 다른 사람에게 부여할 수 있으며, 리소스에 따라 여러 사람에게 권한을 부여하거나 특정 EC2 및 애플리케이션에서 실행 가능하도록 안전한 방법을 제공한다. 또한 계정을 보호를 위한 멀티 팩터 인증(MFA)을 통해 사용자 계정 및 암호에 추가적인 인증을 통한 계정 보호 기능을 제공한다.
기업 네트워크나 인터넷 자격증명 공급자와의 연계를 통해 이미 다른 곳에 암호가 있는 사용자에 AWS 계정에 대한 임시 액세스 권한을 부여할 수 있다. 이러한 다양한 인증 처리 기능과 강력한 보안 기능을 통해 AWS 내부 리소스에 대한 보호와 체계적인 자원 관리 기능을 제공한다.
구분 | 내용 |
---|---|
서비스명 | IAM(Identity & Access Management) |
설명 | AWS 서비스 및 리소스에 대한 액세스를 안전하게 관리 |
주요 특징 | – AWS Identity & Access Management(IAM)를 통해 사용자의 AWS 서비스와 리소스에 대한 액세스를 안전하게 통제 가능 – AWS 사용자 및 그룹을 만들고 관리하며, AWS 리소스에 대한 액세스 허용 및 거부 가능 – AWS를 안전하게 사용하기 위한 인증/허가 시스템 -AWS 사용자 인증 및 접근 정책 관리 – AWS 관리를 위한 그룹, 사용자 및 Role(역할) 생성 가능 – 그룹별 제한된 권한의 부여, 사용자별 인증 및 권한 부여 기능 |
프리티어 (Free Tier) | IAM 사용에 대해 비용이 발생하지 않음 |
Amazon IAM에서 더 많은 내용을 확인할 수 있다.
IAM 주요 특징
![](https://www.wsiyeon.com/wp-content/uploads/2023/01/intro-diagram-_policies_800.png)
1. IAM 사용자와 그룹의 정의
IAM 사용자(User)
IAM 사용자란, AWS에서 생성하는 개체로 AWS와 서비스 및 리소스와 상호 작용하기 위해 그 개체를 사용하는 사람 또는 서비스를 말한다.
IAM 사용자는 필요에 따라 신규 생성/수정/삭제할 수 있으며, 하나의 AWS 계정에 최대 5,000개의 계정을 생성할 수 있고, 각 IAM 사용자는 오직 한 개의 AWS 계정만 연결된다.
신규 생성된 IAM 사용자는 아무런 권한도 할당되지 않으며, AWS 작업을 수행하거나 AWS 리소스에 액세스할 수 있는 권한이 없다.
이후 필요한 AWS 리소스에 접근하기 위해 사용자 계정에 직접 권한을 할당하거나, IAM 그룹, IAM 역할과 사용자 계정을 추가하여 권한 및 자격증명을 할당할 수 있다. 또한 개별 IAM 사용자에게 권한을 할당하여 이들이 AWS 리소스를 관리하고 다른 IAM 사용자까지 생성하고 관리하도록 구성할 수 있다.
IAM 그룹(Group)
IAM 그룹은 IAM 사용자들의 집합이다. 그룹을 활용하면 다수의 사용자들에 대한 권한을 지정함으로써 해당 사용자들에 대한 권한을 더 쉽게 관리할 수 있다.
예를 들어, Admins라는 그룹을 만들어 관리자에게 필요한 유형의 권한을 부여할 수 있다. 이 그룹에 할당된 권한이 이 그룹에 속하는 모든 사용자에게 자동으로 부여되며, 관리자 권한을 필요로 하는 새로운 사용자가 조직에 들어올 경우 해당 사용자를 이 그룹에 추가하여 적절한 권한을 할당할 수 있다. 또한 조직에서 직원의 업무가 바뀌면 해당 사용자의 권한을 편집하는 대신 이전 그룹에서 해당 사용자를 제거한 후 적절한 새 그룹에 추가하면 된다.
IAM 역할(Role)
AWS에서 자격증명을 처리하거나 하지 못하도록 권한 및 정책을 보유하고 있다는 측면에서 IAM 역할(Role)은 IAM의 사용자와 유사하다. 하지만 IAM의 역할은 한 사용자만 연결되지 않고 그 역할이 필요한 사용자 또는 그룹이면 누구든지 연결할 수 있도록 고안되었다.
예를 들어, AWS 계정 사용자에게 리소스에 대한 액세스 권한을 부여하거나, 하나의 AWS 계정 사용자에게 다른 계정 리소스에 대한 액세스 권한을 부여해야 할 경우나, 모바일 앱에서 AWS 리소스를 사용할 수 있도록 하되 앱에 AWS 키를 내장(교체하기 어렵고 사용자가 추출할 가능성이 있음)하길 원치 않는 경우도 있다. 이러한 경우 IAM 역할을 사용하여 AWS 리소스에 대한 액세스 권한을 위임할 수 있다.
2. IAM 서비스의 동작 방식
IAM은 AWS 내 리소스 및 자원 관리를 위한 사용자와 그룹의 생성 및 관리 기능을 통해 고유한 보안 자격증명을 생성할 수 있으며, AWS 서비스 API와 리소스에 대한 권한을 부여함으로써 AWS 서비스와 내부 리소스에 대해 강력한 보안을 통해 안전하게 리소스를 관리할 수 있다.
관리자 계정은 EC2에 대해 모든 작업이 가능한 권한을 보유하고 있기 때문에 그림과 같이 EC2에 대해 정지(Stop), 종료(Terminate)가 가능하다. 하지만 EC2 권한이 없는 개발자 계정의 경우 EC2 인스턴스에 대해 정지/종료가 불가능하다.
IAM은 사용자 계정을 통해 개별 AWS 리소스에 대해 세부적인 권한을 부여할 수 있다. IAM을 통해 제어할 수 있는 대상은 다음과 같다.
- AWS 리소스를 관리하기 위한 콘솔(Console)에 대한 접속 권한
- AWS 내부 리소스에 대한 접속 권한
- AWS 내 데이터에 대해 프로그래밍 방식(API)으로 접속하는데 필요한 권한
3. IAM 자격증명 관리 기능
IAM의 역할을 사용한 임시 자격증명 관리
IT 서비스 중 영구적인 자격증명이 필요하지 않고, 일시적으로 임시 자격증명이 필요한 경우 IAM 역할을 사용하면 AWS 리소스에 대한 액세스 권한이 없는 사용자나 서비스에 임시적인 액세스 권한을 부여할 수 있다.
구분 | 내용 |
---|---|
EC2 인스턴스의 애플리케이션에 권한 부여 | Amazon EC2 인스턴스의 애플리케이션에 AWS 리소스에 대한 액세스 권한을 부여하려면 개발자는 각 인스턴스에 자격증명을 배포해야 할 수 있다. 애플리케이션이 이러한 자격증명을 사용해 Amazon S3 버킷 또는 Amazon DynamoDB 데이터 등의 리소스에 액세스할 수 있다. |
교차 계정 액세스 | 개발 환경을 프로덕션 환경과 분리하는 등 리소스에 대한 액세스를 제어 또는 관리하려면 여러 AWS 계정이 필요할 수 있다. 하지만 간혹 한 계정의 사용자가 다른 계정의 리소스에 액세스해야 하는 경우도 있다. |
AWS 서비스에 권한 부여 | AWS 서비스가 사용자를 대신해 작업을 수행할 수 있으려면, 이러한 작업을 수행할 수 있는 권한을 해당 서비스에 부여해야 한다. AWS IAM 역할을 사용하면 AWS 서비스가 사용자를 대신해 다른 AWS 서비스를 호출하거나, 사용자 계정에서 AWS 리소스를 생성하고 관리할 수 있는 권한을 부여할 수 있다. |
IAM 자격증명 관리 기능
IAM은 다음과 같은 유형의 자격증명 관리 기능을 제공한다.
유형 | 내용 |
---|---|
암호 | AWS Management Console, AWS 토론 포럼 등 AWS 보안 페이지에 로그인하는 데 사용 |
액세스 키 | AWS API, AWS CLI, AWS SDK 또는 Windows PowerShell 용 AWS 도구에서 프로그래밍 방식으로 호출하는 데 사용 |
Amazon CloudFront 키 페어 | CloudFront가 서명된 URL을 생성하는 데 사용 |
SSH 퍼블릭키 | AWS CodeCommit 리포지토리를 인증하는 데 사용 |
X.509 인증서 | 부 AWS 서비스에 안전한 SOAP 프로토콜 요청을 수행하는 데 사용 |
타 인증 시스템과의 연동
![](https://www.wsiyeon.com/wp-content/uploads/2023/01/iam-intro-federation.diagram.png)
AWS IAM의 Federation 서비스를 사용하면 AWS 리소스를 중앙에서 관리할 수 있다. Federation과 함께 SSO(Single Sign-On)를 사용하여 회사 내에서 사용하는 LDAP나 Active Directory와 연동 가능하며, 이를 통해 AWS 계정에 액세스할 수 있다.
또한 Federation은 SAML(Security Assertion Markup Language 2.0)과 같은 개방형 표준 인증을 사용하여 ID 제공자(IdP)와 애플리케이션 간에 ID 및 암호를 교환한다.
구분 | 내용 |
---|---|
Federation을 사용하여 AWS 계정에 SSO(Single Sign-On) | – Federation 및 AWS IAM을 사용하여 AWS 계정에 SSO(Single Sign-On)를 사용하도록 설정 가능 – 사용자는 AWS 계정을 연합하여 회사 디렉터리의 자격증명을 사용하여 AWS 관리 콘솔 및 CLI(AWS 명령줄 인터페이스)에 로그인 |
웹 및 모바일 애플리케이션에 Federation 지원 추가 | – Amazon Cognito를 사용하여 AWS Cloud에서 실행되는 웹 및 모바일 애플리케이션에 Federation 지원 추가 – Amazon Cognito를 사용하면 모바일 및 웹 애플리케이션에 사용자 등록 및 로그인을 쉽게 추가 가능 – Amazon Cognito를 사용하면 Facebook, Twitter 및 Amazon과 같은 소셜 ID 제공자를 통해 사용자를 인증하거나 사용자 고유의 ID 시스템을 사용하여 사용자 인증 가능 |
SAML 없이 AWS 리소스에 대한 SSO(Single Sign-On) 액세스 활성화 | – AWS Directory Services for Microsoft Active Directory를 사용하여 AWS 클라우드에서 실행되는 Windows 애플리케이션에 SSO(Single Sign-On)를 사용하도록 설정 가능 – AWS Microsoft AD를 사용하여 사내 Microsoft Active Directory 도메인과 AWS 클라우드의 AWS Microsoft AD 도메인 사이에 보안 Windows 트러스트를 만들 수 있음 – 트러스트를 사용하여 SSO를 AWS 관리 콘솔 및 CLI(AWS 명령줄 인터페이스)로 설정하고 윈도우 서버용 Amazon EC2, SQL 서버용 Amazon RDS 및 Amazon Workspaces와 같은 윈도우 기반 워크로드 설정 가능 |