Cloud Composer에서 승인된 네트워크 구성

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

이 페이지에서는 해당 환경에 대해 승인된 네트워크를 구성하는 방법을 설명합니다.

Cloud Composer의 승인된 네트워크 정보

승인된 네트워크를 사용하면 HTTPS를 사용하여 해당 환경의 클러스터 제어 영역에 액세스할 수 있는 CIDR 범위를 지정할 수 있습니다.

예를 들어 Cloud Composer 1에서 Airflow CLI 명령어를 실행(gcloud composer environments run)하려면 비공개 IP 환경에 환경 클러스터에 대한 액세스 권한이 필요합니다. 이러한 요청이 시작되는 네트워크는 환경 클러스터의 제어 영역에 액세스할 수 있는 권한이 있어야 합니다.

비공개 및 공개 IP 환경의 승인된 네트워크

공개 IP 및 비공개 IP 환경 모두 승인된 네트워크를 지정할 수 있습니다.

  • 비공개 IP 환경에서는 특정 IP 주소 범위가 해당 환경의 클러스터의 제어 영역에 액세스할 수 있도록 승인된 네트워크를 구성할 수 있습니다. 예를 들어 특정 IP 범위를 허용하려면 kubectl 및 Airflow CLI 명령어를 실행합니다. 기본적으로 비공개 IP 환경에서는 비공개 IP 환경의 VPC 서브네트워크에 있는 VM에서만 이러한 명령어를 실행할 수 있습니다.

  • 공개 IP 환경에서는 승인된 네트워크를 구성하여 해당 환경의 클러스터의 제어 영역에 액세스할 수 있는 IP 주소 범위를 제한할 수 있습니다. 기본적으로 공개 IP 환경에서는 kubectl 및 Airflow CLI 명령어를 실행할 수 있는 IP 범위에 대한 제한사항이 없습니다.

시작하기 전에

  • gcloud, Terraform, REST API만 사용하여 승인된 네트워크를 지정할 수 있습니다.

  • 환경을 만들 때 또는 기존 환경에 대해 승인된 네트워크를 지정할 수 있습니다.

승인된 네트워크로 환경 만들기

gcloud

승인된 네트워크로 환경을 만들려면 환경을 만들 때 --enable-master-authorized-networks 인수를 사용합니다. 그런 후 --master-authorized-networks 인수에 쉼표로 구분된 CIDR 범위 목록을 제공합니다.

비공개 IP 환경에 대해 승인된 네트워크를 지정하려면 다음 안내를 따르세요.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-master-authorized-networks \
    --master-authorized-networks AUTHORIZED_NETWORKS_IP_RANGES

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME을 환경 이름으로 바꿉니다.
  • LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • AUTHORIZED_NETWORKS_IP_RANGES를 CIDR 표기법으로 표시된 쉼표로 구분된 IP 주소 범위 목록으로 바꿉니다. 이러한 범위는 해당 환경의 클러스터에 대해 승인된 네트워크로 추가됩니다.

예시(비공개 IP 환경):

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-1.20.12-airflow-1.10.15 \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --enable-master-authorized-networks \
    --master-authorized-networks 192.0.2.0/23,192.0.4.0/23

API

environments.create API 요청을 생성합니다. 환경 리소스에서 승인된 네트워크가 있는 환경에 대해 구성 매개변수를 지정합니다.

비공개 IP 환경에 대해 승인된 네트워크를 지정하려면 다음 안내를 따르세요.

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {

        "useIpAliases": true,
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
    },
    "masterAuthorizedNetworksConfig": {
      "enabled": true,
      "cidrBlocks": [
        {
          "displayName": "AUTHORIZED_NETWORK_NAME",
          "cidrBlock": "AUTHORIZED_NETWORK_RANGE"
        }
      ]
    }
  }
}

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME을 환경 이름으로 바꿉니다.
  • AUTHORIZED_NETWORK_NAME을 승인된 네트워크 IP 범위의 이름으로 바꿉니다. 이 이름을 사용하여 이 블록을 식별합니다. 이 필드는 선택사항입니다.
  • AUTHORIZED_NETWORK_RANGE를 CIDR 표기법으로 표시된 IP 주소 범위로 바꿉니다. 이 범위는 해당 환경의 클러스터에 대해 승인된 네트워크로 추가됩니다.
  • 여러 IP 범위를 사용하려면 추가 범위를 cidrBlocks에 추가합니다.

예시(비공개 IP 환경):

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "example-environment",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
    },
    "masterAuthorizedNetworksConfig": {
      "enabled": true,
      "cidrBlocks": [
        {
          "displayName": "example_range_1",
          "cidrBlock": "192.0.2.0/23"
        },
        {
          "displayName": "example_range_2",
          "cidrBlock": "192.0.4.0/23"
        }
      ]
    }
  }
}

Terraform

환경을 만들 때 config 블록의 master_authorized_networks_config 블록은 환경에 대해 승인된 네트워크를 제어합니다.

비공개 IP 환경에 대해 승인된 네트워크를 지정하려면 다음 안내를 따르세요.

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    node_config {
      ip_allocation_policy = [{
        use_ip_aliases = true
      }]
    }
    private_environment_config {
      // Private environment parameters
    }

    master_authorized_networks_config {

      enabled = true

      cidr_blocks {
          cidr_block = "AUTHORIZED_NETWORK_RANGE"
          display_name = "AUTHORIZED_NETWORK_NAME"
      }

    }
  }
}

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME을 환경 이름으로 바꿉니다.
  • LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • AUTHORIZED_NETWORK_RANGE를 CIDR 표기법으로 표시된 IP 주소 범위로 바꿉니다. 이 범위는 해당 환경의 클러스터에 대해 승인된 네트워크로 추가됩니다.
  • AUTHORIZED_NETWORK_NAME을 승인된 네트워크 IP 범위의 이름으로 바꿉니다. 이 이름을 사용하여 이 블록을 식별합니다.
  • 여러 IP 범위를 사용하려면 master_authorized_networks_configcidr_blocks 블록을 더 추가합니다.

예시(비공개 IP 환경):

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    node_config {

      // Specify your network and subnetwork
      network    = google_compute_network.example_network.id
      subnetwork = google_compute_subnetwork.example_subnet.id

      ip_allocation_policy = [{
        use_ip_aliases = true
      }]
    }

    private_environment_config {
      // Private environment parameters
    }

    master_authorized_networks_config {

      enabled = true

      cidr_blocks {
          cidr_block = "192.0.2.0/23"
          display_name = "example_range_1"
      }

      cidr_blocks {
          cidr_block = "192.0.4.0/23"
          display_name = "example_range_2"
      }
    }
  }
}

기존 환경에 대해 승인된 네트워크 지정

기존 환경에 대해 승인된 네트워크를 지정할 수 있습니다.

gcloud

승인된 네트워크를 지정하려면 --enable-master-authorized-networks 인수를 사용합니다. 그런 후 --master-authorized-networks 인수에 쉼표로 구분된 CIDR 범위 목록을 제공합니다.

gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --enable-master-authorized-networks \
  --master-authorized-networks AUTHORIZED_NETWORKS_IP_RANGES

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME을 환경 이름으로 바꿉니다.
  • LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • AUTHORIZED_NETWORKS_IP_RANGES를 CIDR 표기법으로 표시된 쉼표로 구분된 IP 주소 범위 목록으로 바꿉니다. 이러한 범위는 해당 환경의 클러스터에 대해 승인된 네트워크로 추가됩니다.

예:

gcloud composer environments update example-environment \
  --location us-central1 \
  --enable-master-authorized-networks \
  --master-authorized-networks 192.0.2.0/23,192.0.4.0/23

API

  1. environments.patch API 요청을 생성합니다.

  2. 이 요청의 작성 방법:

    1. updateMask 매개변수에서 config.softwareConfig.masterAuthorizedNetworksConfig 마스크를 지정합니다.

    2. 요청 본문에서 승인된 네트워크에 대해 CIDR 범위를 지정합니다.

"config": {

  "masterAuthorizedNetworksConfig": {
    "enabled": true,
    "cidrBlocks": [
      {
        "displayName": "AUTHORIZED_NETWORK_NAME",
        "cidrBlock": "AUTHORIZED_NETWORK_RANGE"
      }
    ]
  }
}

다음과 같이 바꿉니다.

  • AUTHORIZED_NETWORK_NAME을 승인된 네트워크 IP 범위의 이름으로 바꿉니다. 이 이름을 사용하여 이 블록을 식별합니다. 이 필드는 선택사항입니다.
  • AUTHORIZED_NETWORK_RANGE를 CIDR 표기법으로 표시된 IP 주소 범위로 바꿉니다. 이 범위는 해당 환경의 클러스터에 대해 승인된 네트워크로 추가됩니다.
  • 여러 IP 범위를 사용하려면 추가 범위를 cidrBlocks에 추가합니다.

예:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.masterAuthorizedNetworksConfig

"config": {
  "masterAuthorizedNetworksConfig": {
    "enabled": true,
    "cidrBlocks": [
      {
        "displayName": "example_range_1",
        "cidrBlock": "192.0.2.0/23"
      },
      {
        "displayName": "example_range_2",
        "cidrBlock": "192.0.4.0/23"
      }
    ]
  }
}

Terraform

config 블록의 master_authorized_networks_config 블록은 환경의 승인된 네트워크를 제어합니다.

비공개 IP 환경의 승인된 네트워크를 추가하려면 환경 정의에 이 블록을 추가합니다.

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example_environment"
  region = "us-central1"

  config {

    // Other environment parameters

    master_authorized_networks_config {

      enabled = true

      cidr_blocks {
          cidr_block = "AUTHORIZED_NETWORK_RANGE"
          display_name = "AUTHORIZED_NETWORK_NAME"
      }

    }
  }
}

다음과 같이 바꿉니다.

  • AUTHORIZED_NETWORK_RANGE를 CIDR 표기법으로 표시된 IP 주소 범위로 바꿉니다. 이 범위는 해당 환경의 클러스터에 대해 승인된 네트워크로 추가됩니다.
  • AUTHORIZED_NETWORK_NAME을 승인된 네트워크 IP 범위의 이름으로 바꿉니다. 이 이름을 사용하여 이 블록을 식별합니다.
  • 여러 IP 범위를 사용하려면 master_authorized_networks_configcidr_blocks 블록을 더 추가합니다.

예:

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    // Other environment parameters

    master_authorized_networks_config {

      enabled = true

      cidr_blocks {
          cidr_block = "192.0.2.0/23"
          display_name = "example_range_1"
      }

      cidr_blocks {
          cidr_block = "192.0.4.0/23"
          display_name = "example_range_2"
      }
    }
  }
}

승인된 네트워크 사용 중지

기존 환경에 대해 승인된 네트워크를 사용 중지할 수 있습니다.

  • 비공개 IP 주소의 경우, 이렇게 하면 이전에 승인된 네트워크로 추가되었던 범위에 대해 액세스가 삭제됩니다.
  • 공개 IP 주소의 경우, 이렇게 하면 이전에 구성된 제한사항이 삭제됩니다.

gcloud

승인된 네트워크를 사용 중지하려면 --disable-master-authorized-networks 인수를 사용합니다.

gcloud composer environments update ENVIRONMENT_NAME \
  --location LOCATION \
  --disable-master-authorized-networks

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME을 환경 이름으로 바꿉니다.
  • LOCATION을 환경이 위치한 리전으로 바꿉니다.

예를 들면 다음과 같습니다.

gcloud composer environments update example-environment \
  --location us-central1 \
  --disable-master-authorized-networks

API

  1. environments.patch API 요청을 생성합니다.

  2. 이 요청의 작성 방법:

    1. updateMask 매개변수에서 config.softwareConfig.masterAuthorizedNetworksConfig 마스크를 지정합니다.

    2. 요청 본문에서 enabled 필드에 false를 지정합니다.

"config": {

  "masterAuthorizedNetworksConfig": {
    "enabled": false
  }
}

예:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.masterAuthorizedNetworksConfig

"config": {
  "masterAuthorizedNetworksConfig": {
    "enabled": false,
  }
}

Terraform

config 블록의 master_authorized_networks_config 블록은 환경의 승인된 네트워크를 제어합니다.

승인된 네트워크를 중지하려면 master_authorized_networks_config 블록의 enabled 필드를 false로 설정합니다.

예:

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example_environment"
  region = "us-central1"

  config {

    // Other environment parameters

    master_authorized_networks_config {
      enabled = false
    }
  }
}

다음 단계