Cloud Composer で承認済みネットワークを構成する

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

このページでは、環境に承認済みネットワークを構成する方法について説明します。

Cloud Composer の承認済みネットワークについて

承認済みネットワークでは、HTTPS を使用して環境のクラスタ コントロール プレーンにアクセスできる CIDR 範囲を指定できます。

たとえば、Cloud Composer 1, において、プライベート IP 環境で 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 リクエストを作成します。Environment リソースで、承認済みネットワークがある環境の構成パラメータを指定します。

プライベート 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 範囲を使用する場合は、追加の cidr_blocks ブロックを master_authorized_networks_config に追加します。

例(プライベート 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 範囲を使用する場合は、追加の cidr_blocks ブロックを master_authorized_networks_config に追加します。

例:

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
    }
  }
}

次のステップ