리소스 계층 구조

이 페이지에서는 Google Cloud 리소스 계층 구조와 Resource Manager로 관리할 수 있는 리소스를 설명합니다.

Google Cloud 리소스 계층 구조의 용도는 두 가지입니다.

  • 리소스 수명 주기를 계층 구조의 직속 상위 요소에 결합하는 소유권 계층 구조 제공
  • 액세스 제어 및 조직 정책의 연결 지점 및 상속 제공

비유적으로 말하면 Google Cloud 리소스 계층 구조는 항목을 계층적으로 구성하고 관리하는 방식으로, 기존 운영체제의 파일 시스템과 유사합니다. 각 리소스는 단 하나의 상위 요소만 가집니다. 리소스의 이러한 계층적 조직을 사용하면 상위 리소스에서 액세스 제어 정책 및 구성 설정을 설정할 수 있고, 하위 리소스에 해당 정책 및 ID 및 액세스 관리(IAM) 설정이 상속됩니다.

Google Cloud 리소스 계층 구조 세부정보

최하위 수준에 있는 리소스가 모든 Google Cloud 서비스를 구성하는 기본 구성요소입니다. Compute Engine 가상 머신(VM), Pub/Sub 주제, Cloud Storage 버킷, App Engine 인스턴스가 리소스의 예시에 해당합니다. 프로젝트만 이러한 모든 하위 수준 리소스의 상위 요소가 될 수 있으며, Google Cloud 리소스 계층 구조의 첫 번째 그룹화 메커니즘을 나타냅니다.

G Suite 및 Cloud ID 고객은 중앙 집중식 가시성 및 제어와 같은 이점과 폴더와 같은 추가 그룹화 메커니즘을 제공하는 Google Cloud 리소스 계층 구조의 추가 기능에 액세스할 수 있습니다. Cloud ID 개요에서 자세히 알아보세요.

Google Cloud 리소스는 계층적으로 구성됩니다. 계층 구조 하단부터 프로젝트가 첫 번째 수준이고 여기에 다른 리소스가 포함됩니다. 조직을 제외한 모든 리소스에는 정확히 한 개의 상위 요소가 있습니다. 조직은 계층 구조의 최상위 요소이며 상위 요소가 없습니다.

조직 리소스는 Google Cloud 리소스 계층 구조의 루트 노드이며, 조직에 속하는 모든 리소스는 조직 노드 아래에 그룹화됩니다. 이는 조직에 속하는 모든 리소스에 대한 중앙 집중식 가시성 및 제어를 제공합니다.

폴더는 프로젝트 기반의 추가 그룹화 메커니즘입니다. 폴더를 사용하려면 선행 조건으로 조직 리소스가 있어야 합니다. 폴더와 프로젝트는 조직 리소스 아래에서 모두 매핑됩니다.

특히 조직 리소스와 폴더를 포함하는 가장 완벽한 형태의 Google Cloud 리소스 계층 구조를 사용하면 회사에서 조직을 Google Cloud에 매핑할 수 있고 액세스 관리 정책(IAM) 및 조직 정책의 논리적 연결 지점을 제공할 수 있습니다. IAM 정책과 조직 정책은 계층 구조를 통해 상속되며, 계층 구조의 각 노드에서 유효 정책은 노드에서 직접 적용되는 정책과 상위 항목에서 상속된 정책의 결과입니다.

아래 다이어그램은 완벽한 형태의 Google Cloud 리소스 계층 구조의 대표적인 예시입니다.

리소스 계층 구조

조직 리소스

조직 리소스는 조직(예: 회사)을 나타내며, Google Cloud 리소스 계층 구조의 루트 노드입니다. 조직 리소스는 프로젝트 리소스와 폴더의 계층적 상위 항목입니다. 조직 리소스에 적용된 IAM 액세스 제어 정책은 조직의 모든 리소스에 대한 계층 구조 전체에 적용됩니다.

Google Cloud 사용자에게는 조직 리소스가 필요 없지만 조직 리소스가 없으면 Resource Manager의 일부 기능을 사용할 수 없습니다. 조직 리소스는 G Suite 또는 Cloud ID 계정과 긴밀하게 연결됩니다. G Suite 또는 Cloud ID 계정을 가진 사용자가 Google Cloud 프로젝트를 만들면 조직 리소스가 자동으로 프로비저닝됩니다.

G Suite 또는 Cloud ID 계정 하나에는 조직 하나만 프로비저닝됩니다. 한 도메인에 조직 리소스가 생성되면 계정 도메인의 구성원이 만든 모든 Google Cloud 프로젝트는 기본적으로 조직 리소스에 속합니다. 관리형 사용자가 프로젝트를 만들 경우 프로젝트가 일부 조직에 속해야 합니다. 사용자가 조직을 지정하고 올바른 권한을 가지고 있으면 프로젝트가 지정된 조직에 할당됩니다. 그렇지 않으면 사용자와 연결된 조직에 기본 할당됩니다. 조직과 연결되지 않은 프로젝트를 만들 수 없습니다.

편의상 G Suite는 G Suite 사용자와 Cloud ID 사용자 모두를 의미합니다.

G Suite 또는 Cloud ID 계정은 회사를 나타내며 조직 리소스에 대한 액세스 권한을 갖기 위한 기본 요건입니다. 이는 Google Cloud 컨텍스트에서 ID 관리, 복구 메커니즘, 소유권, 수명 주기 관리 기능을 제공합니다. 다음 그림은 G Suite 계정, Cloud ID, Google Cloud 리소스 계층 구조 간의 연결을 보여줍니다.

G Suite 조직


G Suite 최고 관리자는 복구 시 도메인 소유권을 확인하고 연락을 담당합니다. 이러한 이유로 G Suite 최고 관리자에게는 기본적으로 IAM 역할을 할당할 수 있는 권한이 부여됩니다. Google Cloud와 관련된 G Suite 최고 관리자의 기본 업무는 조직 관리자 IAM 역할을 도메인의 적절한 사용자에게 할당하는 것입니다. 이렇게 하면 일반적으로 사용자가 원하는 것처럼 G Suite 관리 책임과 Google Cloud 관리 책임을 구분할 수 있습니다.

조직 리소스의 이점

조직 리소스가 있으면 프로젝트가 프로젝트를 만든 직원이 아니라 조직에 속하게 됩니다. 즉, 직원이 퇴사해도 프로젝트가 더 이상 삭제되지 않습니다. 대신 Google Cloud에서 조직의 수명 주기를 따릅니다.

또한 조직 관리자는 모든 리소스를 중앙에서 제어할 수 있습니다. 또한 회사의 모든 프로젝트를 보고 관리할 수 있습니다. 이 시행으로 인해 더 이상 비공식 프로젝트 또는 확인되지 않은 관리자가 있을 수 없습니다.

또한 조직 리소스의 모든 프로젝트 및 폴더에 상속되는 역할을 조직 수준에서 부여할 수 있습니다. 예를 들어 조직 수준에서 네트워크 관리자 역할을 네트워킹팀에 부여할 수 있습니다. 그러면 모든 개별 프로젝트에 대한 역할을 부여하지 않고도 회사의 모든 프로젝트에서 모든 네트워크를 관리하도록 할 수 있습니다.

Resource Manager API에 의해 노출되는 조직 리소스는 다음으로 구성됩니다.

  • 조직의 고유한 식별자인 조직 ID
  • G Suite 또는 Cloud ID의 기본 도메인 이름에서 생성되는 표시 이름
  • 조직 생성 시간
  • 조직의 마지막 수정 시간
  • 조직 소유자. 소유자는 조직 리소스를 만들 때 지정됩니다. 소유자를 설정한 후에는 변경할 수 없습니다. Directory API에서 지정되는 G Suite 고객 ID입니다.

다음 코드 스니펫은 조직 리소스의 구조를 보여줍니다.

{
  "displayName": "myorganization",
  "organizationId":"34739118321",
  "createTime": "2016-01-07T21:59:43.314Z"
  "owner": {
    "directoryCustomerId": "C012BA234"
   }
}

새로 만든 조직 리소스의 초기 IAM 정책은 프로젝트 생성자 및 결제 계정 생성자 역할을 전체 G Suite 도메인에 부여합니다. 즉, 사용자는 조직이 있기 전에 했던 것처럼 프로젝트와 결제 계정을 계속 만들 수 있습니다. 조직 리소스를 만들 때 다른 리소스는 만들어지지 않습니다.

폴더 리소스

폴더 리소스는 프로젝트 사이에서 추가 그룹화 메커니즘과 격리 경계를 제공합니다. 이는 조직 내에서 하위 조직으로 보일 수 있습니다. 폴더는 회사 내의 다양한 법인, 부서, 팀을 모델링하는 데 사용할 수 있습니다. 예를 들어 폴더의 첫 번째 수준을 사용하여 조직의 주요 부서를 나타낼 수 있습니다. 폴더는 프로젝트와 다른 폴더를 포함할 수 있으므로 각 폴더는 다른 팀을 나타내는 다른 하위 폴더를 포함할 수 있습니다. 각 팀 폴더는 다른 애플리케이션을 나타내는 추가적인 하위 폴더를 포함할 수 있습니다. 폴더 사용에 대한 자세한 내용은 폴더 만들기 및 관리를 참조하세요.

조직에 폴더 리소스가 있고 적절한 보기 권한이 있으면 Google Cloud Console에서 폴더를 볼 수 있습니다. 자세한 내용은 폴더 및 프로젝트 보기 또는 나열을 참조하세요.

폴더를 사용하여 관리 권한을 위임할 수 있으므로 부서 책임자에게 해당 부서에 속하는 모든 Google Cloud 리소스의 완전한 소유권을 부여할 수 있습니다. 이와 유사하게 리소스에 대한 액세스 권한은 폴더별로 제한할 수 있으므로 한 부서의 사용자는 해당 폴더 내의 클라우드 리소스만 액세스하고 만들 수 있습니다.

다음 코드 스니펫은 폴더의 구조를 보여줍니다.

{
 "name" : "folders/my-folder",
 "parent" : "organizations/my-organization",
 "displayName" : "Engineering",
 "lifecycleState" : "ACTIVE",
 "createTime": "2016-01-07T21:59:43.314Z"
}

조직 및 프로젝트와 마찬가지로 폴더는 IAM 및 조직 정책에 대한 정책 상속 지점의 역할을 합니다. 폴더에 부여된 IAM 역할은 해당 폴더에 포함된 모든 프로젝트 및 폴더에 자동으로 상속됩니다.

프로젝트 리소스

프로젝트 리소스는 기본 수준의 구성 항목입니다. 조직 및 폴더는 여러 프로젝트를 포함할 수 있습니다. 프로젝트는 Google Cloud를 사용하는 데 필요하며, 모든 Google Cloud 서비스 생성, 사용 설정, 사용, API 관리, 결제 사용 설정, 공동작업자 추가 및 삭제, 권한 관리를 위한 기반을 형성합니다.

모든 프로젝트는 다음으로 구성됩니다.

  • 식별자 2개:
    1. 프로젝트의 고유한 식별자인 프로젝트 ID
    2. 프로젝트를 만들 때 자동으로 할당되는 프로젝트 번호. 읽기 전용입니다.
  • 변경 가능한 표시 이름 1개
  • 프로젝트의 수명 주기 상태(예: ACTIVE 또는 DELETE_REQUESTED)
  • 프로젝트를 필터링하는 데 사용할 수 있는 라벨 컬렉션
  • 프로젝트가 생성된 시간

다음 코드 스니펫은 프로젝트의 구조를 보여줍니다.

{
  "name": "myproject",
  "projectId": "my-project-123",
  "labels":
   {
     "my-label": "prod"
   },
   "projectNumber": "464036093014",
   "lifecycleState": "ACTIVE",
   "createTime": "2016-01-07T21:59:43.314Z"
}

대부분의 Google Cloud 리소스와 상호작용하려면 모든 요청에 대해 프로젝트 식별 정보를 제공해야 합니다. 프로젝트는 프로젝트 ID 또는 프로젝트 번호(코드 스니펫의 projectIdprojectNumber)로 식별할 수 있습니다.

프로젝트 ID는 프로젝트를 만들 때 선택한 커스텀 이름입니다. 프로젝트가 필요한 API를 활성화하면 프로젝트 ID를 사용하여 프로젝트를 만들거나 프로젝트를 선택하라는 메시지가 표시됩니다. UI에 표시되는 name 문자열은 프로젝트 ID와 동일하지 않습니다.

프로젝트 번호는 Google Cloud에 의해 자동으로 생성됩니다. 프로젝트 ID와 프로젝트 번호 모두 Google Cloud Console의 프로젝트 대시보드에서 확인할 수 있습니다. 프로젝트에 대한 프로젝트 식별자 및 기타 관리 작업을 가져오는 방법은 프로젝트 만들기 및 관리를 참조하세요.

새로 만든 프로젝트 리소스의 초기 IAM 정책은 소유자 역할을 프로젝트 생성자에게 부여합니다.

IAM 정책 상속

Google Cloud는 사용자가 특정 Google Cloud 리소스에 대한 세부적인 액세스 권한을 부여하고 다른 리소스에 대한 무단 액세스를 방지할 수 있는 IAM을 제공합니다. IAM을 사용하면 리소스에 IAM 정책을 설정하여 어떠한 리소스에 대해 누구(사용자)에게 어떠한 액세스 권한(역할)이 있는지 제어할 수 있습니다.

IAM 정책은 조직 수준, 폴더 수준, 프로젝트 수준, 리소스 수준(일부 경우)에서 설정할 수 있습니다. 리소스는 상위 노드의 정책을 상속합니다. 조직 수준에서 정책을 설정하면 모든 하위 폴더로 정책이 상속되며, 프로젝트 수준에서 정책을 설정하면 모든 하위 리소스로 정책이 상속됩니다.

리소스의 유효 정책은 해당 리소스에 설정된 정책과 상위 리소스에서 상속된 정책의 합집합입니다. 이 상속은 하위 수준으로 전이됩니다. 다시 말해 리소스는 프로젝트에서 정책을 상속하고, 프로젝트는 조직에서 정책을 상속합니다. 따라서 조직 수준 정책은 리소스 수준에도 적용됩니다.

리소스 계층 구조


예를 들어 위의 리소스 계층 구조 다이어그램에서 프로젝트 편집자 역할을 bob@example.com에 부여하는 정책을 폴더 'Dept Y'에 설정하면 Bob은 프로젝트 'Dev GCP Project', 'Test GCP Project', 'Production GCP Project'에 대한 편집자 역할을 갖게 됩니다. 반대로 프로젝트 'Test GCP Project'에 대한 인스턴스 관리자 역할을 alice@example.com에 할당하면 Alice는 프로젝트의 Compute Engine 인스턴스만 관리할 수 있습니다.

역할은 항상 상속되며 리소스 계층 구조의 상위 수준에서 부여된 하위 수준 리소스에 대한 권한을 명시적으로 삭제할 수 없습니다. 위 예시의 'Test GCP Project'에서 Bob의 프로젝트 편집자 역할을 삭제하더라도 Bob은 이 역할을 여전히 'Dept Y' 폴더에서 상속받으므로 'Test GCP Project'에 대한 이 역할의 권한을 여전히 갖게 됩니다.

IAM 정책 계층 구조는 Google Cloud 리소스 계층 구조와 동일한 경로를 따릅니다. 리소스 계층 구조를 변경하면 정책 계층 구조도 변경됩니다. 예를 들어 프로젝트를 조직으로 이동하면 프로젝트의 IAM 정책이 해당 조직의 IAM 정책을 상속하도록 업데이트됩니다. 마찬가지로 프로젝트를 폴더 간에 이동하면 상속된 권한이 변경됩니다. 원래의 상위 요소에서 프로젝트에 상속된 권한은 프로젝트가 새로운 폴더로 이동할 때 상실됩니다. 대상 폴더에서 설정된 권한은 이동될 때도 프로젝트에 상속됩니다.