도슐랭스타
AWS - 권한관리 시스템 본문
권한 관리 시스템
개요
- 리눅스의 권한 관리

AWS 리소스 접근 통제
- AWS를 안전하게 사용하기 위해서는 리소스 접근을 통제해야 함
- AWS 리소스를 생성하고 관리하는 방법
- AWS 관리 콘솔, AWS CLI, AWS SDK

AWS 리소스 관리
- AWS 관리 콘솔
- AWS 리소스를 생성하고 관리하는 "웹" 기반의 인터페이스 제공
- 웹 기반 GUI 방식으로 직관적이며 편리하게 사용 가능
- ID / Password + MFA로 접속
- AWS 명령줄 인터페이스(CLI)
- AWS 서비스를 관리하는 통합 도구
- 운영체제(윈도우, macOS, 리눅스)에 설치하면 "쉘(shell)" 프로그램에서 AWS 서비스 사용 가능
- access key로 접속
- AWS 소프트웨어 개발 키트(SDK)
- 특정 소프트웨어를 개발할 때 도움을 주는 개발 도구 집합
- AWS 리소스를 프로그래밍적으로 사용하기 편리하도록 제공되는 라이브러리
- AWS SDK는 파이썬, GO, 루비, 자바 등 주요 프로그래밍 언어로 라이브러리 제공
- ex) AWS SDK를 이용하면 인증을 위한 프로그램을 쉽게 구현 가능
- access key로 접속 가능한 API가 적용된 애플리케이션 코드로 접속
Access Key 생성
- 사용자가 직접 관리
- 절대 공유 금지!!
- Access key ID ≒ username
- Secret Access key ≒ pw
- 분실 시 폐기 후 재발급
AWS CloudShell
- 명령줄 인터페이스 제공(CLI)

AWS API
- API: 두 애플리케이션이 상호 작용할 수 있게 도와주는 매개체
- 규칙
- 외부에 공개된 API 서버가 아닐 때는 인증된 사용자만 접속
- 인증(authentication): 사용자가 적법한 서명 값을 가졌는지 확인
- 인가(authorization): 인증이 확인된 사용자가 API 권한을 수행할 수 있는지 확인
- 요청할 때 규칙을 정의한 명세서 필요
- 명세서의 규칙에 따라 요청한 데이터의 결과값을 사용자에게 제공
- 외부에 공개된 API 서버가 아닐 때는 인증된 사용자만 접속
- AWS 클라우드에서 인프라, 보안, 데이터베이스, 분석, 배포 및 모니터링 등 모든 IT 리소스는 AWS API 호출로 제어 가능
- AWS API: 사용자 혹은 애플리케이션이 AWS 서비스를 사용하기 위해 도와주는 매개체
- 예) AWS CLI를 통해 S3 버킷을 생성하기 위해서는 AWS API를 호출함 → 인증, 인가 후 S3 버킷 생성
AWS API 동작
- AWS API 요청

- AWS API 인증, 인가, 로깅

- AWS CloudTrail
- AWS 계정의 거버넌스, 규정 준수, 운영 감사, 위험 감사를 지원하는 서비스
- 계정 활동과 관련된 작업을 기록하고 지속적으로 모니터링하여 보관 가능
- 거버넌스: 비즈니스 목표를 달성하기 위한 정책, 프레임워크
AWS IAM의 개요
- AWS Identity and Access Management
- AWS 서비스와 리소스에 안전하게 접근할 수 있도록 관리하는 기능 제공
- AWS 사용자 및 그룹을 만들고 관리하며, AWS 리소스 접근에 대한 허용 및 거부 수행
- 신분 인증
- 권한 부여
- IAM은 글로벌 서비스
- 리전 단위로 설정할 수 없고, 모든 리전에서 동일하게 동작
- 최소한의 권한 부여!

신분 인증
- AWS 리소스를 이용할 권한을 부여
- 사용자의 신분 확인
- AWS 계정 루트 사용자
- 맨 처음 생성된 AWS 계정, 모든 권한을 가짐
- 관리 목적으로만 사용할 것을 권고(일반 용도로는 사용하지 않음)
- 루트 사용자를 사용하지 않고, admin 권한의 사용자를 생성 권고
- 탈취되면 복구 어렵고 피해가 큼 – 계정 삭제 필요
- MFA(Multi-factor authentication) 사용 권장
- 액세스 키 생성 금지: 액세스 키로 CLI, API, SDK 등 프로그래밍 작업에 활용되기 때문
- 절대 공유 금지!!
- AWS 계정 루트 사용자
- IAM 사용자(User)
- 실제 AWS를 사용하는 사람 또는 애플리케이션
- IAM 그룹(Group)
- 사용자의 집합
- 그룹에 속한 사용자는 그룹에 부여된 권한을 행사
User Authenticated
- 인증 확인
- ID PW
- TOM: abc123
- JANE: aabbcc
- ID PW
신분 인증 - IAM 사용자 & 그룹
- 사용자는 그룹에 속해 있지 않거나 여러 그룹에 속할 수 있음
- 그룹은 사용자만을 포함시키며, 다른 그룹은 포함시킬 수 없음

신분 인증 – IAM 역할(Role)
- 사용자 또는 서비스에 권한을 부여하는 또 다른 방법
- AWS 리소스에서 사용하는 자격증명
- 사람이 사용하도록 만들어진 것이 아니라 AWS 서비스에 의해 사용되도록 함
- 특정 개체(IAM User, AWS Service, root account 등)에게 접근 권한 부여
- 대표적 IAM 역할
- EC2 instance Roles
- Lambda Function Roles
- Roles for CloudFormation
- 임시적으로 자격증명
- 몇 분 ~ 몇 시간으로 시간을 지정할 수 있음
- 만료된 후에는 사용 불가
- 보안적으로 우수함

신분 인증 – IAM 역할(Role) 사례
- EC2 상의 애플리케이션이 IAM 역할을 이용해 S3 버킷에 접근

- 외부 사용자가 IAM 역할을 이용하여 S3 버킷에 접근

권한 부여
- 최소 권한 부여(Least Privileges)라는 권한 부여 가이드라인 권장
- 필요한 만큼 권한을 부여하고, 작업을 마치면 권한 회수(제거)
- IAM 정책 문서를 통해 권한 부여
- JSON 형식의 문서
- 접근 권한의 규칙을 정리
- IAM 정책 문서에 명시한 것만 수행 가능


권한 부여 사례

권한 부여 – 정책 문서

- Sid: 설명문의 ID
- Effect: 허가(Allow) / 거부(Deny)
- Principal: 정책을 적용 받는 사용자(계정)
- Action: 허가 거부에 해당하는 API
- Resource: 버킷(bucket) 혹은 오브젝트(Object)
IAM 정책의 상속
- IAM 그룹에 정책을 할당하면, 해당 그룹에 소속된 사용자가 IAM 권한을 가짐
IAM – 패스워드 정책
- 보안을 위해 강한 암호(Strong password) 설정 필요
- IAM 사용자를 위한 AWS의 패스워드 정책 설정
- 최소 비밀번호 길이 설정
- 특정 문자 유형 요구
- 대문자 포함
- 소문자 포함
- 숫자 포함
- 특수문자 포함
- IAM 사용자가 자신의 비밀번호 변경 허용 여부
- 일정 시간 후에 사용자에게 비밀번호 변경을 요구(비밀번호 만료 설정)
- 비밀번호 변경 시 재사용 금지 여부
MFA
- 사용자는 계정을 통해 AWS 리소스를 구성하거나 삭제함
- 루트 사용자 및 IAM 사용자를 보호하는 목적으로 사용
- MFA = 패스워드 + 보안 장치(2차 인증)
- 패스워드가 유출되더라도 물리적 장치가 추가적으로 필요하므로 계정을 보호할 수 있음

IAM 모범 사례
- 루트 사용자의 사용을 제한할 것
- 사용자를 그룹에 할당하고, 그룹에 권한을 부여할 것
- 보안을 위해 암호는 어렵게 설정하고, MFA로 2차 인증 설정할 것
- AWS 서비스의 권한을 부여할 때 역할을 생성하고 사용
- CLI/SDK를 위해 access key 생성
- IAM 자격증명 보고서(Credentials Report) 또는 IAM 액세스 관리자(Access Advisor) 기능을 사용할 수 있음
- 사용자 계정 및 Access Key를 공유하지 말 것!
IAM 공동 책임 모델
- AWS
- 인프라스트럭처(글로벌 네트워크 보안)
- 구성 및 취약성 분석
- 책임사항 준수
- 사용자
- 사용자, 그룹, 역할, 정책을 관리 & 모니터링
- 모든 계정에 대해 MFA 활성화
- 키를 자주 교체
- IAM 도구를 활용해 적합한 권한 적용했는지 확인
- 접근 패턴을 분석하고 계정 권한 검토
Amazon Cognito
- 사용자 인증 및 권한 부여를 관리하기 위해 자주 사용되는 핵심 AWS 서비스
- AWS 내·외부 사용자의 회원가입, 로그인을 지원
- ex) 모바일 애플리케이션 개발 및 배포 시, Cognito로 간단하게 회원가입 및 로그인 기능 구현
- Cognito 사용자 풀(User Pool)
- 애플리케이션 유저를 위한 회원 가입, 로그인 등 기능 제공
- Cognito 자격 증명 풀(Identity Pools)
- 클라이언트에서 AWS 리소스에 직접 접근하기 위한 AWS ID를 제공
Amazon Cognito 절차
- 외주 사용자가 S3와 연관된 웹 애플리케이션을 이용할 때, Cognito를 활용해 신분 인증하는 절차
- 연동 자격 증명으로 페이스북, 구글, 애플 등의 외부 자격 증명을 사용할 수 있음

AWS Organization
- 글로벌 서비스
- 다수의 AWS 계정을 동시에 관리
- 관리 계정(management account)과 멤버 계정(member accounts)으로 구분
- 멤버 계정은 하나의 조직에만 소속됨
- 모든 계정의 비용을 통합 결제 가능
- 관리 계정에서 지불 방법 설정함으로써 조직 전체의 비용을 지불할 수 있음
- 계정별로 사용되는 AWS 서비스가 각각 비용 청구되지 않고, 통합되어 비용 청구됨(비용 이득)
- 계정 생성을 위한 API 제공
AWS Organization 특징
- 다양한 부서를 위한 멀티 어카운트 환경을 구현
- 신속한 조직 확장 가능
- 결제 업무 간소화
- 부서별 계정 관리하는 것보다 체계적이며 통합적인 보안 제어
- OU(Organization Unit)라는 조직 단위 사용
- Organization 계정을 세분화한 논리 계정
- SCP(Service Control Policy)는 AWS Organization의 서비스 제어 정책, 서비스 내 작업 규칙을 정의
- 해당 정책은 상속됨
AWS Organization 사례
- Root Organizational Unit(OU)
- Management Account
- OU(Dev)
- OU(HR)
- OU(Finance)
계정 및 정책 예시
- Management Account
- 모두 가능
- SCP 적용되지 않음
- 관리자 권한
- Account A
- Reshift 거부하고 모두 가능
(OU의 정책에 명시적으로 거부된 것은 액세스 거부됨)
- Reshift 거부하고 모두 가능
- Account B
- Reshift & Lambda 거부하고 모두 가능
- Account C
- Reshift 거부하고 모두 가능

SCP - Blocklist(차단목록) & Allowlist(허용 목록) 전략
- 모든 것을 허용한 후 필요에 따라 차단 (Dynamodb 차단)(img-왼쪽)
- 모든 것을 차단한 후 필요한 것만 허용 (EC2, CloudWatch 만 허용)(img-오른쪽)

반응형
'AWS' 카테고리의 다른 글
AWS - 클라우드 스토리지 (0) | 2024.11.04 |
---|---|
AWS - 클라우드 기술의 이해 (6) | 2024.10.28 |
AWS - 클라우드 서비스, 기술, 기타 용어 (4) | 2024.10.21 |
AWS - 클라우드 기초 (1) | 2024.10.14 |
Comments