在 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 范围 运行 kubectl 和 Airflow CLI 命令。默认情况下,在专用 IP 环境中,您只能从专用 IP 环境的 VPC 子网中的虚拟机运行这些命令。

  • 在公共 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

创建环境后,master_authorized_networks_configconfig屏蔽控制功能 环境

如需为专用 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 代码块 授权网络。

如需停用授权网络,请在以下位置设置 enabled 字段: 将 master_authorized_networks_config 代码块更改为 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
    }
  }
}

后续步骤