Configurar restricciones de ubicación de recursos

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

En esta página se muestra cómo configurar las restricciones de ubicación de los recursos para que los datos que almacena Cloud Composer se conserven en las ubicaciones que especifiques.

Cómo funcionan las restricciones de ubicación

Las restricciones de ubicación de Cloud Composer se determinan en función de la política de organización que se aplique al proyecto en el que se cree el entorno de Cloud Composer. Esta política se asigna en el proyecto o se hereda de la organización.

Si las restricciones de ubicación están habilitadas, no se puede crear un entorno en una región prohibida por la política. Si una región aparece en la lista de denegación o no aparece en la lista de permitidas, no podrás crear entornos en esa región.

Para habilitar la creación de entornos, la política debe permitir toda la región y no una zona específica de esa región. Por ejemplo, la política debe permitir la región europe-west3 para crear entornos de Cloud Composer en ella.

Cloud Composer comprueba las restricciones de ubicación en los siguientes casos:

  • Creación de entornos.
  • Actualización del entorno, si se crean recursos adicionales durante la operación.
  • Actualización del entorno para entornos antiguos que no aplican restricciones de ubicación a las dependencias de Cloud Composer.

Además de comprobar las restricciones de ubicación, Cloud Composer hace lo siguiente:

  • Almacena imágenes de Airflow personalizadas por el usuario en repositorios regionales de Artifact Registry. Por ejemplo, estas imágenes se crean cuando instalas imágenes de PyPI personalizadas en tu entorno.
  • Si la US multirregión está prohibida explícitamente por la política, el uso de Cloud Build se inhabilita. En este caso, las imágenes de Airflow personalizadas por el usuario se compilan en el clúster de tu entorno.

Instalar una dependencia de Python en un entorno de IP privada con restricciones de ubicación de recursos

Si defines restricciones de ubicación de recursos en tu proyecto, no podrás usar Cloud Build para instalar paquetes de Python. Por lo tanto, se ha inhabilitado el acceso directo a los repositorios en la red de Internet pública.

Para instalar dependencias de Python en un entorno de IP privada cuando las restricciones de ubicación no permitan la opción US multirregión, usa una de las siguientes opciones:

  • Usa un repositorio PyPI privado alojado en tu red de VPC.

  • Usa un servidor proxy en tu red de VPC para conectarte a un repositorio de PyPI en Internet público. Especifica la dirección del proxy en el archivo /config/pip/pip.conf del segmento de Cloud Storage.

  • Si tu política de seguridad permite el acceso a tu red VPC desde direcciones IP externas, puedes configurar Cloud NAT.

  • Almacena las dependencias de Python en la carpeta dags del segmento de Cloud Storage para instalarlas como bibliotecas locales. Puede que no sea una buena opción si el árbol de dependencias es grande.

Restringir las ubicaciones de los registros de Cloud Composer

Si tus registros de Cloud Composer contienen datos sensibles, puede que te interese redirigirlos a un segmento de Cloud Storage regional. Para ello, usa un sumidero de registros. Después de redirigir los registros a un segmento de Cloud Storage, estos no se envían a Cloud Logging.

gcloud

  1. Crea un segmento de Cloud Storage.

    gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION
    

    Sustituye:

    • LOCATION con la región en la que se encuentra el entorno.
    • BUCKET_NAME con el nombre del segmento. Por ejemplo, composer-logs-us-central1-example-environment.
  2. Crea un nuevo receptor de registro.

    gcloud logging sinks create \
    composer-log-sink-ENVIRONMENT_NAME \
    storage.googleapis.com/BUCKET_NAME \
    --log-filter "resource.type=cloud_composer_environment AND \
    resource.labels.environment_name=ENVIRONMENT_NAME AND \
    resource.labels.location=LOCATION"
    

    Sustituye:

    • ENVIRONMENT_NAME con el nombre del entorno.
    • BUCKET_NAME con el nombre del segmento.
    • LOCATION con la región en la que se encuentra el entorno.
  3. El resultado del comando anterior contiene el número de la cuenta de servicio. Asigna el rol Creador de objetos de Storage a esta cuenta de servicio:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NUMBER@gcp-sa-logging.iam.gserviceaccount.com" \
    --role='roles/storage.objectCreator' \
    --condition=None
    

    Sustituye:

    • PROJECT_ID con el ID del proyecto.
    • SA_NUMBER con el número de cuenta de servicio proporcionado por el comando gcloud logging sinks create en el paso anterior.
  4. Excluye los registros de tu entorno de Logging.

    gcloud logging sinks update _Default \
    --add-exclusion name=ENVIRONMENT_NAME-exclusion,filter=\
    "resource.type=cloud_composer_environment AND \
    resource.labels.environment_name=ENVIRONMENT_NAME AND \
    resource.labels.location=LOCATION"
    

    Sustituye:

    • ENVIRONMENT_NAME con el nombre del entorno.
    • LOCATION con la región en la que se encuentra el entorno.

Siguientes pasos