BE전문가 프로젝트

7. IAM 본문

AWS이론 자습

7. IAM

원호보고서 2022. 4. 10. 11:14
핵심
사용사례에 따라 어떤 Management Console과 AWS 명령줄 인터페이스(AWS CLI)를 사용해야함
개발, 테스트, 프로덕션 등 환경에 따라 액세스 요구사항이 다름
On-Premise 인증은 SSO자격 증명 연동을 통해 관리됨
보안 운영 팀은 AWS 클라우드에서 누가 데이터를 사용했는지 확인해야함
외부 감시자의 경우 로그인을 제외한 나머지는 액세스할 수 없도록 해야함

계정 사용자

AWS 계정 루트 사용자

- 모든 AWS 서비스 및 리소스에 대한 전체 액세스 권한(결제 정보, 개인 데이터 등)을 갖음

 

안전하게 관리하기

전체 액세스 권한을 가지고 있는 루트 관리자가 아닌 IAM 관리 사용자를 생성하여 권한을 제어한다

- AWS와 일반적인 상호작용에는 IAM 사용자를 사용하며 필요할 경우 권한을 추가한다

- 권한을 부여할 경우 개발, 테스트, 웹 등 각각 필요한 권한만 부여하도록 한다

 

AWS 자격 증명 관리

- 사용자에게 개별 보안 자격 증명(액세스 키, 암호, 멀티 팩터 인증(MFA))을 할당하거나, AWS서비스 및 리소스에 대한 임시 보안 자격 증명을 요청할 수 있음

- 연동 자격 증명 관리

- 다른 AWS 서비스와 통합

- 애프리케이션의 안전한 액세스

 

IAM 보안 주체
IAM 사용자
연동 사용자
IAM역할
자격증명 공급자(Idp)

IAM 사용자

별도의 AWS 계정이 아닌 계정 내 사용자 즉 보안 주체이다

- 개별 액세스 키를 생성할 수 있는데 이는 계정 내 리소스에 대한 작업 을 프로그래밍 방식으로 요청할 수 있음을 의미

- CLI 액세스 권한이 없어도 콘솔에 액세스할 수 있으며 콘솔 액세스 권한이 없어도 CLI에 액세스할 수 있음

- 각 사용자는 자체 자격 증명을 갖으며 사용자가 자신을 고유하게 식별하는데 사용됨(보안에 사용)

- 부여된 권한을 기준으로 특정 작업을 수행할 수 있음

- IAM 사용자를 생성하지 않고 IAM IdP를 사용할 수 있는데 AWS 외부(Face book 등)의 사용자 자격 증명을 관리하고 AWS 리소스를 사용할 수 있는 권한을 제공할 수 있음

 

IAM 사용자 생성

기본 권한적으로 주어지는 권한은 없음

- Management Console 및 CLI에 대한 액세스는 명시적으로 부여해야하는 것

 

권한 부여

- 하나 이상의 권한에 대한 형식 선언

- 요청 시에만 평가됨

- IAM 정책은 AWS에 대한 액세스만 제어하며, 하이퍼바이저 계층 이상으로는 가시성이 없음

 

IAM 권한

- 권한은 세부적으로 조정해야하며 JSON형식으로 저장됨

- 권한 결정 순서

   명시적 거부 정책 확인 -> 명시적 허용 정책 확인 (둘 중 하나라도 없다면 기본설정인 암시적 거부로 돌아감)

 

자격 증명 기반 정책

보안주체(IAM 사용자, 역할 및 그룹)에 연결할 수 있는 권한 정책이며 자격 증명이 수행할 수 있는 작업, 대상 리소스 및 관련 조건을 제어

자격 증명 기반 정책
연결 대상 사용자
그룹
역할
정책 유형 AWS 관리형
- AWS에서 생성과 관리하는 정책, 정책 첫 사용자의 경우 권장
고객 관리형
- 고객이 AWS 계정에서 생성하고 관리하는 정책이며 정밀하게 제어 가능
인라인
- 사용자가 직접 생성하고 관리
제어 수행 작업
리소스 대상
필요한 조건

 

리소스 기반 정책

- AWS 리소스(S3, Glacier 등)에 연결되는 JSON 정책 문서

- 제어

ㆍ특정 보안 주체가 허용한 작업 및 관련 조건 제어

ㆍ항상 인라인 정책

ㆍAWS관리형 리소스 기반 정책이 없음

 

권한이 부여된 자격증명

- IAM 사용자는 권한이 연결된 자격 증명(보안 주체)이며 AWS에 액세스 할 수 있는 고유한 권한 세트를 가질 수 있음

- EC2인스턴스 및 S3와 같이 권한이 필요한 경우에도 코드에 자격 증명을 포함할 필요가 없음

 

권한 적용 예(JSON)

{
"Version":"2021-10-17",
"Statement":{
"Effect":"Allow",
"Action":"s3:ListBucket"
"Resource":"arn:aws:s3:::example-bucket"
}
}

IAM 사용자 그룹

기존 그룹에 새로운 사용자 추가 가능

- 그룹에 S3 정책, EC2 정책 등 권한 부여

 

사용자 연동

IAM 역할

역할을 사용하게 될 시 사용자 및 해당 서비스의 리소스에 액세스하기워한 권한 집합 정의 가능

- 권한은 IAM사용자 또는 그룹에 연결 되지 않고 역할에 연결되며 역할은 사용자 또는 서비스에게 위임됨

- 역할 사용 시 개별 사용자에게 여러 계정 생성할 필요 없음

- 사용자가 역할 수임 시 기존 권한은 무시되며 AWS가 사용자 및 어플리케이션이 AWS에 프로그래밍 방식 요청을 전송하는 데 사용하는 임시 보안 자격 증명을 반환함. 따라서 엔터티별로 장기적인 자격증명을 공유할 필요 없음

역할 생성 시 정책 지정
신뢰 누가 역할을 맡았는지 지정
액세스(권한) 보안 주체가 사용하도록 허용된 리소스 및 작업

- 기업과 같이 자체 자격 증명 시스템이 이미 있는 경우 유용함

- 모바일 앱 또는 웹 애플리케이션에도 사용 가능

 

IAM 역할 사용 사례

IAM 역할 분석
역할 전달 - 자신의 계정에 전달
- 다른 AWS 계정에 전달(교차 계정 액세스)

쉽게 역할을 전환할 수 있음
ex) IAM 사용자가 권한을 이용하여 액세스한 후 끝나면 해당 권한을 포기할 수 있음
실수로 민감한 리소스에 액세스를 하거나 변경하는 실수를 방지할 수 있음
타사에게 액세스 제공 타사 AWS 리소스에 액세스 시 역할을 사용하여 해당 리소스에 대한 액세스를 위임 가능
ex) IAM 역할을 사용하여 AWS 보안 자격 증명을 고유하지 않아도 타사 리소스에 대한 액세스 권한 부여 가능
AWS 리소스에 AWS 서비스에 대한 액세스를 제공함
외부 인증 사용자 액세스 제공  

 

역할 위임

콘솔, CLI, STS, AssumeRole API를 사용하여 위임 가능

역할 위임 방법
AWS
Management Console
 
AWS 명령줄 인터페이스
(AWS CLI)
 
AssumeRole
API호출
- 액세스 키 ID, 보안 액세스 키 및 보안 토큰으로 구성된 임시 보안 자격 증명 세트를 반환
- 일반적으로 교차 계정 액세스 및 자격 증명 연동에 사용
AWS Security Token Service
(AWS STS)
- IAM사용자 및 자격 증명 연동을 통해 인증된 사용자에게 제한적 임시 권한 제공 서비스
- AWS 계정의 AWS 호출을 기록 및 S3 버킷에 로그 파일을 전송하는 * AWS CloudTrail 지원

* AWS CloudTrail

IAM AWS STS API에 대한 모든 인증된 API 요청을 길록하는 거이며 인증되지 않은 요청을 기록하고 자격 증명 공급자가 제공하는 정보를 기록

 

STS 자격 증명 브로커 개요

STS를 사용하여 타사 인증 서비스를 사용하는 애플리케이션에 대한 임시자격 증명을 생성하는 4단계

STS 자격 증명 브로커 프로세스 설명

- 자격 증명 브로커 애플리케이션이 STS API에 액세스하여 임시 보안 자격 증명을 생성 권한이 있음

- 자격 증명 브로커 애플리케이션은 사용자가 기존 인증 시스템 내에서 인증되는지 확인 가능

- 사용자에게 액세스할 수 있는 임시 URL이 제공됨

 

다른 AWS 계정의
IAM 사용자 그룹
IAM 역할을 이용하여 교차 계정 액세스 설정 가능
현재 계정 IAM 사용자 사용자가 자주 사용하지 않는 권한의 경우 분리하여 관리 가능
타사 타사에서 조직의 AWS 리소스에 액세스해야할 시 역할을 사용하여 API 액세스 위임 가능

 

'AWS이론 자습' 카테고리의 다른 글

6. AWS 네트워킹(2)  (0) 2022.03.17
5. AWS 기반 네트워킹  (0) 2022.02.21
4. DB 계층  (0) 2022.02.18
3. 컴퓨터 계층  (0) 2022.02.08
2. 간단한 아키텍처  (0) 2022.01.31
Comments