[GCP]AWS 사용자를 위한 Google Cloud 알아가기 — #1 계정(Account) 및 자원(Resource)

이정운 (Jungwoon Lee)
google-cloud-apac
Published in
12 min readAug 22, 2023

안녕하세요 이정운 입니다.

그동안 Google Cloud 관련 다양한 이야기를 진행했는데 이번에는 어떤 이야기를 할까 고민하다가 “AWS 사용자들을 위한 Google Cloud 알아가기”라는 주제로 AWS 에 익숙한 사용자들이 처음으로 Google Cloud 를 사용하게 됐을때 AWS 에서 익숙한 구조와 조금 다른점이나, 용어 차이 때문에 혼동되는 부분들이 있을텐데 이 부분을 한번 Google Cloud 초심자의 입장으로 다뤄보면 어떨까 생각이 들어 이번 이야기를 시작합니다.

그래서 처음으로 다뤄볼 부분은 Cloud 의 계정(Account) 과 리소스(Resource) 입니다. 리소스는 자원이라고 하기도 하며 이름 그대로 Cloud 의 실제 서비스가 이루어지는 솔루션이나 서비스 자체를 의미하고 AWS 입장으로는 EC2(VM), S3, Aurora 등이 다 리소스를 의미합니다. Google Cloud 도 이 부분은 동일하며 GCE(VM), GCS, Cloud SQL 등을 리소스라고 부릅니다. 이러한 리소스를 처음으로 이야기를 시작하는 것은 실제 사용자들이 Cloud 에서 만들고 사용하는 것은 바로 이 리소스이기 때문에 이해하기 쉬우며 해당 리소스들이 개념적으로 어떻게 구성되고 위치하는 가가 AWS 와 Google Cloud 간의 큰 차이가 있기 때문입니다.

해당 부분을 우선 살펴보고 그 다음으로 대규모 환경에서 관리와 제어 목적으로 사용되는 조직(Organization) 에 대한 AWS 와 Google Cloud 의 같은점, 차이를 살펴보려고 합니다. 그럼 “AWS 사용자들을 위한 Google Cloud 알아가기” 를 바로 시작해보도록 하겠습니다.

#1) 계정(Account) 과 리소스(Resource)

AWS 를 처음 가입해보신 분들은 아시겠지만 제일 처음 하는 일은 AWS 계정(Account) 을 만드는 일입니다. 그리고 EC2, S3 와 같은 자원을 계정에서 바로 만들 수 있는데 그 이유는 AWS 의 리소스들은 계정에 속하게 되기 때문입니다. 하단의 그림을 보시면 명확히 이해하시겠지만 처음으로 AWS 사용을 하기 위해서 AWS 계정을 만든 후에 계정에서 리소스를 만드는 것이 가능하다는 것은 다시 말해 리소스가 계정에 속한다는 의미입니다. (이상의 AWS 관련 내용은 아래 첨부된 링크상 article을 기반으로 하였습니다)

https://cloudonaut.io/aws-account-structure-think-twice-before-using-aws-organizations/

이와 다르게 Google Cloud 의 계정은 이름 그대로 사용자 계정으로서 사용자를 구분할 수 있고 권한을 제어할 수 있는 IAM 권한 제어의 목적으로 사용되며, AWS 처럼 실제 리소스를 직접 가질 수는 없습니다. 구조적으로 말씀드리면 처음 가입하실 때 계정이 필요하긴 하지만 자동으로 하나의 기본 프로젝트(Project) 가 만들어지게 되는 구조이며 계정은 그 프로젝트의 Owner 역할을 수행하게 되고 실제적으로 리소스를 만들고 소유하는 것은 프로젝트 입니다. (실제 계정은 Google account 면 되며 Google Cloud 가입시에 생성을 할 수도 있지만 미리 만들어 놓은 계정(예:Gmail 계정)을 연계해서 활용할 수도 있습니다. 또한, 하나의 계정에서 여러개의 프로젝트를 생성하는 것도 가능합니다.)

https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy

추신 #1) 참고로 Google Cloud 의 사용자 계정을 위해서는 반드시 Gmail 계정이 있어야 한다고 오해하시는 분들이 있는데 그것은 아니며 Google account 가 기본 조건이며 Cloud Identity 또는 Google Workspace 계정이 있어도 가능합니다. (예: 회사 메일이 있는 경우 해당 회사 메일을 Google account 로 만들수도 있음)

[GCP]Gmail id 없이 Google Cloud 사용하고 G Suite 없이 사용자, 그룹 관리 하기
https://medium.com/@jwlee98/gcp-gmail-id-%EC%97%86%EC%9D%B4-google-cloud-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B3%A0-g-suite-%EC%97%86%EC%9D%B4-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B7%B8%EB%A3%B9-%EA%B4%80%EB%A6%AC-%ED%95%98%EA%B8%B0-d2899730b781

이를 좀 더 AWS 와 구분되게 보시려면 하단의 그림이 잘 설명되어 있는데 리소스 계층 구조(Resource hierarchy)와는 별도로 사용자 계정이 존재하며 IAM 을 통해서 계층 구조에 적합하게 필요한 권한을 부여해서 활용하는 형태로 동작 합니다.(리소스 계층 구조에 대해서는 추후 설명하도록 하겠습니다.) 계정이 실제 사용되는 리소스와 분리되어 있고 해당 역할을 프로젝트가 수행한다고 보시면 됩니다.

https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy?hl=ko#link-with-g-suite-or-cloud-id-accounts

결국, AWS 는 계정이 리소스를 가지고 Google Cloud 는 프로젝트가 리소스를 가지고 있기 때문에 AWS 에서는 분리된 여러 환경을 만들기 위해서는 여러개의 계정을 만들어서 계정별로 리소스를 만들고 관리해야 하며(AWS 는 계정 기반), Google Cloud 에서 여러 환경을 만들려면 계정을 여러개 만들 필요는 없고, 하나의 계정에서도 프로젝트를 여러개 만들어서 프로젝트 별로 리소스를 만들면 됩니다. 다시 말씀드려, Google Cloud 에서 계정은 사용자 계정 그 자체로 활용되므로 하나의 계정만으로 여러 프로젝트들을 만드는 것이 가능하며 또는, 프로젝트의 IAM 메뉴에서 여러 계정을 초대해서 사용하는 형태로 작업도 가능합니다. (Google Cloud 는 프로젝트 기반)

다음으로 AWS 는 이러한 계정을 루트 사용자와 IAM 사용자로 구분합니다. 루트 사용자는 이름 그대로 관리 권한과 같이 거의 모든 권한을 가지고 있으며 일반적으로 루트 사용자에서 직접 리소스를 만들거나 사용하는 것을 권장하지는 않으며 IAM 사용자를 만들어서 필요한 권한을 부여해서 해당 사용자를 기반으로 사용하는 것을 권장합니다. IAM 사용자는 연결된 자격 증명 및 권한이 있는 IAM 의 리소스로서 자격 증명을 사용하여 AWS 요청을 하는 사람 또는 애플리케이션을 의미합니다. (애플리케이션에서 자격 증명을 요청하는 경우 이를 일반적으로 Service account 라고 합니다.) IAM 사용자는 제한된 권한을 가진 사용자로서 IAM 을 통해서 작업을 할 수 있도록 권한을 받은 사용자를 의미합니다.(이상의 AWS 관련 내용은 아래 첨부된 링크상 article을 기반으로 하였습니다)

AWS 계정 루트 사용자
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/id_root-user.html

Google Cloud 에서 계정은 AWS 와 같이 루트 사용자, IAM 사용자와 같이 완전히 분리된 구분을 가지고 있지는 않습니다. 사용자의 경우 IAM 권한에 따라서 사용자의 역할과 성격을 조절 할 수 있으며 필요한 경우 프로젝트에서 다른 사용자를 초대하는 것이 가능합니다. (반복해서 말씀드리지만, Google Cloud 는 프로젝트 기반이기 때문)

IAM basic and predefined roles reference
https://cloud.google.com/iam/docs/understanding-roles

예를 들어, Google Cloud 에 처음 가입한 경우 해당 사용자는 일반적으로 프로젝트에 대해서 Owner 라는 권한을 가지게 됩니다. Owner 의 경우 이름 그대로 소유자로서 프로젝트 내에서 모든 편집자 권한 및 모든 리소스에 대한 역할 및 관리 권한을 가지게 됩니다.(마치 AWS 루트 사용자처럼) 그러나 필요한 경우 다른 사용자를 초대해서 추가로 Owner 권한을 부여하는 것이 가능하며 필요한 다른 권한을(예: viewer) IAM 메뉴에서 부여해 줄 수 있습니다. 또는, Owner 권한이 필요 없다면 IAM 메뉴에서 권한 할당을 해제하는 것도 가능합니다. 즉, Google Cloud 의 사용자는 별도로 구분이 있지는 않으며 해당 사용자가 가진 IAM 권한을 통해서 구분된다라고 보시면 됩니다.

예시: Google Cloud 의 관리콘솔에서 여러 사용자에게 권한이 할당된 IAM 메뉴 화면

추가적으로, 권한 측면에서는 AWS 와 동일하게 VM 이나 리소스에 대한 권한을 부여하기 위해서 사용자가 아닌 Service account 를 생성할 수 있으며 사용자와 동일하게 취급되어 IAM 으로 권한 부여들이 가능합니다. 이렇게 권한이 부여된 Service account 는 VM 이나 리소스에 권한을 부여하기 위해서 별도로 key 를 생성하기 위해서 다운로드 할 필요는 없고 리소스에 첨부(attach) 하게 되면 해당 VM 이나 리소스가 Service account 가 가진 권한을 사용할 수 있게 됩니다.

Service accounts overview
https://cloud.google.com/iam/docs/service-account-overview

Service account 를 첨부 할 수 없는 On-prem 이나 타 클라우드에 대해서 권한 부여가 필요한 경우라면 Service account key 를 다운로드 하는 것 대신에 Workload Identity Federation 을 통해서 타사의 OIDC 나 SAML 2.0 기반으로 Identity Federation 이 가능하며 보안적으로 해당 방식을 권장합니다. (조금 쉽게 설명드리면 AWS 의 사용자를 기 매핑된 Google Cloud 의 권한 있는 사용자 인것처럼 동작하게 지원)

What is Workload Identity Federation?
https://youtu.be/4vajaXzHN08

AWS 와 Google Cloud 의 계정과 자원에 대해서 비교해서 설명드렸는데 잘 아해가 되시나요? 내용이 조금 길어지고 있어서 다음으로 이야기를 드릴 조직에 대한 부분은 “[GCP]AWS 사용자를 위한 Google Cloud 알아가기 — #2 조직(Organization)” 에서 이어서 이야기를 드리도록 하겠습니다.

Disclaimer: 본 글의 작성자는 Google 소속이지만, 본 글에 작성자 개인적 견해가 반영된 것으로서, 본 글은 Google 을 대변하지 않으며, Google의 공식적 입장이 아님을 밝힙니다.

참고 자료 #1
AWS Account Structure: Think twice before using AWS Organizations
https://cloudonaut.io/aws-account-structure-think-twice-before-using-aws-organizations/

Resource hierarchy
https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy

[GCP]Gmail id 없이 Google Cloud 사용하고 G Suite 없이 사용자, 그룹 관리 하기
https://medium.com/@jwlee98/gcp-gmail-id-%EC%97%86%EC%9D%B4-google-cloud-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B3%A0-g-suite-%EC%97%86%EC%9D%B4-%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B7%B8%EB%A3%B9-%EA%B4%80%EB%A6%AC-%ED%95%98%EA%B8%B0-d2899730b781

Security Best Practices of AWS Accounts
https://medium.com/aws-serverless-microservices-with-patterns-best/security-best-practices-of-aws-accounts-e71321478614

IAM basic and predefined roles reference
https://cloud.google.com/iam/docs/understanding-roles

Service accounts overview
https://cloud.google.com/iam/docs/service-account-overview

--

--

이정운 (Jungwoon Lee)
google-cloud-apac

Technical engineer who dreams better future. (These thoughts are my own personal opinions, and do not reflect or represent Google’s opinions or plans.)