구글 클라우드 시작하기

IAM으로 권한 설정하기

최유석 

여러 명의 사용자가 동시에 자원을 공유해서 사용해야 하는 기업 프로젝트 환경에서 리소스에 대한 접근 및 권한 관리는 선택이 아니라 필수이다. 구글의 클라우드에서 제공하는 IAM(Identity and Access Management)은 구글 클라우드 서비스들에 대한 편리하고 일관된 방식으로 통합적인 접근 제어를 제공한다.

 

IAM (Identity and Access Management) 이란?

 

구글 클라우드 서비스의 전체 리소스에 대해서 뿐만 아니라 통합적으로 사용자 또는 특정유형 별로 구글 클라우드 서비스 각각의 단위로 리소스의 접근 범위를 지정해서 해당 리소스에 대한 권한의 관리를 쉽게 할 수 있게 하는 서비스이다.

  

다른 예로, 리눅스의 Permissions은 파일, 디렉토리 단위로 적용한다면, IAM은 구글 클라우드의 서비스의 프로젝트 레벨에서의 전체 리소스 또는 세부적인 단위로 적용한다고 생각할 수 있다..

 

IAM의 필요성

예를들면, 만약에 어떤 기업에서 구글 클라우드 Compute Engine의 VM과 구글 클라우드 스토리지를 이용해서 미디어 서비스를 하고 있으며, 개발자 또는 엔지니어와 디자이너는 각각의 미디어파일과 소스코드의 정보는 공유가 필요하다면 디자이너에게 어플리케이션의 소스코드를 수정할 수 있는 권한을 줄 수도 없고 반대의 경우도 마찬가지 아닌가? 보안도 문제가 되고 안정적인 운영에도 문제가 될 수 있다. 이러한 문제들을 극복하기 위해 구글 클라우드에서 제공하는 권한 제어 서비스가 IAM이다.

 

먼저 구글 클라우드 IAM에서 권한을 부여할 수 있는 유형은 다음과 같다.

  • Google account
  • Service account
  • Google group
  • Google Apps domain
     

IAM 기본 유형 별 정의

 

먼저 구글 계정은 gmail계정이다. (예 : test@gmail.com)

 

다음으로 서비스 계정은 구글 클라우드 서비스에 대한 ID이며 하나의 ID로 다른 구글 클라우드 서비스에 접근할 수 있도록 해주는 이메일 형태의 계정이다. IAM관리 페이지에서 추가로 생성 가능하다. (기본 GCE, GAE 서비스 ID제공)

(예 : <project_id or project number>@developer.gserviceaccount.com 형식이며,

Test-1234@appspot.gserviceaccount.com – project_id 형식,

1234567891011-compute@developer.gserviceaccount.com – project-number 형식)

 

마지막 구글그룹과 구글앱스 도메인은 지정하게 될 경우 해당 모든 구성원에게 권한이 부여된다.

구글그룹 - (예 : test@googlegroups.com) / 구글앱스 도메인 – (예 : test-company.com)

 

* 프로젝트의 식별자로 Project Name, ID, Number 세가지 제공되며 Unique한 값으로 생성하여야 하며 Number는 자동으로 부여된다. Project ID의 경우 APP Engine의 어플리케이션 ID로도 사용되며 프로젝트 삭제 시 다시 같은 ID로 생성할 수 없다.

 

구글 클라우드 IAM은 단순하며 유연한 역할을 제공한다.

기본적인 역할 모델로 보면 다음과 같다.

  • Viewer
  • Editor
  • Owner

먼저 뷰어는 말그대로 구글 클라우드 리소스를 보는 권한만 부여된다.

 

편집자는 보기 권한 + 리소스의 생성/삭제/변경이 추가된다.

 

마지막으로 소유자는 앞의 모든 권한을 가지면서 프로젝트 멤버 및 프로젝트 자체를 관리(추가/삭제)할 수 있는 권한이 부여된다.

*프로젝트 최초 생성시에 소유자레벨의 권한이 부여되어 있다.

 

*기본적인 역할 외에 프로젝트 레벨에서Service Account Actor가 있는데

서비스 별 세분화 한 역할을 지정하여 사용시에 서비스계정의 정보를 획득하고

인증 시 사용하여 보안성을 높인다. (서비스 단위로 권한 적용시 동시 사용)

 

추가적으로 결제와 관련한 부분은 Billing administrator(결제 관리자)를 통해 관리된다. 처음 프로젝트 생성 시에 소유자로 지정되어 있으며 리소스에 대한 권한은 제한된다.

 

IAM설정 방법은 매우 단순하다.

설명을 위해 임의로 프로젝트를 생성하여 진행한다.

예시 프로젝트 명 : iamtest / 프로젝트ID : iamtest-1341

프로젝트 소유 계정 : namu.test1@gmail.com

추가권한 부여 계정 : namu.test2@gmail.com

(만약 기존 프로젝트가 없다면 새로 생성한다. 프로젝트 생성 방법의 자세한 내용은 http://bcho.tistory.com/1107 참고)

 

 

좌측 상단 탭을 이용해서 IAM페이지로 이동한다.

 

먼저 IAM페이지에서 멤버를 추가하려면 ADD MEMBER를 클릭 한다.

Name에 추가하려는 계정 명을 넣고

 

부여하려는 권한 레벨을 선택하고 ADD버튼을 누르면 추가가 완료된다. .

Viewer권한을 가진 멤버의 추가가 완료된 모습이다.

 

추가한 계정(namu.test2@gmail.com)에서 접속한 모습이다. 해당 계정은 이제 프로젝트 iamtest의 리소스를 확인 할 수 있다.

   

프로젝트 소유 계정으로 임의로 인스턴스 생성 후, VM인스턴스 페이지를 확인한 모습이다.

 

비교를 위해 뷰어 권한을 받은 계정으로 접속한 모습이다. 리소스를 변경할 수 있는 권한이 없어서 인스턴스 및 그룹 생성, SSH접속 등이 비활성화 되어있다.

 

임의로 생성한 VM의 상세페이지에서도 VM인스턴스에 대한 조작이 비활성화 되어있다. 이렇듯 리소스에 대한 정보 확인만 가능하다.

 

기본적인 역할 Owner, Editor, Viewer는 프로젝트 전체 리소스에 대해서 적용된다.

 

 

구글 클라우드에서는 앞서 설명한 것처럼 아래와 같이 서비스별로 세분화된 제어도 제공한다.

 

(이미지 출처: https://cloud.google.com/iam/docs/overview)

 

프로젝트 레벨에서의 권한제어를 각각의 서비스 모듈 별로 할 수 있게 확장된 것으로 볼 수 있으며, 이러한 서비스 모듈 별 세부적인 적용을 통해서

전체 프로젝트 리소스 관리의 부담을 줄일 수 있다.

 

자세한 내용은 https://cloud.google.com/iam/docs/를 참고

+ Recent posts