이것이 점프 투 공작소

IAM과 Policy 본문

aws

IAM과 Policy

겅겅겅 2022. 8. 29. 21:00

IAM이란?

AWS의 리소스에 대한 접근을 관리 할 수 있게해주는 AWS사용자 및 그룹을 관리 하는 서비스

 

IAM은 크게 사용자(User)와 그룹(Group), 역할(Role)로 나뉘어집니다.

AWS에 리소스에 대한 요청을 하게되면 aws-api를 내부적으로 사용합니다, 이 때 SigV4를 통해 헤더나 쿼리스트링 등 요청 데이터들은 암호화 됩니다.

IAM사용자(User)

신규 생성된 사용자는 아무런 권한도 할당되지 않습니다. 따라서 IAM그룹에 추가하거나, IAM역할을 부여함으로서 권한 및 자격증명을 할당 할 수 있습니다.

IAM 그룹(Group)

IAM유저들의 집합입니다. 그룹을 활용하여 다수의 사용자에게 권한을 더 쉽게 부여 및 관리 할 수 있습니다.

IAM 역할(Role)

롤도 정책들을 부여 받을 수 있고, 람다나 ec2등 aws리소스에 대해서도 부여가 가능합니다.

IAM 역할은 IAM 사용자 뿐만 아니라 AWS 서비스나 자격 증명 공급자(IdP)로 인증된 외부 사용자 그리고 다른 AWS 계정의 사용자에게도 연결할 수 있습니다.

Assume-role

특정 롤(A)이 다른 롤(B)을 위임 할 수 있도록 설정 할 수 있습니다.

A롤은 B롤 에게 assume을 요청하면 B롤은 토큰을 발행하여, A롤은 토큰을 가지고 B롤에 대한 접근이 가능하게 됩니다.

 

특정 사용지 및 리소스에 권한을 부여하고 싶다면 AWS의 정책을 할당하거나, 역할을 위임해주면 됩니다.


정책이란?

AWS 서비스와 리소스에 대한 인가 기능을 정의합니다.

정책을 역할(Role)과 IAM사용자(User)에게 부여 가능합니다.

정책은 한 사람, 한 그룹 단위로 부여가능합니다.  (정책 -> 사용자,그룹)

역할을 생성 한 후 정책을 연결하고 사용자에게 부여하는 방법도 가능합니다.  (정책 -> 역할 -> 사용자,그룹)

IAM Policy (JSON Format)

json포멧으로 정책을 정의 할 수 있습니다.

{
	"Statement": {
    	"Effect": "Deny", # 이 정책에 대해 허용, 및 거부 여부
        "Principle": {     # 대상,누가 
        	"AWS": "*" # aws에 모든 유저가
        },
        "Resource": [	   # 무었을할지 지정합니다.
        	"arn:aws:s3:::openbucket/*" # openbucket의 
        ],
        "Action": [	  # 어떤 행위(권한)에 대해 지정합니다.
        	"s3:PutObject" # S3에 putObject에 대해
        ],
        "Condition": {	   # 위에 정책을 사용하기 위한 조건을 줍니다. (ip제한 및 테그 확인 등)
        	"StringNotEquals": { # PrincipalTag/job 태그 값이 manager가 아니면
            	"aws:PrincipalTag/job" : "manager" 
            }
        }
    }
}

 

 

AWS의 정책에서 많이 활용되는

    자격증명-기반 정책(Identical-Based Policy)

    리소스-기반 정책(Resource-Based Policy

에 대해서 정리해보려합니다.

 

자격증명-기반 정책 (Identical-Based Policy)

ID 기반 정책은 ID(사용자, 사용자 그룹 및 역할)가 수행할 수 있는 작업, 리소스 및 조건을 제어하는 JSON 권한 정책 문서입니다. ID-Based-Policy는 또 3개의 하위 정책으로 나뉘어집니다.

 

1. AWS 관리형 정책 (AWS Managed Policy) 

 

AWS 관리형 정책은 AWS에서 생성 및 관리하는 독립적인 정책입니다. 여기에서 독립적인 정책이란 정책 스스로 정책 이름이 포함된 Amazon 리소스 이름(ARN)을 갖고 있다는 것을 의미합니다. AWS 에서 대부분 제공되는 정책입니다. AWS에서 제공되는 정책이므로 글로벌하게 적용됩니다.

네트워크 관리자 직무, 데이터 싸이언스 직무 등 직무별 권한을 할당 할 때 사용되는 정책입니다.

 

2. AWS 고객 관리형 정책 (AWS Customer Managed Policy)

독립적인 정책은 사용자 자신의 AWS 계정에서 관리하도록 생성할 수도 있습니다. 이러한 정책을 고객 관리형 정책이라고 합니다. 이렇게 생성된 정책은 AWS 계정에 속한 다수의 보안 주체 엔터티에 추가할 수 있습니다. 정책을 보안 주체 엔터티에 추가할 경우 정책에서 정의한 권한까지 엔터티에게 부여하게 됩니다.

고객이 관리하는 정책을 생성하는 좋은 방법은 AWS에서 관리하는 기존의 정책을 복사하여 시작하는 것입니다. 이렇게 하면 시작 시 올바른 정책으로 시작하므로 해당 환경에 맞게 사용자 지정만 하면 됩니다. 고객 관리형 정책은 만들어진 Account에서만 사용할 수 있습니다.

3. AWS 인라인 정책

AWS 인라인 정책은 1 to 1 정책으로 명시적으로 할당되는 정책입니다.따라서 IAM 자격 증명(사용자, 그룹 또는 역할)에 포함되는 정책입니다. 즉, 정책은 자격 증명의 고유한 부분입니다. Lab에서 명시적 접근 거부로 확인합니다.

 

인라인 정책의 특징

인라인 정책은 정책과 정책이 추가된 자격 증명을 정확히 1대 1 관계로 유지할 때 유용합니다. 예를 들어 정책 권한을 의도하지 않은 자격 증명에 실수로 할당하는 일을 배제하려고 합니다.

이때 인라인 정책을 사용하면 정책 권한이 잘못된 자격 증명에 실수로 추가되는 일이 사라집니다. 그 밖에도 AWS Management Console을 사용하여 자격 증명을 삭제할 경우 자격 증명에 삽입된 정책 역시 삭제됩니다. 정책도 보안 주체 개체의 일부이기 때문입니다.

 


리소스 기반 정책  (Resource-Based Policy)

리소스 기반 정책은 리소스에 연결됩니다. 예를 들어, Amazon S3 버킷, Amazon SQS 대기열 및 VPC 엔드포인트 AWS Key Management Service 암호화 키에 리소스 기반 정책을 연결할 수 있습니다. 

리소스 기반 정책을 사용하면 이러한 리소스에 액세스할 수 있는 대상 및 해당 대상이 리소스에서 수행할 수 있는 작업을 지정할 수 있습니다. 

리소스 기반 정책과 자격증명 기반 정책의 차이


 

 

 

 

참고 : https://going-to-end.tistory.com/entry/AWS-IAM-%EC%A0%95%EC%B1%85policy-%EC%99%80-%EC%97%AD%ED%95%A0role-%EC%9D%98-%EC%B0%A8%EC%9D%B4

https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/access_policies.html#policies_id-based

감사합니다.

'aws' 카테고리의 다른 글

AWS ROUTE53 Rounting Policy에 대해서 알아보자  (0) 2022.09.23
AWS RDS-Multi AZ와 Read-Replica  (0) 2022.09.11
AWS SNI  (0) 2022.09.11
Connection Draining은 무었이고, 왜 하는걸까  (0) 2022.09.06
SSH  (0) 2022.08.27