IAM Policies inheritance

image-20220705195308321

 

각 3개의 그룹이 존재하며, 그 중 Audit Team은 Developers Team과 Operation Team의 팀원이 1명씩 속해져 있음.
도형 내에 빨간색 체크 문서로 표시된 것은 해당 Group에서 적용되는 정책을 의미함.

 

하지만 Audit Team의 Charles, David은 Developers, Operations Team Group에 속하는 다중 Group 사용자임.

이런 경우 Audit Team의 정책은 어떻게 되는 걸까?

 

정답은 속해져 있는 정책 모두 적용된다는 것
즉, Charles는 Developers Team과 Audit Team의 정책을 모두 적용 받음.

 

Fred는 Goup에 속하지 않는 사용자임.
해당 사용자에게 정책을 적용시키고 싶다면 inline 정책을 생성하여 적용할 수 있음.

IAM Policies Structure

{
    "Version": "2012-10-17",
    "Id": "S3-Account-Permissions",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                    "AWS": ["arn:aws:iam::123456789012:root"]
            },
            "Action": [
                    "s3:GetObject",
                    "s3:PutObject"
            ],
            "Resource": ["arn:aws:s3:::mybucket/*"]
        }
    ]
}

Optional Top-Level Element

1. Version : IAM Policy JSON 문서 양식 버전

Version의 경우 2008-10-17와 2012-10-17이 존재함.
2012-10-17으로 사용하면 됨.

 

2. Id : 정책 식별자 (Optional)

 

3. Statement : 권한 부여 규칙의 나열

Statement

1. Sid : Statement 식별자 (Optional)

 

2. Effect : Access 설정 - Allow or Deny

 

3. Principal / NotPrincipal : Access 대상

    - Resource 기반 정책에서만 사용

 

4. Action / NotAction : 서비스의 API Calls 지정
    - 하나 혹은 여러 개의 Action을 지정할 수 있음.
    - 각 서비스 별로 고유의 서비스 접두사가 존재 (ex. dynamodb, s3)
    - Action은 [서비스 접두사]:[작업] 형식으로 지정

 

5. Resource / NotResource : Action이 영향을 미치는 Resource 리스트 지정
    - Resource를 특정할 수 없는 일부 서비스에선 *으로 표시

 

6. Condition : 조건이 충족되는 경우에만 해당 정책 적용

복사했습니다!