Configurer les restrictions d'emplacement des ressources

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

Fonctionnement des restrictions d'emplacement

Les restrictions d'emplacement pour Cloud Composer sont déterminées en fonction de la règle d'administration appliquée au projet dans lequel l'environnement Cloud Composer 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 spécifique au sein de cette région. Par exemple, la règle doit autoriser la région europe-west3 à créer des environnements Cloud Composer dans cette région.

Cloud Composer vérifie les restrictions d'emplacement à l'adresse suivante:

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

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

  • Stocke des images Airflow personnalisées par l'utilisateur dans les dépôts Artifact Registry régionaux.
  • Si l'emplacement multirégional US est explicitement interdit 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 votre cluster GKE.

Installer une dépendance Python sur un environnement IP privé avec des 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é dans votre réseau VPC.
  • Utilisez un serveur proxy sur 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 peut-être pas adaptée si l'arborescence de dépendances est volumineuse.

Restreindre les emplacements pour les journaux Cloud Composer

Si vos journaux Cloud Composer contiennent des données sensibles, vous souhaiterez peut-être rediriger les journaux Cloud Composer vers un bucket Cloud Storage régional. Pour ce faire, utilisez un récepteur de journaux. Une fois la journalisation redirigée vers un bucket Cloud Storage, ils ne sont pas envoyés à Cloud Logging.

gcloud

  1. Créez un bucket Cloud Storage.

    gsutil mb -l LOCATION gs://BUCKET_NAME
    

    Remplacez :

    • LOCATION par la région Compute Engine où 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 Compute Engine où se trouve l'environnement.
  3. Le résultat de la commande précédente contient le numéro du 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:serviceAccountNumber@gcp-sa-logging.iam.gserviceaccount.com" \
    --role='roles/storage.objectCreator' \
    --condition=None
    

    Remplacez :

    • PROJECT_ID par l'ID du projet ;
    • serviceAccountNumber 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 Monitoring.

    gcloud logging sinks update _Default \
    --add-exclusion name=<var>ENVIRONMENT_NAME</var>-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 Compute Engine où se trouve l'environnement.

Étape suivante