Amazon Identity and Access Management

khm_studylog·2023년 1월 25일
0

cloud

목록 보기
14/14

IAM (Identity&Access Management)

IAM은 일반적인 환경과 SOA(Services-Oriented Architecture) 및 웹 서비스 환경에서도 IT 관리에 대한 통합적인 관리 방법을 제시하면서, ID 및 액세스 관리를 효과적으로 수행할 수 있도록 지원하는 솔루션이라 할 수 있습니다.

지속적으로 증가하는 내/외부 사용자의 사용자 계정을 생성, 수정 및 삭제하는 작업을 자동화하고, 메인프레임에서 웹 애플리케이션에 이르는 모든 범위의 전사적 시스템 상에서 감사 기능을 제공해 고객들의 비즈니스를 보다 안정적이고 효율적으로 지원합니다.


계정 관리 시스템의 종류

계정 관리 시스템은 회사 내 시스템에 대한 계정 정보(아이디/비밀번호) 관리 및 시스템에 대한 통합 권한 관리 솔루션으로 SSO(Single Sign-On), EAM(Extranet Access Management), IAM(Identity Access Management)으로 분류할 수 있습니다.

SSO

  • 한 번의 인증으로 다양한 시스템에 추가적인 인증없이 접속 가능하도록 하는 보안 솔루션

  • 다수의 인증 절차 없이 1개의 계정으로 다양한 시스템 및 서비스에 접속 가능

  • 사용자 편의성과 관리 비용 절감 가능

EAM

  • SSO, 사용자 인증 관리 및 애플리케이션, 데이터에 대한 접근 관리 기능 제공

  • 보안 정책 기반의 단일 메커니즘을 이용한 솔루션

IAM

  • 계정 관리 전반 및 프로비저닝 기능 을 포함한 포괄적인 의미의 계정 관리 솔루션

  • EAM과 SSO 기능보다 포괄적으로 확장된 개념

  • 고객의 요구를 반영한 기능 조합 및 확장 가능

  • 업무 프로세스를 정의하고 관리하는 인프라

  • 업무 효율성, 생산성, 보안성의 극대화를 통해 확실한 이익 창출을 보장하는 비즈니스 툴

(사용자 프로비저닝이란 액세스 권한과 인증 권한을 모니터링하는 Identity 관리 유형을 뜻합니다.)


IAM 서비스

AWS IAM는 Amazon Web Services 리소스에 대한 액세스를 안전하게 관리할 수 있게 해주는 서비스AWS 사용자 및 그룹을 만들고 관리하며, 권한을 사용해 AWS 리소스에 대한 액세스를 허용 및 거부할 수 있습니다.

암호나 액세스 키를 공유하지 않고도 AWS 계정의 리소스를 관리하고 사용할 수 있는 권한을 다른 사람에게 부여할 수 있으며, 리소스에 따라 여러 사람에게 권한을 부여하거나 특정 EC2 및 애플리케이션에서 실행 가능하도록 안전한 방법을 제공합니다.

계정 보호를 위한 멀티 팩터 인증(MFA)을 통해 사용자 계정 및 암호에 추가적인 인증을 통한 계정 보호 기능을 제공합니다.

기업 네트워크나 인터넷 자격증명 공급자와의 연계를 통해 이미 다른 곳에 암호가 있는 사용자에게 AWS 계정에 대한 임시 액세스 권한을 부여할 수 있습니다.
이러한 다양한 인증 처리 기능강력한 보안 기능을 통해 AWS 내부 리소스에 대한 보호체계적인 자원 관리 기능을 제공합니다.

  • AWS IAM를 통해 사용자의 AWS 서비스와 리소스에 대한 액세스를 안전하게 통제 가능
  • AWS 사용자 및 그룹을 만들고 관리하며, AWS 리소스에 대한 액세스 허용 및 거부 가능
  • AWS를 안전하게 사용하기 위한 인증/허가 시스템
  • AWS 사용자 인증 및 접근 정책 관리
  • AWS 관리를 위한 그룹, 사용자 및 Role(역할) todtjd rksmd
  • 그룹별 제한된 권한의 부여, 사용자별 인증 및 권한 부여 가능

IAM의 주요 특징

IAM User

IAM 사용자란, AWS에서 생성하는 개체로 AWS와 서비스 및 리소스와 상호 작용하기 위해 그 개체를 사용하는 사람 또는 서비스를 말합니다.

IAM 사용자는 필요에 따라 신규 생성/수정/삭제할 수 있으며, 하나의 AWS 계정에 최대 5000개의 계정을 생성할 수 있고, 각 IAM 사용자는 오직 한 개의 AWS 계정만 연결됩니다.

신규 생성된 IAM 사용자는 아무런 권한도 할당되지 않으며, AWS 작업을 수행하거나 AWS 리소스에 액세스할 수 있는 권한이 없습니다.
이후 필요한 AWS 리소스에 접근하기 위해 사용자 게정에 직접 권한을 할당하거나, IAM Group, IAM Role과 사용자 계정을 추가하여 권한 및 자격증명을 할당할 수 있습니다.

개별 IAM 사용자에게 권한을 할당하여 이들이 AWS 리소스를 관리하고 다른 IAM 사용자까지 생성하고 관리하도록 구성할 수 있습니다.

IAM Group

IAM 그룹은 IAM 사용자들의 집합입니다.
그룹을 활용하면 다수의 사용자들에 대한 권한을 지정함으로써 해당 사용자들에 대한 권한을 더 쉽게 관리할 수 있습니다.

예를 들어, Admins라는 그룹을 만들어 관리자에게 필요한 유형의 권한을 부여할 수 있습니다. 이 그룹에 할당된 권한이 이 그룹에 속하는 모든 사용자에게 자동으로 부여되며, 관리자 권한을 필요로 한느 새로운 사용자가 조직에 들어올 경우 해당 사용자를 이 그룹에 추가하여 적절한 권한을 할당할 수 있습니다.

조직에서 직원의 업무가 바뀌면 해당 사용자의 권한을 편집하는 대신 이전 그룹에서 해당 사용자를 제거한 후 적절한 새 그룹에 추가하면 됩니다.

IAM Role

IAM의 역할은 한 사용자만 연결되지 않고 그 역할이 필요한 사용자 또는 그룹이면 누구든지 연결할 수 있습니다.

예를 들어, AWS 계정 사용자에게 리소스에 대한 액세스 권한을 부여하거나, 하나의 AWS 계정 사용자에게 다른 계정 리소스에 대한 액세스 권한을 부여해야 할 경우나, 모바일 앱에서 AWS 리소스를 사용할 수 있도록 하되 앱에 AWS 키를 내장(교체하기 어렵고 사용자가 추출할 가능성이 있음)하길 원치 않는 경우도 있습니다.
이러한 경우 IAM 역할을 사용하여 AWS 리소스에 대한 액세스 권한을 위임할 수 있습니다.

IAM 서비스의 동작 방식

IAM은 AWS 내 리소스 및 자원 관리를 위한 사용자와 그룹의 생성 및 관리 기능을 통해 고유한 보안 자격증명을 생성할 수 있으며, AWS 서비스 API와 리소스에 대한 권한을 부여함으로써 AWS 서비스와 내부 리소스에 대해 강력한 보안을 통해 안전하게 리소스를 관리할 수 있습니다.

관리자 계정은 EC2에 대해 모든 작업이 가능한 권한을 보유하고 있기 때문에 EC2에 대해 정지(Stop), 종료(Terminate)가 가능합니다.
하지만 EC2 권한이 없는 개발자 계정의 경우 EC2 인스턴스에 대해 정지/종료가 불가능합니다.

IAM을 통해 제어할 수 있는 대상

  • AWS 리소스를 관리하기 위한 콘솔(Console)에 대한 접속 권한
  • AWS 내부 리소스에 대한 접속 권한
  • AWS 내 데이터에 대해 프로그래밍 방식(API)으로 접속하는데 필요한 권한

IAM의 역할을 사용한 임시 자격증명 관리

IT 서비스 중 영구적인 자격증명이 필요하지 않고, 일시적으로 임시 자격증명이 필요한 경우 IAM 역할을 사용하면 AWS 리소스에 대한 액세스 권한이 없는 사용자나 서비스에 임시적인 액세스 권한을 부여할 수 있습니다.

IAM 자격증명 관리 기능

  • 암호
    : AWS Management Console, AWS 토론 포럼 등 AWS 보안 페이지에 로그인하는 데 사용
  • 액세스 키
    : AWS API, AWS CLI, AWS SDK 또는 Windwos PowerShell용 AWS 도구에서 프로그래밍 방식으로 호출하는데 사용
  • Amazon CloudFront 키 페어
    : CloduFront가 서명된 URL을 생성하는데 사용
  • SSH 퍼블릭키
    : AWS CodeCommit repository를 인증하는데 사용
  • X.509 인증서
    : 부 AWS 서비스에 안전한 SOAP 프로토콜 요청을 수행하는데 사용

타 인증 시스템과의 연동

AWS IAM의 Federation 서비스를 사용하면 AWS 리소스를 중앙에서 관리할 수 있습니다.

Federation과 함께 SSO를 사용하여 회사 내에서 사용하는 LDAP(Lightweight Directory Access Protocol, 다양한 컴퓨터 시스템과 애플리케이션의 정보에 대한 접근 권한을 제공하는 인터넷 표준)나 Active Directory와 연동 가능하며, 이를 통해 AWS 계정에 액세스할 수 있습니다.


실습 1. IAM User 및 Group 생성

IAM User와 Group을 생성하고, 생성된 계정에 대해 Role 정책을 할당하는 방법에 대해 배웁니다.

별도의 계정을 생성해서 접속 정보를 할당하여, 다른 사용자에게 전달하고, 전달된 계정으로 로그인하는 방법과 부여된 권한에 대해 확인과 교차 계정 설정 방법에 대해 실습합니다.

[서비스]-[보안 자격 증명 및 규정준수]-[IAM]-[사용자 그룹]-[그룹 생성]

그룹 이름 지정에서 사용자 그룹 이름을 'EC2ReadOnly'로 입력

권한 정책 연결에서 'AmazonEC2ReadOnlyAccess'를 선택한다.

IAM 그룹이 정상적으로 생성됨을 확인

사용자 생성을 위해 [사용자]-[사용자 추가] 버튼을 클릭

사용자 이름을 'AWS_User'로 입력 후 [콘솔 액세스 활성화] 항목을 체크하여 사용자가 로그인할 수 있도록 설정한다.

[그룹에 사용자 추가] 항목에서 이전에 생성한 'EC2ReadOnly' 그룹 선택 후 사용자 계정을 생성

생성된 사용자를 클릭하여 [보안 자격 증명] 탭의 콘솔 로그인 링크 정보를 확인

현재 로그인 중인 계정을 로그아웃한 후 신규 생성된 IAM 계정의 콘솔 로그인 접속 URL을 웹브라우저에 입력 후 로그인

[서비스]-[컴퓨팅]-[EC2]에서 기존에 생성된 EC2를 선택 후 종료를 시도해 보면, 해당 IAM 계정이 EC2ReadOnlyAccess 권한만을 가지고 있으므로 인스턴스 삭제 오류가 표시됨을 알 수 있다. 해당 EC2에 대해 종료 권한을 추가하기 위해서 root 계정으로 로그인 후 IAM 그룹에 EC2FullAccess 권한을 추가해야 한다.

기존에 EC2를 다 삭제했기 때문에 내역이 없어서 인스턴스 삭제 오류를 확인할 수 없었다...


실습 2. IAM Role 생성 및 IAM Role 정책을 통한 EC2 권한 할당

EC2에 IAM Role을 활용하여 S3에 접근 권한을 부여하고 이를 통해 S3에 대한 접근 권한을 가지게 되는 내용을 실습합니다.

[서비스]-[보안 자격증명 및 규정준수]-[IAM]-[역할]-[역할 만들기]

신뢰할 수 있는 유형의 개체 선택 항목에서 [AWS 서비스] 선택 후, 사용 사례 선택 항목에서 [EC2]를 선택

권한 추가의 정책 필터에서 'AmazonRDSFullAccess'를 선택

이름 지정, 검토 및 생성에서 역할 이름을 'IAMRole-DEV'으로 입력해준 후 역할을 생성한다.

[역할]에서 정책이 정상적으로 생성된 것을 확인

역할 할당 및 테스트를 위해 [서비스]-[컴퓨팅]-[EC2]-[인스턴스]-[인스턴스 시작]의 AMI 선택 페이지에서 'Ubuntu Server 22.04 LTS (HVM), SSD Volume Type'를 선택

인스턴스 네트워크 설정 구성에서 다음과 같이 설정한다. 인스턴스가 생성되면 퍼블릭IP를 확인하여 터미널로 서버 접속한다.

네트워크 : tutorial-vpc
서브넷 : Tutorial public
퍼블릭 IP 자동 할당 : 활성화
IAM 역할 : IAMRole-DEV [이전에 생성한 IAM Role]

Ubuntu에 awscli 설치하기

sudo apt-get update
sudo apt-get install awscli
aws --verison

접속 후, S3의 버킷에 대해 접속을 시도하면 접근 권한이 없기 때문에 서비스가 거부됨을 알 수 있다.

이를 해결하기 위해서 IAM Role에 S3 권한을 추가하기 위해 [IAM]-[역할]-[IAMRole-DEV]-[권한 정책] 필터에서 S3 검색 후 'AmazonS3FullAccess' 선택 후 [정책 연결] 버튼을 클릭하여 상세 페이지에서 정책이 추가됨을 확인

IAM Role에 권한 추가 후 다시 S3의 버킷에 대해 접속을 시도하면 성공적으로 접근이 가능함을 확인할 수 있다.


출처 : 아마존 웹 서비스 AWS Discovery Book 책
https://m.blog.naver.com/6yujin6/221716914758
https://m.blog.naver.com/6yujin6/221716925602

0개의 댓글