Cloud Load Balancing의 조직 정책 제약조건

이 페이지에서는 Cloud Load Balancing에 적용되는 조직 정책 제약조건을 보충 설명합니다. 조직 정책 제약조건을 사용하여 전체 프로젝트, 폴더 또는 조직에 설정을 적용할 수 있습니다.

조직 정책은 새 리소스에만 적용됩니다. 제약조건은 소급 적용되지 않습니다. 새 조직 정책을 위반하는 기존 부하 분산 리소스가 있는 경우 이러한 위반을 수동으로 해결해야 합니다.

사용 가능한 제약조건의 전체 목록은 조직 정책 제약조건을 참조하세요.

부하 분산기 유형 제한

조직 정책을 사용하여 조직에서 만들 수 있는 Cloud Load Balancing 유형을 제한할 수 있습니다. 다음 조직 정책 제약조건을 설정합니다.

  • 이름: 부하 분산기 유형에 따라 부하 분산기 생성 제한
  • ID: constraints/compute.restrictLoadBalancerCreationForTypes

compute.restrictLoadBalancerCreationForTypes 제약조건을 설정할 때 Cloud Load Balancing 유형의 허용 목록 또는 거부 목록을 지정합니다. 허용되거나 거부되는 값의 목록에는 다음 목록의 값만 포함될 수 있습니다.

  • 애플리케이션 부하 분산기
    • 전역 외부 애플리케이션 부하 분산기는 GLOBAL_EXTERNAL_MANAGED_HTTP_HTTPS
    • 기본 애플리케이션 부하 분산기는 EXTERNAL_HTTP_HTTPS
    • 리전 외부 애플리케이션 부하 분산기는 EXTERNAL_MANAGED_HTTP_HTTPS
    • 리전 간 내부 애플리케이션 부하 분산기는 GLOBAL_INTERNAL_MANAGED_HTTP_HTTPS
    • 리전 내부 애플리케이션 부하 분산기는 INTERNAL_HTTP_HTTPS
  • 프록시 네트워크 부하 분산기
    • TCP 프록시가 있는 전역 외부 프록시 네트워크 부하 분산기는 GLOBAL_EXTERNAL_MANAGED_TCP_PROXY
    • SSL 프록시가 있는 전역 외부 프록시 네트워크 부하 분산기는 GLOBAL_EXTERNAL_MANAGED_SSL_PROXY
    • TCP 프록시가 있는 외부 프록시 네트워크 부하 분산기는 EXTERNAL_TCP_PROXY
    • SSL 프록시가 있는 기본 프록시 네트워크 부하 분산기는 EXTERNAL_SSL_PROXY
    • TCP 프록시가 있는 리전 외부 프록시 네트워크 부하 분산기는 REGIONAL_EXTERNAL_MANAGED_TCP_PROXY
    • TCP 프록시가 있는 리전 내부 프록시 네트워크 부하 분산기는 REGIONAL_INTERNAL_MANAGED_TCP_PROXY
    • TCP 프록시가 있는 리전 간 내부 프록시 네트워크 부하 분산기는 GLOBAL_INTERNAL_MANAGED_TCP_PROXY
  • 패스 스루 네트워크 부하 분산기
    • 외부 패스 스루 네트워크 부하 분산기는 EXTERNAL_NETWORK_TCP_UDP
    • 내부 패스 스루 네트워크 부하 분산기는 INTERNAL_TCP_UDP

모든 내부 또는 모든 외부 부하 분산기 유형을 포함하려면 in: 프리픽스 다음에 INTERNAL 또는 EXTERNAL을 사용하세요. 예를 들어 in:INTERNAL을 허용하면 위 목록의 모든 내부 부하 분산기가 허용됩니다.

이 제약조건을 사용하는 방법에 대한 샘플 안내는 조직 정책으로 목록 제약조건 설정을 참조하세요.

정책을 설정한 후 해당 Google Cloud 전달 규칙을 추가할 때 정책이 적용됩니다. 기존 Cloud Load Balancing 구성에는 제약조건이 적용되지 않습니다.

제약조건을 위반하는 유형의 부하 분산기를 만들려고 하면 작업이 실패하고 오류 메시지가 생성됩니다. 오류 메시지의 형식은 다음과 같습니다.

Constraint constraints/compute.restrictLoadBalancerCreationForTypes
violated for projects/PROJECT_NAME. Forwarding Rule projects/PROJECT_NAME/region/REGION/forwardingRules/FORWARDING_RULE_NAME
of type SCHEME is not allowed.

서로 다른 리소스 수준에 설정된 여러 restrictLoadBalancerCreationForTypes 제약조건은 계층적으로 적용됩니다. 따라서 상위 계층의 정책도 고려할 수 있도록 inheritFromParent 필드를 true로 설정하는 것이 좋습니다.

GKE 오류 메시지

Google Kubernetes Engine(GKE) 서비스인그레스 객체를 사용할 경우 이 조직 정책을 사용하여 부하 분산기 생성 결과를 제한하면 다음과 유사한 오류 메시지가 표시됩니다.

Warning  Sync    28s   loadbalancer-controller  Error during sync: error running
load balancer syncing routine: loadbalancer FORWARDING_RULE_NAME
does not exist: googleapi: Error 412:
Constraint constraints/compute.restrictLoadBalancerCreationForTypes violated for
projects/PROJECT_ID. Forwarding Rule
projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME
of type LOAD_BALANCER_TYPE is not allowed, conditionNotMet

다음 명령어를 실행하여 GKE 오류 메시지를 볼 수 있습니다.

kubectl get events -w
kubectl describe RESOURCE_KIND NAME

다음을 바꿉니다.

  • RESOURCE_KIND: 부하 분산기의 유형(ingress 또는 service)
  • NAME: 부하 분산기의 이름

전역 부하 분산 사용 중지

이 불리언 제약조건은 전역 부하 분산 제품 생성을 사용 중지합니다. 적용되면 전역 종속 항목이 없는 리전별 부하 분산 제품만 만들 수 있습니다.

  • * 이름: 전역 부하 분산 사용 중지
  • * ID: constraints/compute.disableGlobalLoadBalancing

기본적으로 사용자는 전역 부하 분산 제품을 만들 수 있습니다.

이 제약조건을 사용하는 방법에 대한 샘플 안내는 조직 정책으로 불리언 제약조건 설정을 참조하세요.

프로토콜 전달 유형 제한

조직 정책을 사용하여 조직에서 만들 수 있는 프로토콜 전달 유형을 제한합니다. 다음 조직 정책 제약조건을 설정합니다.

  • 이름: IP 주소 유형에 따라 프로토콜 전달 제한
  • ID: constraints/compute.restrictProtocolForwardingCreationForTypes

compute.restrictProtocolForwardingCreationForTypes 제약조건을 설정할 때 프로토콜 전달 유형의 허용 목록 또는 차단 목록을 지정합니다. 허용되거나 거부되는 값의 목록에는 다음 목록의 값만 포함될 수 있습니다.

  • INTERNAL
  • EXTERNAL

이 제약조건을 사용하는 방법에 대한 샘플 안내는 조직 정책으로 목록 제약조건 설정을 참조하세요.

정책을 설정한 후 해당 Google Cloud 전달 규칙을 추가할 때 정책이 적용됩니다. 기존 프로토콜 전달 구성에는 제약조건이 적용되지 않습니다.

제약조건을 위반하는 프로토콜 전달 배포 유형을 만들려고 하면 실패하고 오류 메시지가 생성됩니다. 오류 메시지의 형식은 다음과 같습니다.

Constraint constraints/compute.restrictProtocolForwardingCreationForTypes
violated for projects/PROJECT_NAME. Forwarding Rule
projects/PROJECT_NAME/region/REGION/forwardingRules/FORWARDING_RULE_NAME
of type SCHEME is not allowed.

서로 다른 리소스 수준에 여러 restrictProtocolForwardingCreationForTypes 제약조건을 설정하고 inheritFromParent 필드를 true로 설정하면 제약조건이 계층적으로 적용됩니다.

공유 VPC 제한사항 적용

다음 조직 정책을 사용하여 사용자가 공유 VPC 배포를 설정하는 방법을 제한합니다.

공유 VPC 호스트 프로젝트 제한

이 목록 제약조건을 사용하면 리소스를 연결할 수 있는 공유 VPC 호스트 프로젝트를 제한할 수 있습니다.

  • 이름: 공유 VPC 호스트 프로젝트 제한
  • ID: constraints/compute.restrictSharedVpcHostProjects

기본적으로 프로젝트는 동일한 조직의 모든 호스트 프로젝트에 연결할 수 있으며 이를 통해 서비스 프로젝트가 됩니다. compute.restrictSharedVpcHostProjects 제약조건을 설정할 때 다음과 같은 방법으로 호스트 프로젝트의 허용 목록 또는 거부 목록을 지정합니다.

  • 다음 형식으로 프로젝트를 지정합니다.
    • 프로젝트/PROJECT_ID
  • 프로젝트, 폴더, 조직을 지정합니다. 제약조건은 리소스 계층 구조에서 지정된 리소스에 있는 모든 프로젝트에 적용됩니다. 다음 형식을 사용합니다.
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID

이 제약조건을 사용하는 방법에 대한 샘플 안내는 조직 정책으로 목록 제약조건 설정을 참조하세요.

공유 VPC 서브네트워크 제한

이 목록 제약조건은 대상 리소스가 사용할 수 있는 공유 VPC 서브네트워크의 집합을 정의하며 같은 프로젝트 내의 리소스에는 적용되지 않습니다.

  • 이름: 공유 VPC 서브네트워크 제한
  • ID: constraints/compute.restrictSharedVpcSubnetworks

기본적으로 대상 리소스는 모든 공유 VPC 서브네트워크를 사용할 수 있습니다. compute.restrictSharedVpcSubnetworks 제약조건을 설정할 때 다음과 같은 방법으로 제한된 서브넷 목록을 지정합니다.

  • 다음 형식으로 서브넷을 지정합니다.
    • projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME.
  • 프로젝트, 폴더, 조직을 지정합니다. 제약조건은 리소스 계층 구조에서 지정된 리소스에 있는 모든 서브넷에 적용됩니다. 다음 형식을 사용합니다.
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID
    • under:projects/PROJECT_ID

이 제약조건을 사용하는 방법에 대한 샘플 안내는 조직 정책으로 목록 제약조건 설정을 참조하세요.

프로젝트 간 백엔드 서비스 제한

이 제약조건을 사용하여 URL 맵이 참조할 수 있는 백엔드 서비스를 제한할 수 있습니다. 이 제약조건은 URL 맵과 동일한 프로젝트 내의 백엔드 서비스에는 적용되지 않습니다.

  • 이름: 프로젝트 간 백엔드 서비스 제한
  • ID: constraints/compute.restrictCrossProjectServices

기본적으로 모든 호스트 또는 서비스 프로젝트의 URL 맵은 작업을 수행하는 사용자에게 compute.backendServices.use 권한이 있는 한 다른 서비스 프로젝트 또는 동일한 공유 VPC 배포의 호스트 프로젝트에서 호환되는 백엔드 서비스를 참조할 수 있습니다. restrictCrossProjectServices 제약조건을 설정할 때 다음과 같은 방법으로 백엔드 서비스의 허용 목록 또는 거부 목록을 지정합니다.

  • 다음 형식으로 백엔드 서비스를 지정합니다.
    • projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
  • 프로젝트, 폴더, 조직을 지정합니다. 제약조건은 리소스 계층 구조에서 지정된 리소스에 있는 모든 백엔드 서비스에 적용됩니다. 다음 형식을 사용합니다.
    • under:organizations/ORGANIZATION_ID
    • under:folders/FOLDER_ID
    • under:projects/PROJECT_ID

이 제약조건으로 조직 정책을 설정한 후에는 다음에 gcloud compute url-maps 명령어를 사용하여 백엔드 서비스를 URL 맵에 연결할 때 제약조건이 적용됩니다. 이 제약조건은 프로젝트 간 백엔드 서비스에 대한 기존 참조에 소급해서 영향을 미치지 않습니다.

이 제약조건을 사용하는 방법에 대한 샘플 안내는 조직 정책으로 목록 제약조건 설정을 참조하세요.

공유 VPC 프로젝트 선취권 삭제 제한

이 불리언 제약조건이 이미 True로 설정된 경우, 조직 수준의 권한 없이 공유 VPC 호스트 프로젝트 선취권을 삭제할 수 있는 사용자 집합을 제한합니다.

  • 이름: 공유 VPC 프로젝트 선취권 삭제 제한
  • ID: constraints/compute.restrictXpnProjectLienRemoval

기본적으로 선취권 업데이트 권한이 있는 모든 사용자가 공유 VPC 호스트 프로젝트 선취권을 삭제할 수 있습니다. 이 제약조건을 시행하려면 조직 수준에서 권한이 부여되어야 합니다.

이 제약조건을 사용하는 방법에 대한 샘플 안내는 조직 정책으로 불리언 제약조건 설정을 참조하세요.

조직 정책으로 불리언 제약조건 설정

콘솔

콘솔에서 조직 정책을 설정하려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.

    조직 정책으로 이동

  2. 필터 필드에서 이름 또는 ID로 제약조건을 검색합니다.
  3. 제약조건 이름을 클릭합니다.
  4. 수정을 클릭하여 제약조건을 수정합니다.
  5. 수정 페이지에서 맞춤설정을 선택합니다.
  6. 시행에서 시행 옵션을 선택합니다.
    • 이 제약조건을 시행하려면 사용을 선택합니다.
    • 이 제약조건을 시행하지 않으려면 사용 중지를 선택합니다.
  7. 항목을 변경한 후 저장을 클릭하여 제약조건 설정을 적용합니다.

Google Cloud 콘솔을 사용하여 조직 정책을 맞춤설정하는 방법에 대한 자세한 안내는 불리언 제약조건에 대한 정책 맞춤설정을 참조하세요.

gcloud

조직 정책에 불리언 제약조건을 시행하려면 다음과 같이 gcloud resource-manager org-policies enable-enforce 명령어를 사용합니다.

공유 VPC 프로젝트 선취권 삭제 제한을 사용 설정하려면 다음 안내를 따르세요.

gcloud resource-manager org-policies enable-enforce \
    --organization ORGANIZATION_ID \
    constraints/compute.restrictXpnProjectLienRemoval

전역 부하 분산을 사용 중지하려면 다음을 수행합니다.

gcloud resource-manager org-policies enable-enforce \
    --organization ORGANIZATION_ID \
    constraints/compute.disableGlobalLoadBalancing

gcloud의 불리언 제약조건 작업에 대한 자세한 내용은 제약조건 사용을 참조하세요.

조직 정책으로 목록 제약조건 설정

콘솔

콘솔에서 조직 정책을 설정하려면 다음 단계를 완료합니다.

  1. Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.

    조직 정책으로 이동

  2. 필터 필드에서 이름 또는 ID로 제약조건을 검색합니다. 예를 들어 공유 VPC 호스트 프로젝트를 제한하려면 constraints/compute.restrictSharedVpcHostProjects ID를 검색합니다.
  3. 제약조건 이름을 클릭합니다.
  4. 수정을 클릭하여 제약조건을 수정합니다.
  5. 커스텀 정책을 만들려면 맞춤설정을 선택하고 리소스의 허용 목록 또는 차단 목록을 지정합니다. Google Cloud 콘솔을 사용하여 조직 정책을 맞춤설정하는 방법에 대한 자세한 안내는 목록 제약조건에 대한 정책 맞춤설정을 참조하세요.
  6. 항목을 변경한 후 저장을 클릭하여 제약조건 설정을 적용합니다.

gcloud

이 섹션에서는 목록 제약조건으로 조직 정책 파일을 만들고 설정하는 방법을 보여주는 몇 가지 구성 예시를 제공합니다. gcloud의 목록 제약조건 및 조직 정책 작업에 대한 자세한 안내는 제약조건 사용을 참조하세요.

  1. 정책 파일을 만듭니다. 다음 JSON 구성 샘플을 사용하여 요구사항에 따라 자체 정책 파일을 만듭니다.

    • 부하 분산기 유형 제한

      • 부하 분산기의 하위 집합만 허용

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "allowedValues": [
            "INTERNAL_TCP_UDP",
            "INTERNAL_HTTP_HTTPS",
            "EXTERNAL_NETWORK_TCP_UDP",
            "EXTERNAL_TCP_PROXY",
            "EXTERNAL_SSL_PROXY",
            "EXTERNAL_HTTP_HTTPS"
          ]
        }
        }
        
      • 모든 외부 부하 분산기 거부

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "deniedValues": [
            "in:EXTERNAL"
          ]
        }
        }
        
      • 모든 부하 분산기 거부

        {
        "constraint": "constraints/compute.restrictLoadBalancerCreationForTypes",
        "listPolicy": {
          "allValues": "DENY"
        }
        }
        
    • 프로토콜 전달 유형 제한 사항

      • 모든 프로토콜 전달 거부

        {
        "constraint": "constraints/compute.restrictProtocolForwardingCreationForTypes",
        "listPolicy": {
          "allValues": "DENY"
        }
        }
        
      • 내부 프로토콜 전달만 허용

        {
        "constraint": "constraints/compute.restrictProtocolForwardingCreationForTypes",
        "listPolicy": {
          "deniedValues": [
            "EXTERNAL"
          ]
        }
        }
        
    • 공유 VPC 구성 제한

      • 공유 VPC 호스트 프로젝트 제한

        {
        "constraint": "constraints/compute.restrictSharedVpcHostProjects",
        "listPolicy": {
          "allowedValues": [
            "under:folders/FOLDER_ID",
            "under:projects/PROJECT_ID"
          ]
        }
        }
        
      • 공유 VPC 서브네트워크 제한

        {
        "constraint": "constraints/compute.restrictSharedVpcSubnetworks",
        "listPolicy": {
          "deniedValues": [
            "under:organizations/ORGANIZATION_ID",
            "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
          ]
        }
        }
        
      • 공유 VPC 백엔드 서비스 제한

        {
        "constraint": "constraints/compute.restrictCrossProjectServices",
        "listPolicy": {
          "allowedValues": [
            "under:folders/FOLDER_ID",
            "under:projects/PROJECT_ID",
            "projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME"
          ]
        }
        }
        
  2. 조직, 폴더 또는 프로젝트의 리소스에 제약조건을 적용합니다.

    조직의 경우 다음 명령어를 실행합니다.

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --organization=ORGANIZATION_ID
    

    폴더에 다음 명령어를 실행합니다.

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --folder=FOLDER_ID
    

    프로젝트에 다음 명령어를 실행합니다.

    gcloud resource-manager org-policies set-policy POLICY_FILE \
        --project=PROJECT_ID
    

    다음을 바꿉니다.

다음 단계