Configurer des restrictions d'emplacement des ressources

Airflow géré (3e génération) | Airflow géré (2e génération) | Airflow géré (ancienne 1re génération)

Cette page explique comment configurer des restrictions d'emplacement des ressources pour vous assurer que vos données stockées par Managed Airflow sont conservées dans les emplacements que vous spécifiez.

Fonctionnement des restrictions d'emplacement

Les restrictions d'emplacement pour Managed Airflow sont déterminées en fonction de la règle d'administration appliquée au projet dans lequel l'environnement Managed Airflow est créé. Cette règle est attribuée au sein du projet ou héritée de l'organisation.

Lorsque les restrictions d'emplacement sont activées, il est impossible de créer un environnement dans une région interdite par la règle. Si une région est répertoriée dans la liste des refus ou ne figure pas dans la liste d'autorisation, vous ne pouvez pas créer d'environnements dans cette région.

Pour permettre la création d'environnements, la règle doit autoriser la région entière et non une zone particulière de cette région. Par exemple, la région europe-west3 doit être autorisée par la règle pour pouvoir créer des environnements Airflow gérés dans cette région.

Managed Airflow vérifie les restrictions d'emplacement lors des opérations suivantes :

  • Création d'environnement.
  • Mise à niveau d'environnement si des ressources supplémentaires sont créées pendant l'opération.
  • Mise à niveau d'environnement pour les environnements plus anciens qui n'appliquent pas de restrictions d'emplacement sur les dépendances Managed Airflow.

En plus de vérifier les restrictions d'emplacement, Managed Airflow effectue les opérations suivantes :

  • Stocke des images Airflow personnalisées par l'utilisateur dans les dépôts Artifact Registry régionaux. Par exemple, ces images sont créées lorsque vous installez des images PyPI personnalisées dans votre environnement.
  • Si la zone multirégionale US est explicitement interdite par la règle, l'utilisation de Cloud Build est désactivée. Dans ce cas, les images Airflow personnalisées par l'utilisateur sont créées dans le cluster de votre environnement.

Installer une dépendance Python dans un environnement d'adresse IP privée avec restrictions d'emplacement des ressources

Si vous définissez des restrictions d'emplacement des ressources pour votre projet, Cloud Build ne peut pas être utilisé pour installer des packages Python. Par conséquent, l'accès direct aux dépôts sur l'Internet public est désactivé.

Pour installer des dépendances Python dans un environnement d'adresse IP privée lorsque vos restrictions d'emplacement n'autorisent pas l'emplacement multirégional US, utilisez l'une des options suivantes :

  • Utilisez un dépôt PyPI privé hébergé sur votre réseau VPC.

  • Utilisez un serveur proxy dans votre réseau VPC pour vous connecter à un dépôt PyPI sur l'Internet public. Spécifiez l'adresse du proxy dans le fichier /config/pip/pip.conf du bucket Cloud Storage.

  • Si votre stratégie de sécurité autorise l'accès à votre réseau VPC à partir d'adresses IP externes, vous pouvez configurer Cloud NAT.

  • Stockez les dépendances Python dans le dossier dags du bucket Cloud Storage pour les installer en tant que bibliothèques locales. Cette option n'est pas conseillée si l'arbre des dépendances est volumineux.

Limiter les emplacements pour les journaux Managed Airflow

Si vos journaux Managed Airflow contiennent des données sensibles, vous pouvez les rediriger vers un bucket Cloud Storage régional. Pour ce faire, utilisez un récepteur de journaux. Une fois que vous avez redirigé les journaux vers un bucket Cloud Storage, ils ne sont pas envoyés à Cloud Logging.

gcloud

  1. Créez un bucket Cloud Storage.

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

    Remplacez :

    • LOCATION par la région dans laquelle se trouve l'environnement.
    • BUCKET_NAME par le nom du bucket. Exemple : composer-logs-us-central1-example-environment.
  2. Créez un récepteur de journaux.

    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"
    

    Remplacez :

    • ENVIRONMENT_NAME par le nom de l'environnement.
    • BUCKET_NAME par le nom du bucket.
    • LOCATION par la région dans laquelle se trouve l'environnement.
  3. Le résultat de la commande précédente contient le numéro de compte de service. Attribuez le rôle Créateur des objets de l'espace de stockage à ce compte de service:

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

    Remplacez :

    • PROJECT_ID par l'ID du projet.
    • SA_NUMBER par le numéro de compte de service fourni par la commande gcloud logging sinks create à l'étape précédente.
  4. Excluez les journaux de votre environnement 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"
    

    Remplacez :

    • ENVIRONMENT_NAME par le nom de l'environnement.
    • LOCATION par la région dans laquelle se trouve l'environnement.

Étapes suivantes