AWS

IAM Roles와 Resource Based Policies 차이점, 그리고 IAM Permission Boundaries에 대해

S_N_Y 2024. 5. 1. 19:14

 

#0 IAM Roles(역할)과 리소스 기반 Policies(정책)의 차이점 살펴보기

차이점이 사실 명확하지 않아서 같이 정리하면 좋을 것 같다. 이 둘의 차이점을 살펴보자

S3 버킷의 액세스하려고 할 때, 2가지 방법을 통해 액세스할 수 있다.

S3를 액세스할 때를 예시로 들 수가 있는데 먼저 하나는 Account B(B 계정)에 대한 역할(Role)을 이용하는 것이다. 그리고 이 역할은 Account A에서 인수하는 것이다. Account B에서 해당 역할을 인수하면 해당 S3 버킷에 대한 액세스 권한이 있는 역할이면 액세스가 가능할 것이다.

2번 째 방법은 S3 버킷 Policy를 사용하는건데 S3 버킷 Policy를 통해서 Account A 사용자가 Account B에 있는  S3 버킷에 액세스할 수 있도록 지정하는 것이다. 이 두 방법을 통해 Account A 사용자가 Account B의 S3에 액세스할 수 있는 것이다.

 

그런데 여기서 이 둘 사이에 큰 차이점을 살펴보자..! 어떤 차이점일까?🧐

우리가 역할을 인수할 때(사용자, 애플리케이션 서비스를 인수할 때) 기존의 권한은 모두 포기하고 해당 역할에 할당된 권한만을 얻게 된다.

=> 다시 말해 Account B에서의 역할을 인수한다면 그림에서의 주황색 상황에서 Account A의 사용자는 Account A의 모든 권한을 포기하고 Account B에 있는 역할만을 인수한다는 것이다.

=> 즉, 사용자, 애플리케이션 혹은 서비스로서 역할을 인수한다는 것은 기존의 권한을 모두 포기한다는 의미이고 해당 역할에 할당된 권한만을 얻게 된다는 것이다.

 

이거랑 다르게 리소스 기반 정책에서는 Principle이 권한을 포기할 필요가 없다.

...

그렇다면 리소스 기반 정책은 언제 사용하게 될까?👀

예시로 본인의 Account A DynamoDB를 스캔해야 하는 Account A 사용자가 있다고 칠 때, 이 사용자는 해당 콘텐츠를 Account B의 S3에 처분해야 하는데 이 경우 해당 사용자는 Account 2개에 대한 작업을 해야 한다.

=> 즉, Account A에 대한 IAM roles가 있어야 하고 Account B의 S3 버킷에 대한 리소스 기반 정책도 있어야 한다!

 

#1 IAM에 권한 경계를 알아보자 - IAM Permission Boundaries

IAM에는 권한 경계가 존재하고 그룹이 아닌 사용자와 역할이 이를 지원하고 있다.

고급 기능으로 IAM 개체에 대한 최대 권한을 설정할 수있다.

예를 들어 이런 식으로 IAM 권한 경계를 연결한다고 해보자.

s3:*, cloudwatch:* ec2:*를 IAM 권한으로 설정한다. 이 IAM 정책을 iam:CreateUser 그리고 "Resource":*라고 설정 했고 이제 IAM 권한 경계와 IAM 정책을 합치면 아무 권한을 부여하지 않도록 설정이 된다..!

"Action": iam:CreateUser가 우측에서 승인되었다고 하더라고 IAM 권한 설정에서 S3, CloudWatch, EC2에 대해서만 권한을 부여하고 있기 때문에 결과적으로 사용자에게는 부여되는 권한이 없다.

 

#2 AWS Organizations SCP를 통한 IAM 권한 경계

SCP를 통해서도 IAM 권한 경계를 활용할 수 있는데 Effective permissions(유효 권한)이라고 적힌 SCP의 중간 영역을 보자.

SCP간 중첩되는 부분, 즉 권한 경계와 자격 증명 기방 정책에서 사용할 수 있다.

따라서 IAM 권한 경계를 이용하면 관리자가 아닌 사용자에게 권한 경계와 함께 역할을 위임할 수 있는 것이다.

가령 새로운 IAM 사용자를 생성하거나 개발자가 특정 권한 내에서만 스스로 정책을 할당하고 그 권한의 범위를 관리하도록 설정할 수 있다. (부여한 권한 위로는 권한을 스스로 올리지는 X)

또한 특정 사용자 한 명의 권한을 제한할 때에도 유용한데 이를 이용하면 Organizations와 SCP에 대한 전체 계정 제한을 사용할 필요가 없는 것이다.