Règles d'administration Cloud SQL

Cette page explique comment utiliser une règle d'administration avec votre projet Cloud SQL. Pour commencer à créer des règles d'administration, consultez la page Ajouter des règles d'administration.

Aperçu

Les règles d'administration permettent aux administrateurs de définir des restrictions sur la manière dont les utilisateurs peuvent configurer des instances au sein de cette organisation. Les règles d'administration définissent des règles, appelées contraintes, que l'administrateur place sur un projet, un dossier ou une organisation. Les contraintes appliquent la règle à toutes les instances. Par exemple, si vous essayez d'ajouter une instance à une entité dotée d'une règle d'administration, la contrainte exécute une vérification pour s'assurer que la configuration de l'instance respecte les exigences de la contrainte. Si la vérification échoue, Cloud SQL ne crée pas l'instance.

Lorsque vous ajoutez des projets à une organisation ou un dossier qui utilise une règle d'administration, les projets héritent des contraintes de cette règle.

Pour en savoir plus sur les règles d'administration, consultez les sections concernant le service de règles d'administration, les contraintes et l'évaluation hiérarchique.

Il existe deux types de règles d'administration spécifiques à Cloud SQL :

Règles d'administration des connexions

Les règles d'administration des connexions permettent un contrôle centralisé des paramètres des adresses IP publiques de Cloud SQL, afin de réduire la surface d'attaque de sécurité des instances Cloud SQL sur Internet. Un administrateur des règles d'administration peut utiliser une règle de connexion pour restreindre les configurations des adresses IP publiques de Cloud SQL au niveau du projet, du dossier ou de l'organisation.

Contraintes liées aux règles d'administration des connexions

Les règles d'administration des connexions s'appuient sur deux types de contraintes pour réguler l'accès aux instances Cloud SQL.

Contrainte Description Par défaut
Limiter l'accès des adresses IP publiques sur les instances Cloud SQL Cette contrainte booléenne limite la configuration d'adresses IP publiques, sur les instances Cloud SQL pour lesquelles cette contrainte est définie sur True. Cette contrainte n'est pas rétroactive. Les instances Cloud SQL comportant déjà des adresses IP publiques fonctionnent toujours, même lorsque la contrainte est appliquée.

Par défaut, l'accès aux adresses IP publiques aux instances Cloud SQL est autorisé.

constraints/sql.restrictPublicIp
ALLOW (Autoriser)
Limiter le nombre de réseaux autorisés sur les instances Cloud SQL Lorsqu'elle est définie sur True, cette contrainte booléenne limite l'ajout de réseaux autorisés pour l'accès à la base de données sans proxy sur les instances Cloud SQL. Cette contrainte n'est pas rétroactive. Les instances Cloud SQL comportant déjà des réseaux autorisés fonctionnent toujours, même lorsque la contrainte est appliquée.
Par défaut, vous pouvez ajouter des réseaux autorisés aux instances Cloud SQL.

constraints/sql.restrictAuthorizedNetworks
ALLOW (Autoriser)

Restrictions liées aux règles d'administration des connexions

Lorsque vous définissez les règles d'administration pour chaque projet, vous devez déterminer si l'une des conditions suivantes s'applique à votre projet :

Conflits d'adresses IP publiques d'instances dupliquées avec accès en lecture

Les instances dupliquées avec accès en lecture de Cloud SQL se connectent à l'instance principale via la connexion sans proxy à la base de données. Utilisez le paramètre Réseaux autorisés de l'instance principale pour configurer explicitement ou implicitement les adresses IP publiques des instances dupliquées avec accès en lecture.

Si l'instance principale et l'instance dupliquée se trouvent dans la même région et activent une adresse IP privée, il n'y a aucun conflit avec les contraintes des règles d'administration des connexions.

Incompatibilité avec gcloud sql connect

La commande gcloud sql connect utilise une adresse IP publique pour se connecter directement aux instances Cloud SQL. Par conséquent, elle n'est pas compatible avec la contrainte sql.restrictPublicIp. Il s'agit généralement d'un problème pour les instances qui utilisent une adresse IP privée.

En outre, la commande gcloud sql connect n'utilise pas le proxy, ce qui la rend incompatible avec la contrainte sql.restrictAuthorizedNetworks.

Utilisez plutôt la version bêta de la commande :

gcloud beta auth login
gcloud beta sql connect [INSTANCE_ID]

Cette version utilise le proxy d'authentification Cloud SQL. Pour plus d'informations, consultez la documentation de référence sur gcloud beta sql connect.

La première fois que vous exécutez cette commande, il vous est demandé d'installer le composant gcloud du proxy d'authentification Cloud SQL. Pour cela, vous devez disposer d'une autorisation en écriture sur le répertoire d'installation du SDK gcloud sur votre machine cliente.

Accès aux services hébergés par GCP

Si votre application nécessite un accès aux instances Cloud SQL à partir d'autres services hébergés par GCP, tels qu'App Engine, elle doit utiliser des adresses IP publiques. N'appliquez pas la contrainte sql.restrictPublicIp sur le projet. Vous pouvez cependant appliquer sql.restrictAuthorizedNetworks, car les connexions à partir d'App Engine passent par la connexion sécurisée (proxy).

Conflits d'adresses IP publiques d'instances dupliquées de basculement MySQL

Une instance dupliquée de basculement MySQL fonctionne comme une instance dupliquée avec accès en lecture pour les règles d'administration des connexions. Si l'instance principale et l'instance dupliquée se trouvent dans la même région et activent une adresse IP privée, il n'y a aucun conflit avec les contraintes des règles d'administration des connexions.

Adresses IP privées non RFC 1918

Les connexions à une instance Cloud SQL à l'aide d'une adresse IP privée sont automatiquement autorisées pour les plages d'adresses RFC 1918. Cela permet à tous les clients privés d'accéder à la base de données sans passer par le proxy. Vous devez configurer des plages d'adresses non-RFC 1918 en tant que réseaux autorisés.

Pour utiliser des plages d'adresses IP privées non-RFC 1918 qui ne sont pas configurées dans les réseaux autorisés, vous pouvez effectuer l'une des actions suivantes, ou les deux :

  1. N'appliquez pas sql.restrictAuthorizedNetworks. Si les réseaux autorisés appliquent également sql.restrictPublicIp, vous ne pourrez pas les configurer dans la console. Utilisez plutôt l'API Cloud SQL ou gcloud.
  2. Utiliser des connexions avec proxy pour les instances IP privées.

Problèmes connus pour les règles d'administration des connexions

Contrainte de limitation des réseaux autorisés

Pour les instances Cloud SQL ayant une entrée de réseaux autorisés préexistante, d'autres entrées de réseaux autorisés sont permises, même si vous utilisez la contrainte de limitation du nombre de réseaux autorisés sur les instances Cloud SQL (sql.restrictAndhorizedNetworks). Cela concerne également les instances ayant activé les instances dupliquées avec accès en lecture seule ou les instances dupliquées de basculement. En effet, ces instances dupliquées disposent d'une entrée de réseaux autorisés qui n'est pas visible par l'utilisateur.

Ce problème connu sera éliminé si la contrainte ne permet que de supprimer, et non d'ajouter, des entrées de réseaux autorisés.

Règles d'administration des clés de chiffrement gérées par le client (CMEK)

Cloud SQL accepte deux contraintes de règle d'administration qui contribuent à assurer la protection CMEK dans l'ensemble d'une organisation : constraints/gcp.restrictNonCmekServices et constraints/gcp.restrictCmekCryptoKeyProjects.

La contrainte constraints/gcp.restrictNonCmekServices nécessite une protection CMEK pour sqladmin.googleapis.com. Lorsque vous ajoutez cette contrainte et que vous ajoutez sqladmin.googleapis.com à la liste des services de la règle Deny, Cloud SQL refuse de créer des instances, sauf si elles sont activées avec CMEK.

La contrainte constraints/gcp.restrictCmekCryptoKeyProjects limite les clés de chiffrement Cloud KMS à utiliser pour la protection CMEK dans les instances Cloud SQL pour MySQL. Avec cette contrainte, lorsque Cloud SQL crée une instance avec CMEK, celle-ci doit provenir d'un projet, d'un dossier ou d'une organisation autorisée.

Ces contraintes ne sont appliquées qu'aux instances Cloud SQL pour MySQL nouvellement créées.

Pour en savoir plus, consultez la page Règles d'administration CMEK. Pour en savoir plus sur les contraintes des règles d'administration CMEK, consultez la page Contraintes liées aux règles d'administration.

Règles d'application des règles d'administration

Cloud SQL applique la règle d'administration lors des opérations suivantes :

  • Création d'une instance
  • Création d'une instance dupliquée
  • Redémarrage de l'instance
  • Migration d'instances
  • Clonage d'une instance

Comme pour toutes les contraintes des règles d'administration, les modifications apportées aux règles ne s'appliquent pas rétroactivement aux instances existantes.

  • Une nouvelle règle n'a aucun effet sur les instances existantes.
  • Une configuration d'instance existante reste valide, sauf si un utilisateur bascule la configuration de l'instance d'un état de conformité vers un état de non-conformité via la console, l'outil de ligne de commande, gcloud, ou un appel de procédure à distance (RPC).
  • Une mise à jour de maintenance planifiée n'entraîne pas l'application des règles, car la maintenance ne modifie pas la configuration des instances.

Étape suivante