IAM (Identity and Access Management)
[IAM]
: 관리자는 특정 리소스에 대해 조치를 취할 수 있는 사람을 승인할 수 있다.
1. Who
- Google Account, Google Group, Service Account, entire G Suite, 또는 Cloud Identity Domain
(1) Google account or Cloud Identity user
(2) Service account
(3) Google group
(4) Cloud Identity or G Suite Domain
2. Can do what
IAM Role 에 따라 정의, IAM Role은 Permission들의 모음.
- 대부분의 경우 의미 있는 작업을 수행하려면 둘 이상의 권한이 필요.
예를 들어, 프로젝트에서 인스턴스를 관리하려면 생성, 삭제, 시작, 중지 및 변경한다.
따라서, 권한은 보다 쉽게 관리할 수 있는 역할로 그룹화된다.
(1) Primitive Role
: 프로젝트 안의 모든 GCP 서비스들에 적용된다. 이는 프로젝트 안의 모든 리소스들에 영향을 끼친다.
- 민감한 데이터가 포함된 프로젝트에서 여러 사람이 일하는 경우, Role을 주의해서 나누어야 한다.
Compute Engine은 미리 정의된 역할 집합를 제공한다. 사용자는 주어진 프로젝트의 Compute Engine 리소스, 폴더 또는 전체 조직에 적용할 수 있다.
[IAN Roles]
1. Compute Engine InstanceAdmin
: 해당 역할은 가상 머신에서 특정 작업 집합을 수행한다.
- 인스턴스의 삭제, 시작과 중지, 인스턴스 configuration 읽기 및 변경 등
이 예에서 특정 Google 그룹의 모든 사용자들은 역할을 갖고 있다. 그리고 그들은 project_a의 모든 가상 머신에 대한 역할을 갖고 있다.
많은 회사에서 조직의 각 개인은 자신의 업무를 수행하는 데에 필요한 최소한의 권한을 가지고 있다.
2. Compute Engine InstanceOperator
: Compute Engine과 가상 머신들을 시작하고 중지할 수 있다. 그러나, 인스턴스들을 Configure 할 수는 없다.
사용자 지정 역할을 사용하면 InstanceOperator 이상의 역할을 할 수 있다. 하지만, 주의 사항이 있다.
(사용자 지정 역할)
- 사용자들의 권한을 관리해야 할 필요가 있다.
- 사용자 지정 역할은 프로젝트와 조직 단위 레벨에서만 사용된다. 폴더 수준에서는 사용할 수 없다.
당신이 사람이 아닌 계정에 Compute Engine 가상 머신에 대한 권한을 부여하고자 한다면 어떻게 해야하는가?
: 서비스 계정(Service account)을 사용해라.
3. Service Account.
예를 들어, 당신은 Google Cloud Storage에 데이터를 저장해야 하는 가상 머신에서 동작 중인 응용 프로그램이 있다. 그러나, 당신은 인터넷에 있는 누구든 지 그 데이터에 접속할 수 있도록 하고 싶지 않다. 오직 가상 머신만 데이터에 접근할 수 있도록 하고 싶다.
이러한 경우, Cloud Storage로 인증(Authenticate)하는 서비스 계정(Service account)을 생성한다.
- 서비스 계정은 이메일 주소로 이름이 지정된다. 하지만 비밀번호 대신 리소스에 액세스하기 위한 암호화 키를 사용한다. 이 간단한 예에서 서비스 계정에 Compute Engine의 InstanceAdmin 역할이 부여되었다. 이렇게 하면 해당 서비스 계정으로 VM에서 실행되는 애플리케이션을 만들 수 있다.
서비스 계정도 관리가 필요하다. 예를 들어, Alice가 특정 서비스 계정으로 작동 할 수 있는 항목을 관리해야 할 필요가 있다. 반면에, Bob은 단순히 그 항목을 봐야할 필요가 있을 때, Service Account 도 하나의 리소스이기 때문에 자체적인 자신의 IAM 정책을 가질 수 있다. 즉, 서비스 계정에 대하여 Alice에게는 Editor 권한을 주고 Bob에게는 Viewer 권한을 주면 된다. 이는 GCP 리소스에 대한 역할을 부여하는 것과 같다.
관리자는 프로젝트 안의 다양한 가상 머신(VM)의 그룹들에 대하여 다른 ID를 부여할 수 있다. 이는 각 그룹에 대해 서로 다른 권한을 손쉽게 관리할 수 있도록 해준다. 권한은 변경될 수 있다. VM을 다시 만들 필요는 없다.
- 해당 예시는, 잘못 프로그래밍된 응용 프로그램들 혹은 손상된 가상 머신의 잠재적인 영향을 줄일 수 있다.
[ Questions ]