도메인별 ID 제한

Resource Manager는 조직 정책에서 도메인을 기반으로 리소스 공유를 제한하는 데 사용할 수 있는 도메인 제한 제약조건을 제공합니다. 이 제약조건을 사용하면 Cloud Identity and Access Management 정책에서 사용할 수 있는 ID 집합을 제한할 수 있습니다.

조직 정책은 이 제약조건을 사용하여 리소스 공유를 하나 이상의 지정된 G Suite 도메인 집합으로 제한할 수 있고, 폴더 또는 프로젝트별로 예외를 부여할 수 있습니다.

도메인 제한 제약조건은 소급 적용되지 않습니다. 도메인 제한이 설정되면 이전 변경사항이 아니라 해당 시점 이후의 Cloud IAM 정책 변경사항에 적용됩니다.

examplepetstore.com과 altostrat.com과 같은 두 개의 관련 조직을 예시로 들어보겠습니다. altostrat.com에서 examplepetstore.com ID에 Cloud IAM 역할을 부여했습니다. 이후 도메인별로 ID를 제한하고 altostrat.com에서 도메인 제한 제약조건을 적용한 조직 정책을 구현했습니다. 이 경우 기존 examplepetstore.com ID는 altostrat.com에서 액세스 권한을 손실하지 않습니다. 이 시점에서 Cloud IAM 역할은 altostrat.com 도메인의 ID에만 부여할 수 있었습니다.

도메인 제한 제약조건은 iam.allowedPolicyMemberDomains 목록 제약조건을 기반으로 합니다.

이 제약조건이 G Suite 도메인에서 설정되면 해당 도메인에 속하는 모든 ID에 영향을 미칩니다. 여기에는 Google Cloud Console이 아니라 G Suite 콘솔에서 관리하는 사용자 계정이 포함됩니다.

조직 정책 설정

도메인 제한 제약조건은 일종의 목록 제약조건입니다. G Suite 고객 ID를 도메인 제한 제약조건의 allowed_values 목록에서 추가하거나 삭제할 수 있습니다. 해당 G Suite 계정과 연결된 모든 도메인은 조직 정책의 영향을 받습니다.

이 제약조건을 설정하려면 조직 정책을 수정할 권한이 있어야 합니다. 예를 들어 resourcemanager.organizationAdmin 역할은 조직 정책 제약조건을 설정할 권한이 있습니다. 조직 수준에서 정책을 관리하는 방법에 대해서는 제약조건 사용 페이지에서 자세히 알아보세요.

콘솔

도메인 제한 제약조건을 포함하는 조직 정책을 설정하는 방법은 다음과 같습니다.

  1. Google Cloud Console의 조직 정책 페이지로 이동합니다.
    조직 정책 페이지로 이동
  2. 선택을 클릭합니다.
  3. 정책을 설정할 조직을 선택합니다.
  4. 도메인 제약 공유를 클릭합니다.
  5. 수정 버튼을 클릭합니다.
  6. 적용 대상에서 맞춤설정을 선택합니다.
  7. 정책 값에서 커스텀을 선택합니다.
  8. G Suite 고객 ID정책 값 입력란에 입력한 다음 Enter(입력)를 누릅니다. 이 방법으로 여러 ID를 입력할 수 있습니다.
  9. 저장을 클릭합니다. 정책이 업데이트되었음을 확인하는 알림이 나타납니다.

gcloud

정책은 gcloud 명령줄 도구를 통해 설정할 수 있습니다. 도메인 제한 제약조건을 포함하는 정책을 만들려면 다음 명령어를 실행하세요.

gcloud alpha resource-manager org-policies allow \
    --organization 'ORGANIZATION_ID' \
    iam.allowedPolicyMemberDomains 'DOMAIN_ID_1' \
    'DOMAIN_ID_2'

각 항목의 의미는 다음과 같습니다.

조직 정책의 제약조건을 사용하는 방법은 제약조건 사용을 참조하세요.

조직 정책 예

다음 코드 스니펫은 도메인 제한 제약조건을 포함하는 조직 정책을 보여줍니다.

resource: "organizations/842463781240"
policy {
  constraint: "constraints/iam.allowedPolicyMemberDomains"
  etag: "\a\005L\252\122\321\946\334"
  list_policy {
  allowed_values: "C03xgje4y"
  allowed_values: "C03g5e3bc"
  allowed_values: "C03t213bc"
  }
}

allowed_values는 G Suite 고객 ID(예: C03xgje4y)입니다. 이 조직 정책이 적용되면 allowed_values 목록에서 G Suite 도메인에 속하는 ID만 Cloud IAM 정책에 허용됩니다. G Suite 사용자 및 그룹은 해당 G Suite 도메인에 속해야 하며, Cloud IAM 서비스 계정은 해당 G Suite 도메인과 연결된 조직 리소스의 하위 항목이어야 합니다.

예를 들어 회사의 G Suite 고객 ID만으로 조직 정책을 만든 경우, 이 시점부터는 해당 도메인의 구성원만 Cloud IAM 정책에 추가할 수 있습니다.

오류 메시지 예

allowed_values 목록에 포함되지 않은 구성원을 추가하여 도메인 제한 조직 제약조건을 위반할 경우 작업이 실패하고 오류 메시지가 표시됩니다.

Console

Console 스크린샷

gcloud

ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION: One or
more users in the policy do not belong to a permitted customer.

G Suite 고객 ID 검색

도메인 제한 제약조건에 사용되는 G Suite 고객 ID는 두 가지 방법으로 얻을 수 있습니다.

gcloud

gcloud organizations list 명령어를 사용하면 resourcemanager.organizations.get 권한이 있는 모든 조직을 볼 수 있습니다.

gcloud alpha organizations list

이 명령어는 DISPLAY_NAME, ID(조직 ID), DIRECTORY_CUSTOMER_ID를 반환합니다. G Suite 고객 ID는 DIRECTORY_CUSTOMER_ID입니다.

API

G Suite 디렉터리 API를 사용하면 G Suite 고객 ID를 검색할 수 있습니다.

  1. https://www.googleapis.com/auth/admin.directory.customer.readonly 범위용 OAuth 액세스 토큰을 가져옵니다.
  2. 다음 명령어를 실행하여 G Suite 디렉터리 API를 쿼리합니다.

    curl -# -X GET "https://www.googleapis.com/admin/directory/v1/customers/customerKey" \
    -H "Authorization: Bearer $access_token" -H "Content-Type: application/json"
    

이 명령어는 고객 정보를 포함하는 JSON 응답을 반환합니다. G Suite 고객 ID는 id입니다.

하위 도메인 제한

도메인 제한 제약조건은 지정된 G Suite 고객 ID와 연결된 모든 도메인에 대한 액세스를 제한하여 작동합니다. 모든 G Suite 계정에는 정확하게 하나의 기본 도메인과 0개 이상의 보조 도메인이 있습니다. G Suite 고객 ID와 연결된 모든 도메인에는 제약조건이 적용됩니다.

도메인 제한 제약조건을 리소스에 적용하면 리소스 계층 구조에서 해당 리소스와 종속 항목에 액세스할 수 있는 기본 도메인과 모든 보조 도메인을 제어합니다.

공통된 G Suite 도메인 및 하위 도메인에 대한 예는 아래 표를 참조하세요.

기본 도메인 하위 도메인 도메인 제한 제약조건 user@sub.domain.com 허용 여부
domain.com 없음 허용: domain.com 아니요
domain.com sub.domain.com 허용: domain.com
domain.com sub.domain.com Allow: sub.domain.com
sub.domain.com domain.com Allow: sub.domain.com
sub.domain.com 없음 Allow: sub.domain.com

두 도메인 간에 도메인 제한 제약조건 액세스를 구분하려면 각 도메인을 다른 G Suite 계정과 연결해야 합니다. 각 G Suite 계정은 조직 노드와 연결되며, 자체 조직 정책을 적용할 수 있습니다. 이렇게 하면 세부적인 액세스 제어를 위해 domain.com을 하나의 G Suite 계정과 연결할 수 있고 sub.domain.com을 다른 계정과 연결할 수 있습니다. 자세한 내용은 여러 조직 관리를 참조하세요.

알려진 문제 해결

조직 정책은 소급 적용되지 않습니다. 강제 적용된 제약조건을 위반하는 리소스 계층 구조를 강제로 변경해야 하는 경우 조직 정책을 사용 중지하고 변경한 다음 다시 조직 정책을 사용 설정하면 됩니다.

다음 섹션에서는 이 제약조건이 적용될 때 발생할 수 있는 서비스의 알려진 문제를 설명합니다.

공개 데이터 공유

BigQuery, Cloud Functions, Cloud Run, Cloud Storage, Pub/Sub와 같은 일부 Google Cloud 제품은 공개 데이터 공유를 지원합니다. 조직 정책에서 도메인 제한 공유 제약조건을 적용하면 공개 데이터 공유가 차단됩니다.

데이터를 공개적으로 공유하려면 공유하려는 데이터가 있는 프로젝트 리소스에 대해 일시적으로 도메인 제한 공유 제약조건을 사용 중지합니다. 리소스를 공개적으로 공유한 후 도메인 제한 공유 제약조건을 다시 사용 설정할 수 있습니다.

Cloud Billing 내보내기 서비스 계정

이 제약조건이 사용 설정된 상태에서는 버킷으로 결제 내보내기를 사용할 수 없습니다. 결제 내보내기에 사용되는 버킷에는 이 제약조건을 사용하지 마세요.

Cloud Billing 내보내기 서비스 계정 이메일 주소는 509219875288-kscf0cheafmf4f6tp1auij5me8qakbin@developer.gserviceaccount.com입니다.

Cloud Composer

Cloud Composer의 도메인 제한 공유는 현재 베타 버전입니다. 도메인 제한 공유 정책을 사용 설정한 경우 Cloud Composer 환경을 만들 때 베타 API를 사용해야 합니다. 베타 API를 사용하여 Cloud Composer 환경을 배포하는 방법을 알아보려면 베타 기능 지원을 참조하세요.

스토리지 액세스 로깅 사용 설정

사용 설정하면 도메인 제한 제약조건으로 인해 조직 정책에서 특별히 허용되지 않은 도메인이 차단됩니다. 이렇게 하면 Google 서비스 계정 액세스 권한도 부여되지 않습니다. 도메인 제한 제약조건이 적용된 Cloud Storage 버킷에 스토리지 액세스 로깅을 설정하는 방법은 다음과 같습니다.

  1. 도메인 제한 제약조건을 포함하는 조직 정책을 삭제합니다.

  2. 해당 버킷에 대한 cloud-storage-analytics@google.com WRITE 액세스 권한을 부여합니다.

  3. 도메인 제한 제약조건으로 조직 정책을 다시 구현합니다.

계정 액세스 강제 적용

도메인 제약조건을 위반하여 프로젝트에 대한 계정 액세스를 강제로 적용해야 하는 경우 다음 방법을 사용하세요.

  1. 도메인 제한 제약조건을 포함하는 조직 정책을 삭제합니다.

  2. 프로젝트에 대한 액세스 권한을 계정에 부여합니다.

  3. 도메인 제한 제약조건으로 조직 정책을 다시 구현합니다.

Google 그룹을 허용 목록에 추가할 수도 있습니다.

  1. 허용 도메인 내에 Google 그룹을 만듭니다.

  2. G Suite 관리자 패널을 사용하여 해당 그룹에 대한 도메인 제한을 해제합니다.

  3. 서비스 계정을 그룹에 추가합니다.

  4. 도메인 제한 제약조건으로 조직 정책을 다시 구현합니다.

  5. Cloud IAM 정책에서 Google 그룹에 대한 액세스 권한을 부여합니다.