Bonnes pratiques concernant la sécurité

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Il est essentiel de sécuriser votre environnement Cloud Composer pour protéger les données sensibles et empêcher les accès non autorisés. Cette page présente les principales bonnes pratiques, y compris des recommandations concernant la sécurité du réseau, Identity and Access Management, le chiffrement et la gestion de la configuration de l'environnement.

Pour en savoir plus sur les fonctionnalités de sécurité disponibles dans Cloud Composer, consultez Présentation de la sécurité.

Gérer la configuration de l'environnement et les DAG à l'aide du contrôle des versions

Exemple de pipeline CI/CD Airflow
Figure 1. Exemple de pipeline CI/CD Airflow (cliquez pour agrandir)
  • Créez votre environnement à l'aide de Terraform. Vous pouvez ainsi stocker la configuration de l'environnement sous forme de code dans un dépôt. De cette façon, les modifications apportées à la configuration de votre environnement peuvent être examinées avant d'être appliquées. Vous pouvez également réduire le nombre d'utilisateurs autorisés à modifier la configuration en attribuant des rôles avec moins d'autorisations.

  • Dans Identity and Access Management, désactivez l'accès direct aux DAG et à la configuration de l'environnement pour les utilisateurs standards, comme indiqué dans la section Identity and Access Management.

  • Déployez des DAG dans votre environnement avec un pipeline CI/CD afin que le code DAG soit récupéré à partir d'un dépôt. De cette façon, les DAG sont examinés et approuvés avant que les modifications ne soient fusionnées dans le système de contrôle des versions. Au cours du processus d'examen, les approbateurs s'assurent que les DAG répondent aux critères de sécurité établis au sein de leurs équipes. L'étape d'examen est essentielle pour éviter le déploiement de DAG susceptibles d'effectuer des actions indésirables.

    Voici quelques aspects importants liés à la sécurité à prendre en compte lorsque vous examinez des DAG :

    • Les DAG qui modifient le contenu du bucket de l'environnement ne doivent pas modifier le code d'autres DAG ni accéder à des données sensibles, sauf si cela est prévu.

    • Les DAG ne doivent pas envoyer de requêtes directes à la base de données Airflow, sauf si cela est prévu. Dans un environnement Cloud Composer, un DAG a accès à toutes les tables de la base de données Airflow. Il est possible de récupérer des informations à partir de n'importe quelle table, de les traiter, puis de les stocker en dehors de la base de données Airflow.

Sécurité du réseau

Identity and Access Management

  • Isoler les autorisations. Créez des comptes de service pour les environnements et utilisez des comptes de service différents pour les différents environnements. N'attribuez à ces comptes de service que les autorisations strictement nécessaires pour faire fonctionner ces environnements et effectuer les opérations définies dans les DAG Airflow qu'ils exécutent.

  • Évitez d'utiliser des comptes de service avec des autorisations étendues. Bien qu'il soit possible de créer un environnement qui utilise un compte disposant d'autorisations étendues, telles que celles accordées par le rôle de base Éditeur, cela crée un risque que les DAG utilisent des autorisations plus étendues que prévu.

  • Ne vous fiez pas aux comptes de service par défaut des services Google utilisés par Cloud Composer. Il est souvent impossible de réduire les autorisations disponibles pour ces comptes de service sans affecter également d'autres services Google de votre projet.

  • Assurez-vous de connaître les considérations de sécurité concernant les comptes de service des environnements et de comprendre comment ce compte interagit avec les autorisations et les rôles que vous accordez aux utilisateurs individuels de votre projet.

  • Respectez le principe du moindre privilège. N'accordez aux utilisateurs que les autorisations minimales nécessaires. Par exemple, attribuez des rôles IAM afin que seuls les administrateurs puissent accéder au bucket de l'environnement et que l'accès direct soit désactivé pour les utilisateurs standards. Par exemple, le rôle Utilisateur Composer n'autorise l'accès qu'à l'UI DAG et à l'UI Airflow.

  • Appliquez le contrôle des accès à l'interface utilisateur Airflow, qui permet de réduire la visibilité dans l'interface utilisateur Airflow et l'interface utilisateur DAG en fonction du rôle Airflow de l'utilisateur. Vous pouvez également l'utiliser pour attribuer des autorisations au niveau du DAG pour des DAG individuels.

  • Examinez-les régulièrement. Auditez régulièrement les autorisations et les rôles IAM pour identifier et supprimer les privilèges excessifs ou inutilisés.

  • Faites attention à ne pas transmettre ni stocker de données sensibles :

    • Soyez prudent lorsque vous transmettez ou stockez des données sensibles telles que des informations permettant d'identifier personnellement les utilisateurs ou des mots de passe. Si nécessaire, utilisez Secret Manager pour stocker en toute sécurité les connexions et les secrets Airflow, les clés API, les mots de passe et les certificats. Ne stockez pas ces informations dans vos DAG ni dans vos variables d'environnement.

    • N'accordez les autorisations IAM pour le bucket de l'environnement qu'aux utilisateurs de confiance. Utilisez des autorisations par objet, si possible. La section Considérations de sécurité pour les comptes de service de l'environnement liste plusieurs façons dont les utilisateurs ayant accès au bucket de l'environnement peuvent effectuer des actions au nom du compte de service de l'environnement.

    • Assurez-vous de bien comprendre quelles données sont stockées dans les instantanés. N'accordez l'autorisation de créer des instantanés d'environnement et d'accéder au bucket dans lequel ils sont stockés qu'aux utilisateurs de confiance.

    • Toutes les interfaces externes de Cloud Composer utilisent le chiffrement par défaut. Lorsque vous vous connectez à des produits et services externes, assurez-vous d'utiliser une communication chiffrée (SSL/TLS).

Étapes suivantes