AWS 설명서: IAM
AWS 설명서: IAM으로 작업하는 AWS 서비스
AWS IAM(Identity and Access Management): AWS 리소스에 액세스하는 권한 관리 서비스
- 로그인으로 인증되고 권한이 부여된 대상을 제어
- 권한: 자격 증명
- 추가 비용 발생하지 않는 서비스
- IAM 사용자 또는 AWS STS(Security Token Service) 임시 보안 자격 증명으로 다른 AWS 서비스에 액세스 하는 경우에는 요금 부과
- IAM 사용자를 처음 생성할 때에만 '루트 사용자(AWS 계정을 처음 생성할 당시 모든 액세스 권한이 부여된 ID)'를 사용해야 함
- 암호나 Access Key를 공유하지 않고 다른 사용자에게 권한 부여 가능
- 여러 사람에게 서로 다른 다양한 권한 부여 가능
- EC2 인스턴스에서 실행되는 어플리케이션에 다른 AWS 리소스에 접근할 수 있는 권한 제공
- 여기서 말하는 리소스 e.g.) S3, DynamoDB 테이블 등
- 계정과 개별 사용자에게 2팩터 인증 추가 가능(MFA; Multi Factor Accrediation)
- 다른 곳에 암호를 갖고 있는 사용자에게 AWS 계정에 대한 임시 접근 권한 부여 가능(자격 증명 연동)
- Payment Card Industry(PCI) Data Security Standard(DSS) 준수 검증
- 전자 상거래 웹사이트 운영자, 서비스 공급자에 대한 신용 카드 데이터 처리, 저장, 전송 지원
- 전 세계 Amazon 데이터 센터 내 여러 서버로 데이터 복제해 고가용성 구현
- 사용자, 그룹, 역할, 정책 등의 생성 / 업데이트 요청은 IAM에 복제되어야 하며 시간이 걸리지만 요청이 성공하면 변경 실행, 결과는 저장 됨
- 위와 같은 IAM 변경 사항을 어플리케이션의 중요한 코드에 포함시키지 말고 자주 실행하지 않는 별도 루틴에서 변경해야 함
IAM에 접근하는 법
- AWS Management Console
- 로그인
- Command Line
- AWS CLI 사용
- 전편참고: AWS EC2, CLI
- SDK(Software Develop Kit)
- Java, Python, Ruby, .Net, iOS, Android 등 지원
- 리퀘스트에 대해 암호화 방식으로 서명
- 오류 관리
- 자동으로 리퀘스트 재시도
- 등
- AWS에서 어플리케이션 개발 및 관리를 위한 도구
- HTTPS API
- AWS 서비스에 직접 HTTPS 요청 실행 가능한 IAM HTTPS API 사용
- 프로그래밍으로 IAM 및 AWS에 접근 가능
- 권한(자격 증명) 사용해 리퀘스트에 디지털 방식으로 서명하는 코드 필요
- HTTP 쿼리 요청을 통한 API 호출
- AWS 서비스에 직접 HTTPS 요청 실행 가능한 IAM HTTPS API 사용
AWS 서비스를 위한 IAM
서비스
- 서비스에 대한 권한 부여, 접근에 관한 AWS 문서 열람 가능
작업
- 각 AWS 서비스는 IAM 정책에서 사용할 수 있는 작업(Action), 리소스, 조건 컨텍스트 키를 정의할 수 있음
- 작업(Actions): AWS API Reference: Actions
- 특정 작업에 대한 허용 여부는 Action 요소(Element)로 지정
- 명령문에는 반드시
Action
또는NotAction
을 적어줘야 함 "[Action/NotAction]": "[service_name]:[action_name]"
- e.g.
"Action": "ec2:StartInstances"
,"Action": "iam:ChangePassword"
- e.g.
- 정책(Policies)
- 권한(자격 증명)이나 리소스와 연결될 때 이를 정의하는 AWS의 객체
- 정책 생성 후 IAM 자격 증명(사용자, 사용자 그룹 / 역할) / AWS 리소스에 연결해 접근(access)을 관리
- IAM의 사용자 / 역할이 리퀘스트를 보낼 때 AWS가 정책에 대한 평가를 내림
- 정책 허가가 내려짐
- 모든 정책은 JSON 형식으로 보관
- 6가지 유형 지원
- 자격 증명(identity) 기반 정책: 관리 정책, 그 때마다 규정하는 정책을 IAM 자격 증명에 연결해 권한 부여
- 리소스 기반 정책: 그 때마다 규정하는 정책을 리소스에 연결해 정책에서 허가한 주체에게 권한 부여
- 허용(권한) 범위: 관리형 정책을 IAM 사용자 / 역할에 대한 기준으로 사용하며 자격 증명 기반 정책을 통해 사용자 / 역할에게 부여할 수 있는 최대 권한을 정의만 함(리소스 기반 정책에 대해서는 하지 않음)
- 조직 SCP(Service Control Policy): 조직 또는 조직 단위(OU) 계정 멤버에 대한 최대 권한을 정의하고 자격 증명 기반 정책, 리소스 기반 정책을 통해 계정 내 사용자 / 역할에게 부여 가능한 권한은 제한하되 부여하지는 않음
- ACL(Access Control List): ACL을 기준으로 ACL이 연결된 리소스에 접근 가능한 다른 계정의 보안 주체를 제어(지정된 보안 주체에 권한을 부여하는 교차 계정 권한 정책)하고 JSON 형식으로 정책을 보관하지 않는 유일한 정책.
- 세션 정책: CLI 또는 API를 사용해 역할 / 연합된 사용자를 위임할 때 고급 세션 정책을 전달하는데 세션에 부여하는 권한을 제한함(생성된 세션에 대한 권한을 제한하지 않지만 부여하지도 않음)
- IAM 사용자를 생성할 때 콘솔을 통한 접근 혹은 프로그래밍을 통한 접근에 대한 권한을 부여 가능
- 콘솔을 통한 접근 허가: 로그인 가능
- 프로그래밍을 통한 접근 허가: CLI / API 사용 가능
- 작업 테이블: IAM 정책에 설명된 작업(Action) 요소(element)에서 사용할 수 있는 모든 작업(Action)을 나열한 것
- 서비스에서 정의된 모든 API 작업을 IAM 정책의 Action으로 사용 가능한 것은 아님
- API 작업에 직접 해당하지 않는 일부 작업 정의 가능
- 4가지 열
- 액세스 레벨: 작업이 분류되는 방법(나열, 읽기, 쓰기, 권한 관리, 태그 지정)
- 리소스 유형: 해당 작업(action)이 리소스 차원의 권한을 갖고 있는지에 대한 여부
- 만약 해당 열이 비어있다면 리소스 차원의 권한을 지원하지 않는다는 것이므로 정책에서 모든 리소스(*: 필수 리소스)라 명시해 주어야 함
- 리소스 유형이 포함되어 있다면 정책 내의 리소스(Resource) 요소에서 리소스 ARN(Amazon Resource Name) 지정 가능
- 명령문 한 줄에는 서로 호환되는 작업과 리소스가 있어야 함
- 만약 그렇지 않다면 리퀘스트는 실패하고 명령문의 Effect가 적용되지 않음
- 다수의 리소스 유형을 지원하기도 하나 리소스 유형이 *가 아닌 경우에는 한가지만 선택 가능
- 조건 키: 정책 내 Condition 요소가 지정할 수 있는 키
- 키가 특정 리소스 유형과 동일한 행에 있는지 주의
- 모든 작업 혹은 과련 없는 상황에서도 사용할 수 있는 전역 조건 키는 불포함
- 종속 작업: 작업(Action)을 성공적으로 호출하기 위해 그 자체에 대한 권한 외에도 보유해야 하는 추가 권한을 포함하며 두개 이상의 리소스에 접근하는 경우 필요할 수 있음
- 작업(Actions): AWS API Reference: Actions
'AWS 노트' 카테고리의 다른 글
AWS Lambda Python 실행기 (2) (0) | 2020.04.06 |
---|---|
AWS Lambda Python 실행기 (1) (0) | 2020.04.03 |
AWS Lambda (0) | 2020.04.03 |
AWS EC2, CLI (0) | 2020.04.03 |
AWS 인스턴스, AMI (0) | 2020.04.03 |