안녕하세요,

베스핀글로벌 GCP Support팀입니다.


이번 아티클에서는 주제로 "리소스 별 필요한 권한 확인 및 부여 방법"에 대해 다루고자 합니다.



리소스 별 필요 권한 확인


리소스 별 액세스 권한에서 확인 하실 수 있습니다.
리소스에 필요한 권한은 사용자에게 IAM 역할(Role)을 부여하여하는 방식으로 제공됩니다.
일반적으로 Basic Role인 Viewer, Editor, Owner 권한을 많이 부여하여 사용하시지만, 해당 Role 들은 프로젝트 전체 리소스에 대한 권한을 부여하는 광범위한 권한을 가진 Role이기 때문에 최소 권한의 원칙 상 권장되는 방법은 아닙니다.

따라서 보다 상세하게 권한을 부여할 수 있는 Predefined Role을 사용하시길 권고 드립니다.

리소스 별 액세스 권한 페이지에서 리소스별 Predefined Role의 상세 내용을 확인하실 수 있습니다.

위와 같이 역할에 대한 설명 및 권한에 대해 확인할 수 있습니다.


IAM 역할

IAM 권한 부여는 권한을 가진 역할을 부여하는 방식으로 진행되며 역할은 3가지 종류가 있습니다.


1) 기본 역할(Basic)

IAM 도입 전에 있었던 기존의 소유자, 편집자, 뷰어 역할이 포함됩니다.


2) 사전 정의된 역할(Predefined)

특정 서비스에 대한 세분화된 액세스 권한을 제공하며, Google Cloud에서 관리합니다.


3) 커스텀 역할(Custom)

사용자 지정 권한 목록에 따라 세분화된 액세스 권한을 제공합니다.


IAM을 사용하면 특정 Google Cloud 리소스에 대한 세부적인 액세스 권한을 부여하고 다른 리소스에 대한 액세스를 방지할 수 있습니다. 

잘못 부여한 경우, Cloud Console에서 액세스 권한을 수정 및 취소할 수 있습니다.


Custom Role 사용방법


IAM에서 Custom 역할을 생성하여 제한된 권한을 가진 역할을 만들 수 있습니다. 

기존에 IAM에 존재하는 Pre-defined 역할보다 제한적인 권한을 가진 역할을 만들 수 있어서 보안상 권장됩니다.

일부 권한의 경우 Custom 역할에서 지원하지 않기 때문에 Custom 역할의 권한 지원 수준을 확인해야 합니다.


* 역할을 생성할 때, 해당 역할이 프로젝트 수준 역할인지, 조직 수준 역할인지 꼭 확인하시기 바랍니다.

** 프로젝트 수준 Custom 역할에는 조직이나 폴더 수준의 권한에 대한 권한을 부여할 수 없습니다.


1) GCP Console > IAM & Admin > Roles > Create Role



2) Add Permissions로 해당 역할에 권한을 부여할 수 있습니다.

권한 부여 시 기존에 있는 역할이 가지고 있는 권한 기준으로 필터링을 할 수도 있고, 권한의 이름이나 서비스 이름으로 필터링 하여 검색할 수 있습니다.





3) 사용하고자 하는 권한을 추가하여 역할을 생성합니다.

아래 예시에는 compute instance를 start/stop 하는 권한만 제한적으로 가진 역할을 생성하게 됩니다.



4) 생성한 역할 확인 및 수정

IAM & Admin > Roles 에서 생성한 Custom 역할을 확인할 수 있습니다. 

역할을 활성화/비활성화 할 수도 있고, Edit으로 수정하여 필요한 권한을 추가하거나 필요 없는 권한을 제거 할 수 있습니다.




IAM 권한 부여에 제한 설정


IAM 권한을 엄격하게 관리하기 위하여 직원이 다른 사용자에게 IAM 권한 부여 및 삭제를 할 수 있는 권한도 제한적으로 부여할 수 있습니다.


제한사항


 - IAM API 속성을 인식하는 서비스에서만 해당 기능을 사용할 수 있습니다.


아래와 같이 권한 부여 및 삭제 권한을 제한하는 설정을 할 수 있습니다.

본 가이드에 총 3개의 계정이 사용됩니다.


 - 최고관리자 User A : mingi.choi@bespinglobal.com

 - 제한된 IAM 권한을 부여 받는 IAM 관리자 User B : test-sa 

 - User B로부터 IAM 권한을 부여 받는 User C : mingi-test-sa


1) 최고관리자 A로 로그인 하여 조건부 권한을 가지는 User B(test-sa)에 대해 Condition을 설정합니다.


 - Console > IAM & Admin > Project IAM Admin 권한 부여 > + Add IAM Condition 



2) Title에 condition name을 지정한 뒤, CONDITION EDITOR 탭으로 이동합니다.

Editor에서 아래와 같이 hasOnly 함수를 이용한 제한 명령어를 작성 후 SAVE 해줍니다.


 - hasOnly() CEL(Common Expression Language)[2] 함수를 사용하여 주 구성원에게 부여 또는 취소할 수 있는 역할을 정의하고 적용합니다.

 - 해당 가이드에서는 User B가 [‘roles/pubsub.editor’]만 부여 가능하도록 해보겠습니다.




3) Role 추가/삭제 테스트

 - Cloud Shell로 이동하여 제한된 권한을 부여받은 User B(test-sa)로 로그인합니다.

 - 이후 아래와 같이 User B(test-sa)가 부여 권한이 있는 pubsub.editor 역할을 User C(test-mingi-sa)에 부여합니다.



 - 권한이 있는 IAM role 부여가 잘 되는 것을 확인할 수 있습니다.



 - 아래와 같이, 부여 권한이 없는 roles/storage.objectViewer에 대한 작업은 제한됩니다.





참고사항


[1] 리소스 별 액세스 권한(Predefined Role)

https://cloud.google.com/iam/docs/understanding-roles?hl=ko#predefined_roles

[2] IAM 권한 수정

https://cloud.google.com/iam/docs/granting-changing-revoking-access#modifying-console

[3] IAM 조건의 속성 참조
https://cloud.google.com/iam/docs/conditions-attribute-reference



관련 문의사항이 있으시면 Support Portal에 문의해 주시기 바랍니다.


감사합니다.