사용자, 그룹, 역할, 정책
역할과 정책의 차이점)
역할은 일정시간이 지나면 자동으로 역할이 해제된다(임시적)
반면 정책을 부여받았다면 정책을 다시 회수하는 작업이 필요하다
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