Cette page a été traduite par l'API Cloud Translation.
Switch to English

Développer des applications dans un environnement Google Cloud limité

Nos documents sont souvent écrits pour vous aider à configurer un produit ou une fonctionnalité, mais certains documents peuvent ne pas fonctionner correctement si votre organisation applique des contraintes de sécurité. Par exemple, votre entreprise peut implémenter certaines contraintes de sécurité à partir du kit d'outils Cloud Foundation, des plans de sécurité Google Cloud. ou créer les vôtres.

Cet article vous aide à résoudre les erreurs de déploiement d'applications que vous pourriez rencontrer dans une organisation qui utilise des contraintes de sécurité.

Résoudre les problèmes liés aux contraintes de sécurité

Votre équipe chargée des opérations informatiques ou de la sécurité peut activer les contraintes de sécurité via une règle d'administration. Ces contraintes limitent la manière dont les ressources de votre organisation peuvent être utilisées.

Lorsque vous effectuez une requête API qui renvoie une erreur, la réponse de l'API doit vous indiquer si elle est enfreinte par les règles. La réponse doit expliquer la contrainte qui n'est pas respectée. Les étapes de dépannage suivantes vous permettent de déterminer et de comprendre si un cas de non-respect est détecté:

  1. Consultez le message d'erreur de la réponse de l'API. Pouvez-vous identifier la contrainte de sécurité enfreinte par votre déploiement ?

    L'exemple suivant vous indique que la contrainte sql.restrictPublicIp est à l'origine du problème:

    Organization Policy check failure
    The external IP of this instance violates the constraints/sql.restrictPublicIp enforced
    
  2. Si vous comprenez le non-respect des règles, mettez à jour la configuration de déploiement de vos ressources pour respecter les contraintes.

    Dans l'exemple précédent de restriction d'adresses IP publiques externes, configurez votre instance Cloud SQL pour qu'elle utilise une adresse IP privée interne.

  3. Si vous ne savez pas pourquoi la contrainte est appliquée ou comment procéder, contactez votre équipe de sécurité pour comprendre où la stratégie est appliquée dans la hiérarchie de votre organisation et afficher les solutions de contournement suggérées.

    Vérifiez si des modèles de déploiement, tels que des modèles Terraform, sont partagés au sein de votre organisation. Ces modèles doivent détailler la manière dont l'infrastructure Google Cloud a été configurée et limiter le déploiement de votre application.

Problèmes courants liés aux contraintes de sécurité

Lorsque vous déployez vos applications dans Google Cloud, vous pouvez rencontrer une erreur semblable à l'exemple suivant:

ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request:
Organization Policy check failure: the external IP of this instance violates the
constraints/sql.restrictPublicIp enforced at the 123456789 project.

Dans cet exemple, vous ne pouvez pas configurer une instance Cloud SQL afin qu'elle utilise une adresse IP publique externe. Une contrainte de sécurité est appliquée par une règle appliquée à votre environnement.

Les contraintes de sécurité courantes suivantes peuvent être activées et détaillées dans une réponse d'erreur d'API lors du développement de vos applications.

Instance

Nom de la contrainte Pourquoi la mise en œuvre ? Solution alternative
constraints/compute.disableNestedVirtualization Empêchez l'installation d'un hyperviseur compatible KVM à l'intérieur de la VM. Ce comportement peut présenter des risques de sécurité sans application de correctifs et de gestion appropriée. Configurez votre VM pour désactiver la virtualisation imbriquée à accélération matérielle.

Par défaut, il est activé pour toutes les VM Compute Engine s'exécutant sur Intel Haswell ou sur des plates-formes de processeurs plus récentes.
constraints/compute.requireShieldedVm Nécessite de nouvelles instances de VM pour utiliser des images disque protégées avec les options "Démarrage sécurisé", "Module vTPM" et "Surveillance de l'intégrité" activées. Ces options évitent que la VM soit altérée et que les données soient consultées ou modifiées. N'activez pas les VM protégées lorsque vous créez une VM.

Pour créer un cluster GKE, vous devez activer les nœuds GKE protégés.

À l'heure actuelle, Dataflow n'est pas compatible avec les nœuds de calcul avec VM protégée.
constraints/compute.disableSerialPortAccess Supprimez les vecteurs de sécurité pour interagir avec une VM, ou affichez les résultats des diagnostics qui pourraient être utilisés pour créer une attaque. N'activez pas l'accès au port série lorsque vous créez une VM.
constraints/compute.disableGuestAttributesAccess Minimise les informations sur l'hôte et la plate-forme sous-jacents susceptibles d'être utilisées par une application malveillante. N'utilisez pas l'API Compute Engine pour lire les attributs invités de vos VM Compute Engine.
constraints/compute.vmExternalIpAccess Empêchez les applications de s'exécuter avec une adresse IP externe et accessibles depuis Internet. Désactivez l'accès aux adresses IP externes pour vos VM. Vous ne pouvez utiliser qu'une adresse IP privée interne.

GKE peut utiliser des clusters privés sans adresse IP publique.

Dataprep et Dataflow ne sont actuellement pas compatibles avec les adresses IP privées.

Réseau virtuel et adresses IP

Nom de la contrainte Pourquoi la mise en œuvre ? Solution alternative
constraints/compute.skipDefaultNetworkCreation Assurez-vous que seuls les VPC (Virtual Private Cloud) gérés par l'entreprise peuvent être créés, et que le trafic réseau ou les règles de filtrage sont appliqués. Connectez vos applications à des VPC existants dans votre organisation. Les VPC créés automatiquement par défaut ne sont pas déployés pour les nouveaux projets.
constraints/compute.restrictXpnProjectLienRemoval Empêchez la suppression accidentelle d'un VPC partagé lorsque les ressources d'autres projets s'appuient sur les services réseau fournis. N'essayez pas de supprimer un VPC partagé. Vérifiez que vous ciblez la bonne ressource pour la suppression.
constraints/sql.restrictPublicIp Empêchez les instances Cloud SQL de s'exécuter avec une adresse IP externe et d'être accessibles depuis Internet. Ne configurez pas votre instance Cloud SQL pour qu'elle utilise une adresse IP publique externe.

À la place, configurez votre instance Cloud SQL pour qu'elle utilise une adresse IP privée interne.

Identité et authentification

Nom de la contrainte Pourquoi la mise en œuvre ? Solution alternative
constraints/iam.disableServiceAccountKeyCreation Les clés de compte de service peuvent présenter un risque de sécurité s'ils sont exposés. Par conséquent, évitez de les exporter. Utiliser une autre méthode d'authentification plutôt qu'un compte de service
constraints/storage.uniBucketBucketLevelAccess Réduisez le risque d'application des autorisations incorrectes ou incohérentes aux buckets de stockage en n'autorisant que l'authentification et la gestion des accès (IAM). Activez l'accès uniforme au niveau du bucket pour sécuriser votre bucket Cloud Storage.
constraints/iam.allowedPolicyMemberDomains Restreindre l'accès aux ressources Google Cloud aux domaines approuvés. Utilisez un compte appartenant à l'un des domaines approuvés. Il existe des problèmes connus supplémentaires pour cette contrainte.

Exemples d'erreurs de réponse d'API

Dans l'exemple précédent de restriction d'adresses IP publiques externes avec Cloud SQL, un cas de non-respect des règles entraîne l'affichage d'une erreur. Les exemples plus détaillés suivants montrent la réponse de l'API qui indique la contrainte à l'origine de la requête. Examinez vos propres réponses d'API pour comprendre pourquoi les déploiements d'applications échouent.

Échec de Cloud SQL avec l'outil de ligne de commande gcloud:

$ gcloud alpha sql instances create mysql-node --project my-sql-project

ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request:
Organization Policy check failure: the external IP of this instance violates the
constraints/sql.restrictPublicIp enforced at the 123456789 project.

Échec de Cloud SQL avec Terraform:

$ terraform apply plan.out

[...]
module.mysql-db.google_sql_database_instance.default: Creating...

Error: Error, failed to create instance backend01-db-1c81e0e3: googleapi:
Error 400: Invalid request: Organization Policy check failure: the external IP
of this instance violates the constraints/sql.restrictPublicIp enforced at the
123456789 project., invalid

Répertorier les règles d'administration appliquées à votre projet

Votre projet peut hériter des stratégies du dossier ou de l'organisation. En fonction de vos rôles d'accès, vous ne disposez peut-être pas d'une visibilité sur les stratégies appliquées aux niveaux les plus élevés de votre hiérarchie pour voir où la contrainte enfreinte est appliquée.

Pour afficher les règles appliquées ou les exceptions pour votre projet, utilisez la commande gcloud alpha resource-manager org-policies list et spécifiez votre ID de projet avec le paramètre --project:

gcloud alpha resource-manager org-policies list --project <project-id>

Pour en savoir plus sur une règle appliquée, utilisez la commande gcloud alpha resource-manager org-policies describe. Indiquez le nom de la règle à décrire et votre ID de projet avec le paramètre --project:

gcloud alpha resource-manager org-policies describe <policy-name> --project <project-id>

Étape suivante

Si vous ne parvenez pas à déterminer où une règle est appliquée et comment contourner une contrainte de sécurité, contactez votre équipe chargée des opérations informatiques ou de la sécurité. Chaque organisation applique des règles et des plans personnalisés selon son environnement.

Pour plus d'informations sur toutes les commandes qui peuvent être appliquées dans votre organisation, consultez la liste des contraintes de règles d'administration.