업무/AWS기초

AWS 권한에 대해서 1.2 (JSON 기본 구조)

종금 2021. 4. 16. 16:16
반응형

저번글에 이어서 다음 구성요소들을 적어본다.

 

6.Principal(필수)
정책의 세부사항으로 주체 등을 선택하며 "*"로 표시시 모든 주체를 표현한다
구성사항은 다음과 같다
("AWS계정 및 루트사용자", "IAM 사용자", "연동사용자(웹자격증명 or SAML 연동",
"IAM 역할, " 위임된 역활 세션", "AWS서비스", "익명사용자(권장하지않음")
-> ARN(arn:aws:iam::AWS-account-ID:root)
왜 이렇게 사용할까 그룹에는 여러사람이 존재한느데 이 사람에 대해 각자 권한을 주고싶은가보다
예를들어 개발팀이 ec2에 대해서 권한을 제어할때 팀장A말고는 권한에 대해서 조절하고싶을때

Action allow 
EC2 생성/제거
Principal : 팀장
Action Deny
EC2 생성/제거
Principal : 팀원

ex) 특정 AWS 계정에 대해서
1-1: 123456789012계정에 대한 권한 설정
"Principal": { "AWS": "arn:aws:iam::123456789012:root" 
                    or
"Principal": { "AWS": "123456789012" }

1-2: 여러 AWS 계정(123456789012,99999999999999)에 대해서
"Principal": {
           "AWS": [
                     "arn:aws:iam::123456789012:root",
                     "999999999999"
                ]
              }

ex2) 개별 IAM 계정에 대해서 (ID의 대소문자를 구별하니 조심)
             ->   "Principal": { "AWS": "arn:aws:iam::AWS-account-ID:user/user-name" }
"Principal": {
    "AWS": [ 
           "arn:aws:iam::
AWS-account-ID:user/user-name-1",
           "arn:aws:iam::AWS-account-ID:user/UserName2"
          ]
       }

Principal은 구성방법이 많으니 마지막부분의 Doc을 참고하자

7,NotPrincipal(선택: Principal대신 사용 가능)
Principal이 있는데 왠 Notprincipal이냐 할수있다. 이것을 사용시 Principal은 사용안해도된다.
이기능이 돋보이려면 가장 간단하게 모든 사용자에 대해 Deny를 하고 해당 사람만 이곳에 추가하면 된다.
진정으로 간편하지 않은가 화이트리스트방식으로 처리하기에 좋은 기능이다. 
이전 Principal에서도 설명했던 예시를 써보자 개발실 팀장만 하는 구문을 짜보자자

{ "Version": "2012-10-17",
     "Statement": [
         { "Effect": "Deny",
           "NotPrincipal": {"AWS": [
                 "arn:aws:iam::444455556666:user/Bob",  -> 개발팀장
                  "arn:aws:iam::444455556666:root"        -> 관리자
             ]}

와같이 설정하면 해당 기능을 개발팀장 외에 모두 Deny하며 화이트리스트를 할수 있을 것이다.

 

Reference

Principal : docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_policies_elements_principal.html
NotPrincipal: docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/reference_policies_elements_notprincipal.html

반응형