태그를 사용한 조직 정책 설정

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

태그를 사용하면 리소스에 특정 태그가 있는지 여부에 따라 조건부로 정책을 허용하거나 거부할 수 있습니다. 태그 및 조직 정책의 조건부 적용을 사용하면 계층 구조 리소스에 대한 중앙 집중식 제어가 가능합니다.

시작하기 전에

태그의 정의와 작동 방식에 대한 자세한 내용은 태그 개요를 참조하세요.

태그를 사용하는 방법에 대한 자세한 안내는 태그 만들기 및 관리를 참조하세요.

태그를 사용한 조직 정책 설정

태그를 사용하여 조직 정책을 적용할 위치를 결정하려면 조직 정책 YAML 파일에 조건을 지정해야 합니다. 조건을 특정 태그 키-값 쌍과 일치하도록 설정할 수 있습니다. 이때 특정 태그 값을 적용할 조직 정책에 설정해야 합니다.

태그는 조직 리소스, 폴더 리소스, 프로젝트 리소스에 대한 조직 정책에 의해서만 평가됩니다. 서비스 리소스에 연결된 모든 태그는 조직 정책 제약조건에 의해 무시됩니다.

목록 정책 예시

다음 예시에서는 gcp.resourceLocations 제약조건을 적용하는 조직 정책 파일을 설정하는 방법을 보여줍니다. 이 조직 정책에서는 동일한 정책 파일 내에 설정된 조건부 값과 비조건부 값을 모두 사용합니다.

Console

조직 정책을 설정하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 조직 정책 페이지를 엽니다.

    조직 정책 페이지 열기

  2. 페이지 상단의 프로젝트 선택기를 선택합니다.

  3. 프로젝트 선택 도구에서 조직 정책을 설정할 프로젝트를 선택합니다.

  4. 조직 정책 페이지의 목록에서 제약조건을 선택합니다. 해당 제약조건의 정책 세부정보 페이지가 표시되어야 합니다.

  5. 이 리소스의 조직 정책을 맞춤설정하려면 수정을 클릭합니다.

  6. 수정 페이지에서 맞춤설정을 선택합니다.

  7. 정책 시행에서 시행 옵션을 선택합니다.

    • 조직 정책을 병합하고 평가하려면 상위 요소와 병합을 선택합니다. 상속과 리소스 계층 구조에 대한 자세한 내용은 계층 구조 평가 이해를 참조하세요.

    • 상위 리소스에서 상속된 정책을 재정의하려면 바꾸기를 선택합니다.

  8. 규칙 추가를 클릭합니다.

  9. 정책 값에서 이 조직 정책을 통해 모든 값을 허용할지 아니면 모든 값을 거부할지 또는 커스텀 값 집합을 지정해야 할지를 선택합니다.

    • 정책이 수락하는 특정 값은 정책이 적용되는 서비스에 따라 다릅니다. 제약조건 및 제약조건이 수락하는 값 목록은 조직 정책 제약조건을 참조하세요.
  10. 필요에 따라 태그로 조직 정책을 조건부로 만들려면 조건 추가를 클릭합니다.

    1. 제목 필드에 조건의 이름을 입력합니다.

    2. 설명 필드에 조건 설명을 입력합니다. 설명에서는 필요한 태그와 태그가 리소스에 미치는 영향에 대한 컨텍스트를 제공합니다.

    3. 조건 작성 도구를 사용하여 제약조건이 적용되도록 특정 태그가 필요한 조건을 만들 수 있습니다.

      1. 조건 유형 드롭다운 메뉴에서 태그를 선택합니다.

      2. 조건 연산자를 선택합니다. 전체 태그를 일치시키려면 일치 연산자를 사용합니다. 태그 키와 태그 값을 일치시키려면 ID 일치 연산자를 사용합니다.

      3. 일치 연산자를 선택했으면 태그의 네임스페이스 값을 입력합니다. 일치 ID 연산자를 선택했으면 키와 값 ID를 입력합니다.

      4. 추가를 클릭하면 조건을 여러 개 만들 수 있습니다. 다른 조건을 추가하는 경우 And로 전환하여 조건부 논리가 모두 필요하도록 설정할 수 있습니다. Or로 전환하면 조건 중 하나만 참이 되도록 조건부 논리를 설정할 수 있습니다.

      5. 조건 필드 오른쪽에 있는 큰 X를 클릭하여 표현식을 삭제할 수 있습니다.

      6. 조건 수정을 완료했으면 저장을 클릭합니다.

      다음 그림에서는 조건이 포함된 조직 정책 구성 예시를 보여줍니다.

      조직 정책 조건 UI 예시

    4. 조건 편집기를 사용하여 프로그래매틱 방식으로 조건부 표현식을 만드는 데 사용할 수 있습니다. 또한 현재 조건 집합의 프로그래매틱 방식의 렌더링이 표시됩니다.

      1. 조건 편집기를 사용하여 ! 논리 연산자를 적용할 수 있습니다. 예를 들어 !resource.matchTag('ORGANIZATION_ID/location', 'us-west1') 쿼리에서 조직 정책 제약조건을 us-west1 태그가 없는 모든 리소스에 적용합니다.
  11. 조직 정책을 완료하고 적용하려면 저장을 클릭합니다.

gcloud

조직 정책을 설정하려면 다음 명령어를 실행하세요.

gcloud org-policies set-policy POLICY_PATH

여기에서 POLICY_PATH는 조직 정책 JSON 파일의 전체 경로이며 다음과 유사합니다.

{
  "name":"RESOURCE_TYPE/RESOURCE_ID/policies/gcp.resourceLocations",
  "spec":{
    "rules":[
       {
        // As there is no condition specified, this allowedValue is enforced
        // unconditionally.
        "values":{
          "allowedValues": ["us-east1-locations"]
        },
      },
     {
        // This condition applies to the values block.
        "condition":{
          "expression":"resource.matchTag('ORGANIZATION_ID/location', 'us-west1')"
        },
        "values":{
          "allowedValues": ["us-west1-locations"]
        }
      }
    ]
  }
}

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

  • RESOURCE_TYPEorganizations, folders 또는 projects입니다.

  • RESOURCE_IDRESOURCE_TYPE에 지정된 리소스 유형에 따라 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호입니다.

  • ORGANIZATION_ID는 태그 키의 상위 조직입니다.

위의 조직 정책의 경우 리소스 및 모든 하위 리소스에는 us-east1-locationsallowedValues만 사용하여 gcp.resourceLocations 제약조건이 적용됩니다. location: us-west1 태그가 있는 이러한 리소스에는 us-east1-locationsus-west1-locationsallowedValues를 사용하여 gcp.resourceLocations 제약조건이 적용됩니다.

이러한 방식으로 단일 조직 정책의 제약조건에 조건부 값과 비조건부 값을 모두 적용할 수 있습니다.

부울 정책 예시

다음 예시에서는 compute.disableSerialPortAccess 제약조건을 적용하는 조직 정책 파일을 설정하는 방법을 보여줍니다. 이 조직 정책에서는 모든 직렬 포트가 리소스에 액세스할 수 있도록 지정하지만 조건을 사용하여 일치하는 태그가 있는 리소스에만 직렬 포트가 액세스하도록 제한합니다.

Console

조직 정책을 설정하려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 조직 정책 페이지를 엽니다.

    조직 정책 페이지 열기

  2. 페이지 상단의 프로젝트 선택기를 선택합니다.

  3. 프로젝트 선택 도구에서 조직 정책을 설정할 프로젝트를 선택합니다.

  4. 조직 정책 페이지의 목록에서 제약조건을 선택합니다. 해당 제약조건의 정책 세부정보 페이지가 표시되어야 합니다.

  5. 이 리소스의 조직 정책을 맞춤설정하려면 수정을 클릭합니다.

  6. 수정 페이지에서 맞춤설정을 선택합니다.

  7. 규칙 추가를 클릭합니다.

  8. 시행에서 이 조직 정책 시행을 사용 설정할지 여부를 선택합니다.

  9. 필요에 따라 태그로 조직 정책을 조건부로 만들려면 조건 추가를 클릭합니다. 조건부 규칙을 조직 정책에 추가하면 비조건부 규칙을 최소 하나 이상 추가해야 합니다. 그렇지 않으면 정책을 저장할 수 없습니다.

    1. 제목 필드에 조건의 이름을 입력합니다.

    2. 설명 필드에 조건 설명을 입력합니다. 설명에서는 필요한 태그와 태그가 리소스에 미치는 영향에 대한 컨텍스트를 제공합니다.

    3. 조건 작성 도구를 사용하여 제약조건이 적용되도록 특정 태그가 필요한 조건을 만들 수 있습니다.

      1. 조건 유형 드롭다운 메뉴에서 태그를 선택합니다.

      2. 조건 연산자를 선택합니다. 전체 태그를 일치시키려면 일치 연산자를 사용합니다. 태그 키와 태그 값을 일치시키려면 ID 일치 연산자를 사용합니다.

      3. 일치 연산자를 선택했으면 태그의 네임스페이스 값을 입력합니다. 일치 ID 연산자를 선택했으면 키와 값 ID를 입력합니다.

      4. 추가를 클릭하면 조건을 여러 개 만들 수 있습니다. 다른 조건을 추가하는 경우 And로 전환하여 조건부 논리가 모두 필요하도록 설정할 수 있습니다. Or로 전환하면 조건 중 하나만 참이 되도록 조건부 논리를 설정할 수 있습니다.

      5. 조건 필드 오른쪽에 있는 큰 X를 클릭하여 표현식을 삭제할 수 있습니다.

      6. 조건 수정을 완료했으면 저장을 클릭합니다.

      7. 조건이 적용된 조직 정책에 비조건부 규칙이 최소 하나 이상 있어야 합니다. 규칙 추가를 클릭하고 이 조직 정책 시행을 기본적으로 사용 설정할지 여부를 설정합니다.

      다음 그림에서는 조건이 포함된 조직 정책 구성 예시를 보여줍니다.

      조직 정책 조건 UI 예시

    4. 조건 편집기를 사용하여 프로그래매틱 방식으로 조건부 표현식을 만드는 데 사용할 수 있습니다. 또한 현재 조건 집합의 프로그래매틱 방식의 렌더링이 표시됩니다.

      1. 조건 편집기를 사용하여 ! 논리 연산자를 적용할 수 있습니다. 예를 들어 !resource.matchTag('ORGANIZATION_ID/location', 'us-west1') 쿼리에서 조직 정책 제약조건을 us-west1 태그가 없는 모든 리소스에 적용합니다.
  10. 조직 정책을 완료하고 적용하려면 저장을 클릭합니다.

gcloud

조직 정책을 설정하려면 다음 명령어를 실행하세요.

gcloud org-policies set-policy POLICY_PATH

여기에서 POLICY_PATH는 조직 정책 JSON 파일의 전체 경로이며 다음과 유사합니다.

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/gcp.disableSerialPortAccess",
  "spec": {
    "rules": [
      {
        "condition": {
          "expression": "resource.matchTag(\"ORGANIZATION_ID/disableSerialAccess\", \"yes\")"
        },
        "enforce": true
      },
      {
        "enforce": false
      }
    ]
  }
}

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

  • RESOURCE_TYPEorganizations, folders 또는 projects입니다.

  • RESOURCE_ID는 조직 ID, 폴더 ID, 프로젝트 ID 또는 프로젝트 번호입니다.

  • ORGANIZATION_ID는 태그 키의 상위 조직입니다.

위 조직 정책의 경우 리소스와 모든 하위 리소스에는 gcp.disableSerialPortAccess 제약조건이 적용됩니다. disableSerialAccess: yes 태그가 있는 모든 리소스는 조직 정책에 의해 거부됩니다. disableSerialAccess: yes 태그가 없는 리소스에는 제약조건이 적용되지 않습니다.

조직 정책에 조건부 제약조건 추가

태그를 사용하여 연결된 태그를 기준으로 조직 정책 제약조건을 조건부로 리소스에 추가할 수 있습니다. 동일한 조직 정책 내에서 여러 조건을 추가하면 조직 정책을 적용할 리소스를 세분화하여 제어할 수 있습니다.

Common Expression Language(CEL)는 조건식을 지정하는 데 사용되는 표현식 언어입니다. 조건식은 논리 연산자(&&, ||, !)로 결합된 문 하나 이상으로 구성됩니다. 자세한 내용은 CEL 사양언어 정의를 참조하세요.

리소스에 적용된 태그를 기반으로 리소스를 만들 수 있는 위치를 제한하는 조직 정책을 고려하세요. 이렇게 하려면 gcp.resourceLocations 제약조건을 적용하는 조직 정책을 만들고 조건을 사용하여 시행을 특정 리소스로만 좁히세요.

먼저 임시 파일 /tmp/policy.yaml을 만들어 조직 정책을 포함합니다.

name: organizations/ORGANIZATION_ID/policies/gcp.resourceLocations
spec:
    rules:
    - condition:
        expression: resource.matchTag("ORGANIZATION_ID/location", "us-east")
      values:
        allowedValues:
        - in:us-east1-locations
    - condition:
        expression: resource.matchTag("ORGANIZATION_ID/location", "us-west")
      values:
        allowedValues:
        - in:us-west1-locations
    - values:
        deniedValues:
        - in:asia-south1-locations

ORGANIZATION_ID는 태그 키의 상위 조직입니다.

위 예시에서 location: us-east 태그가 연결된 모든 리소스는 us-east1-locations 값 그룹 내 위치로 제한됩니다. location: us-west 태그가 연결된 모든 리소스는 us-west1-locations 값 그룹 내 위치로 제한됩니다. 조직의 모든 리소스는 asia-south1-locations 값 그룹 내 위치에서 차단됩니다.

그런 다음 set-policy 명령어를 사용하여 정책을 설정합니다.

gcloud org-policies set-policy /tmp/policy.yaml

조직 정책 상속

태그를 사용하여 사용 설정된 조직 정책 목록 제약조건은 상속의 일반 규칙에 따라 기존 조직 정책과 병합됩니다. 이 조건부 규칙은 조건이 true인 경우에만 적용됩니다.

태그를 사용하여 사용 설정된 조직 정책 부울 제약조건은 기존 조직 정책보다 우선 적용됩니다. 또한 부울 정책은 true 또는 false의 두 가지 상태만 가질 수 있으므로 여러 태그가 서로 충돌하지 않도록 모든 조건문은 비조건문의 반대여야 합니다.

예를 들어 disableSerialPortAccess 제약조건을 시행하는 조직 정책을 생각해 보세요. 우선 적용되는 조건이 없는 경우에 사용되는 값인 비조건부 값은 true입니다. 따라서 이 정책에 대한 다른 조건문은 false로 설정해야 충돌하지 않습니다.

다음 단계

태그 사용 방법에 대한 자세한 내용은 태그 생성 및 관리 페이지를 참조하세요.

조직 정책 제약조건을 만들고 관리하는 방법에 대한 자세한 내용은 제약조건 사용을 참조하세요.