기주

[AWS] aws 특정 EC2, S3에서 하나의 계정에만 접근 허용하기, IAM 정책 JSON, arn 문법구조 본문

TIL

[AWS] aws 특정 EC2, S3에서 하나의 계정에만 접근 허용하기, IAM 정책 JSON, arn 문법구조

기주그지마 2024. 2. 1. 17:07

 

 


사용자, 그룹, 역할, 정책 


역할과 정책의 차이점)

역할은 일정시간이 지나면 자동으로 역할이 해제된다(임시적)

반면 정책을 부여받았다면 정책을 다시 회수하는 작업이 필요하다






IAM policy JSON 구조)


전체 정책에 대한 Optional top-level elements가 있고, 이에 여러개의 Statement를 추가하는 형태.
하나의 Statement에는 여러개의 permission 정보가 포함되어있다


Optional top-level element)
version : iam policy JSON 문서 양식 버전
statement (array) : 권한 부여 규칙의 나열
id : 정책 식별자를 지정



IAM policy 구조)

Effect : 명시된 정책에 대한 허용 or 차단 (allow or deny)
ㄴ effect가 allow라면 특정 작업을 허용하는 정책

principal : 접근을 허용 or 차단하고자 하는 주체 (사용자, 역할, aws 계정)
ㄴ리소스 기반 정책에서만 사용

action : 정책에서 수행가능한 작업
ㄴ*은 해당 서비스의 모든작업
ㄴs3:GetObject는 버킷에서 객체를 읽을 수 있는 작업

resource : 정책이 허용 or 차단되는 자원 (s3의 버킷, ec2의 인스턴스)
ㄴ resource를 사용하여 특정 서비스나 리소스에 대한 작업이 수행되도록 정책을 제한 할 수 있다
ㄴ특정 버킷에 대한 작업을 지정하기위해 해당 버킷의 ARN을 resource로 사용할 수 있다


principal : 정책이 적용되는 조건
ㄴ예시) 특정 IP주소에서만 허용되도록 하는 조건



팁)
-나열되는 요소들의 순서는 중요하지않다. Resource가 먼저오든 action이 먼저 오든 상관없다

-정책에서 condition 요소는 지정하지 않아도된다.

- 하나의 요소내에 여러개를 지정해줄때는 리스트 이용

-action / not action, principal / not principal, resource / notresource는 택일해야한다






자격증명 기반정책과 리소스기반 정책)

IAM 정책은 사용자에게 부여하는 방식을 이용할 수 도 있지만, 
리소스에 부여하는 방식을 이용할 수도 있다.



-자격 증명기반정책(identity-based policies) : User, Group, Role에 할당하는 IAM 정책
ㄴ 특정 사용자에게 정책을 할당하는 방식이므로 principal을 기재하지 않는다



-리소스 기반 정책 : 리소스 (S3 버킷, ec2 인스턴스)에 할당하는 IAM 정책
ㄴ어떤 사용자에게 정책을 할당할지 써줘야하므로 principal을 기재한다



arn 문법구조)

 arn (Amazon Resource Name) : AWS의 모든 리소스의 고유 아이디

arn의 형식)
ㄴarn:partition:service:region:account-id:resource-id

partition : 리소스가 존재하는 aws 리전의 그룹

service : aws 서비스 (s3)

region : 리전

account-id : aws 계정 id(123456789012), 리소스를 소유하고있는 aws 계정의 ID로 하이픈 없이 표기

resource-id : 리소스이름 or 리소스 ID or 리소스 경로, *도 사용가능



리소스마다 arn 형식이 다를 수 있고, region, account-id가 생략될 수도 있다

s3버킷 arn에는 리전과 계정번호를 쓸 필요 없다

arn:aws:s3:::bucket_name
arn:aws:s3:::bucket_name/key_name