IAM
IAM이란?
AWS 리소스에 대한 인증 및 권한을 부여하는 기능
특징
- 암호나 억세스 키를 공유하지 않고도 권한을 다른 사람에게 부여할 수 있다
- 사용자, 리소스에 따라 다양한 권한을 부여할 수 있다
- 멀티 팩터 인증(MFA)을 통해 보안성을 높일 수 있다
- Identity Federation 지원을 통해 다른 서비스 사용자에게 권한을 부여할 수 있다
- 최종 일관성을 보장한다
정책 유형
1. 자격 증명 기반 정책 - Indentity-based Polices
각 아이덴티티(유저, 그룹, 역할)이 어떤 리소스에, 어떤 조건에서 어떤 액션을 수행할 수 있는지에 대한 정책이다. 자격 증명 기반 정책은 다음과 같이 관리형 정책(AWS 관리형 정책, 고객 관리형 정책)과 인라인 정책으로 나뉜다.
관리형 정책 (Managed policies)
AWS 관리형 정책 (AWS managed policies)
AWS에서 생성하고 관리하는 정책으로 AWS의 리소스 이름을 가지고 있다. (e.g. arn:aws:iam::aws:policy/IAMReadOnlyAccess)
고객 관리형 정책 (Customer managed policies)
고객(Customer)가 생성하고 관리하는 정책으로 AWS 관리형 정책을 기반으로 생성한다.
인라인 정책
하나의 아이덴티티(유저, 그룹, 역할)에 직접 1대 1로 부여되는 권한. 해당 아이덴티티가 삭제되면 함께 삭제된다.
2. 리소스 기반 정책 - Resource-based Policies
AWS 리소스에 연결되는 정책으로 인라인 정책이다. 해당 리소스에 대한 특정 액션을 수행할 수 있는 권한을 부여한다.
3. 권한 경계 - IAM Permissions Boundaries
자격 증명 기반 정책을 통해 IAM 엔티티(유저, 역할)에 최대 권한을 설정하는 정책
e.g. 유저가 속한 그룹에 S3 권한이 할당되어 있어도 유저에 S3 권한 경계가 설정되어 있으면 S3에 권한에 제한을 받는다.
4. 서비스 제어 정책 - Service Control Policies (SCPs)
조직(Organization) 혹은 (Organization Unit) 에 최대 권한을 지정하는 정책
AWS Organizations은 기업이 소유하는 계정을 그룹화하고 중앙에서 관리하는 AWS 서비스이다.
5. 접근 제어 목록 - Access Control Lists (ACLs)
지정된 보안 주체(Principal, 정책을 적용할 주체)에 권한을 부여하는 정책으로 리소스 기반 정책과 유사하다.
JSON 정책 문서를 사용하지 않는 유일한 정책
Amazon S3, AWS WAF, Amazon VPC에서 사용한다.
6. 세션 정책 - Session Policies
역할 또는 Federated 유저(페이스북, 구글 로그인 등)에 대해 프로그래밍 방식으로 임시 세션을 생성했을때 파라미터로 전달되는 정책
IAM 엔티티(유저, 역할)에 대한 자격 증명 기반 정책과 세션 정책의 교집합으로 권한이 결정된다.
JSON 정책 문서 구조
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "ThirdStatement",
"Effect": "Allow",
"Action": [
"s3:List*",
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::confidential-data",
"arn:aws:s3:::confidential-data/*"
],
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}]
}
Version
정책 언어의 버전
Statement
정책을 정의하는 단위, 여러 개의 Statement로 구성될 수 있으며 statement의 구성 요소는 아래와 같다.
Sid (선택 사항)
Statement의 ID
Effect
Allow/Deny 여부를 결정
Action
정책이 적용되는 작업 목록
Resource (일부 상황에만 필요)
정책이 적용되는 리소스 목록
리소스 기반 정책을 생성하는 경우 선택 사항이며, 이 필드를 포함하지 않으면 Action이 적용되는 리소스는 정책이 연결된 리소스이다.
Condition (선택 사항)
정책을 부여하는 조건 지정
속성 기반 엑세스 제어 (ABAC)
Attribute Based Access Control로, 속성을 기반 권한 부여 전략. AWS에서 속성은 태그를 말한다.
보안 주체(principal)의 태그와 리소스의 태그가 일치할 때 동작을 허용하도록 설계할 수 있다.
기존 RBAC 에선 새로운 리소스를 생성할 경우 기존 정책을 업데이트해야 하지만, ABAC는 리소스에 태그(속성)를 추가하면 권한이 부여된다.
참고
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/access_policies.html#policies_scp
'Devops > AWS' 카테고리의 다른 글
[AWS] Terraform 3-Tier Architecture - Network (0) | 2023.01.25 |
---|---|
[AWS] ALB - Application Load Balancer (0) | 2023.01.13 |
[AWS] Security Group (0) | 2023.01.10 |