Policy는 AWS 서비스와 리소스에 대한 인가 기능을 제공
Policy를 정의할 때는 어떤 IAM Principal이 어떤 Condition에서 AWS의 어떤 Resource에 대해 어떤 Action을 허용 혹은 차단할 것인지를 지정
aws에서 일어나는 모든 API call은 IAM에 의해서 제어된다.
그룹은 동일한 권한을 가지는 사용자에게 권한을 설정하는것을 편리하게 하기 위함이지 그룹에 보안 주체가 될 수는 없다. 사용자는 최대 10개의 그룹에 속할 수 있다.
{
"Statement":[{
"Effect":"Allow or Deny",
"Principal":"principal",
"Action":"action",
"Resource":"arn",
"Condition":{
"condition":{
"key":"value"
}
}
}]
}
Effect
: 명시된 정책에 대한 허용 혹은 차단
Principal
: 특정 서비스에 대해 접근을 허용 혹은 차단하고자 하는 대상(보안 주체. 누가 적용할 건지)
Action
: 허용 혹은 차단하고자 하는 접근 타입 (API call. 뭘 할건지)
Resource
: 요청의 목적지가 되는 서비스 (API call의 목적지가 되는 서비스. 누구한테 적용할 건지)
Condition
: 명시된 조건이 유효하다고 판단될 수 있는 조건
"Condition":{
"DateGreaterThan": {"aws:CurrentTime" : "2017-01-01T11:00:00z"},
"DateLessThan" : {"aws:CurrentTime" : "2017-12-31T15:00:00z"},
"IpAddress": {"aws:SourceIp" : ["192.0.2.0/24", "203.0.113.0/24"]}
}
2017.01.01 11:00 이후 AND 2017.12.13 15:00 이전 AND 요청이 들어온 IP 주소 대역이 192.0.2.0/24 OR 203.0.113.0/24 범위 내에 있음
우선권 순위
API 요청 ➡️ 명시적 Deny ➡️ Permission Boundary ➡️ Permission Policy
하나라도 Deny되면 요청 차단됨
명시적 Deny : 명시적으로 Allow or Deny 하는지 (Effect에 나와있어)
묵시적 Deny : Allow 내용을 쓰지 않으면 일단 다 Deny 되어있어. On-premise에서 방화벽 Default Deny 정책과 유사 (Permission Boundary랑 Permission Policy)
Authentication(인증)
Authorization(권한.인가)
Audit : 감사(로그)
개별 사용자 생성
강력한 암호 정책 설정
보안 자격 증명을 정기적으로 순환 (Credential Report 확인)
권한이 있는 사용자에 대해 MFA 활성화
권한 관리에 그룹 사용
최소한의 권한만 부여 (정기적으로 Access Advisor 확인)
접근제어를 공유하기 위해 AWS IAM Role 사용
Role은 다음의 경우에 사용:
Amazon EC2 instances에 AWS IAM Role 사용
API 호출 로그를 얻기 위해 AWS CloudTrail 활성화
Reduce or remove use of root
:smiley:
➕ 내가 추가로 공부한 내용
1️⃣ Policy에서 연결 대상에 따라 자격 증명 기반 정책
과 리소스 기반 정책
으로 나뉨
자격 증명 기반 정책은 이 정책이 적용된 사용자,그룹, 역할 이 보안의 주체로 principal이 없어. IAM policy 메뉴 또는 IAM Role 인라인으로 관리한다.
리소스 기반 정책은 어떤 리소스가 어떤 리소스를 이용(action)할때 정하는 정책으로 principal 존재. 대표적으로 S3나 SQS에서 사용한다. 즉 일부 공유자원 성격을 가진 서비스에서 사용
2️⃣ ARN : AWS의 리소스를 고유하게 식별하는 아이디 같은 거
형식 : arn
:aws
:(서비스 prefix)
:(AWS 리전 이름)
: (AWS 계정)
:(리소스 한정자)