Les rôles disposant de privilèges élevés, tels que les administrateurs de base de données (DBA) et les développeurs, peuvent accéder à des données sensibles comme les informations d'identité des utilisateurs et les enregistrements de transactions lors de la maintenance des bases de données. Cela crée un risque de fuite de données. La fonctionnalité PolarDB Always-confidential pour PolarDB for MySQL chiffre les résultats des requêtes à la volée au niveau du proxy de base de données. Ainsi, seules les applications autorisées utilisant un pilote spécifique peuvent déchiffrer et accéder aux données sensibles. Utilisez cette fonctionnalité pour sécuriser les données sensibles et répondre aux exigences de conformité avec des modifications minimales du code de votre application.
Fonctionnement
La fonctionnalité PolarDB Always-confidential opère au niveau du proxy de base de données. Lorsqu'une requête SQL correspond à une politique de chiffrement configurée, le proxy chiffre les données dans les champs spécifiés avant de renvoyer les résultats de la requête au client.
Stockage des données : Cette fonctionnalité ne modifie pas l'état de stockage physique des données dans la base de données. Les données restent en clair dans les fichiers du système d'exploitation (OS) et sur les disques.
-
Perspectives utilisateur :
Super Admin : Les résultats des requêtes sont toujours renvoyés en clair et ne sont pas affectés par les politiques de chiffrement. Cela facilite la gestion de la base de données.
Compte standard : Les résultats des requêtes sont renvoyés sous forme de texte chiffré. Un pilote de chiffrement spécifique, tel que le pilote EncJDBC ou le pilote GoLang, ainsi que la clé correcte, sont requis pour déchiffrer les données sur le client.
Autres utilisateurs : Les résultats des requêtes sont renvoyés sous forme de texte chiffré et ne peuvent pas être déchiffrés, même avec la clé.
Prérequis
Le proxy de base de données de votre cluster PolarDB for MySQL doit être en version 2.9.12 ou ultérieure.
Afficher le numéro de version : Consultez la version actuelle du proxy de base de données de votre cluster sur la page .
Compatibilité des versions : Si la version du proxy de base de données est antérieure à la 2.9.12 mais postérieure à la 2.8.18, l'interface de configuration des règles de chiffrement est fusionnée avec la fonctionnalité de masquage dynamique des données. Pour une expérience optimale et une indépendance des fonctionnalités, nous vous recommandons de mettre à niveau vers la version 2.9.12 ou ultérieure.
Configurer le chiffrement à la volée
La configuration du chiffrement à la volée comprend trois étapes principales : configurer une clé, définir les autorisations de rôle et créer une politique de chiffrement.
Procédure
Accédez à la console PolarDB. Dans le volet de navigation de gauche, cliquez sur Clusters, sélectionnez la région où se trouve votre cluster, puis cliquez sur l'ID du cluster pour accéder à la page des détails du cluster.
Dans le volet de navigation de gauche, choisissez , puis cliquez sur l'onglet Encrypt.
Étape 1 : Configurer les clés
Sur la page Encrypt, activez l'interrupteur Key Management pour configurer la clé utilisée pour le chiffrement et le déchiffrement côté application.
Clé KMS (recommandée)
Vous pouvez utiliser le service Alibaba Cloud Key Management Service (KMS) pour héberger vos clés. KMS prend en charge la rotation des clés et offre un niveau élevé de sécurité et de maintenabilité. Même si l'AccessKey (AK) utilisé pour accéder à KMS est compromis, vous pouvez atténuer le risque en désactivant l'AK ou en renforçant la politique. La clé elle-même n'est pas compromise.
Seul le type Customer Master Key (CMK) dans KMS est pris en charge. Le type Default Key n'est pas pris en charge. Pour plus d'informations, consultez la rubrique Présentation du service de clés.
Configurer une Customer Master Key (CMK)
Revenez à la console PolarDB, sélectionnez la CMK correspondante et cliquez sur OK.
Clé gérée par l'utilisateur
Si vous ne configurez pas KMS, le système utilise par défaut une clé gérée par l'utilisateur. Vous êtes responsable de la génération, de la distribution et du stockage de la clé.
Les clés gérées par l'utilisateur présentent un risque de perte ou de fuite, et les mises à jour de clés ne sont actuellement pas prises en charge. Si une clé est perdue, vous ne pouvez pas déchiffrer les données chiffrées correspondantes. Vous devez établir des procédures de sécurité strictes pour gérer vos clés.
Étape 2 : Définir les autorisations de rôle
Sur la page Encrypt, accédez à l'onglet Role Policy Settings pour configurer les rôles pour différents comptes de base de données. Cela détermine s'ils voient les données en clair ou chiffrées lorsqu'ils interrogent les données.
Cliquez sur Create Role Permission Policy.
-
Dans la boîte de dialogue Role Permission Settings, définissez un nom de politique et attribuez des comptes de base de données aux rôles.
Policy Name : Spécifiez un nom pour la politique. Le nom peut comporter jusqu'à 64 caractères.
-
Super Account : Cochez les cases des comptes de base de données. Vous pouvez sélectionner plusieurs comptes. Les comptes de base de données figurant dans cette liste reçoivent toujours les résultats des requêtes en clair.
RemarqueLe rôle Super Account dispose des autorisations les plus élevées. Ajoutez uniquement les comptes de gestion ou d'audit nécessaires à cette liste et contrôlez strictement leur utilisation.
Standard Account : Cochez les cases des comptes de base de données. Vous pouvez sélectionner plusieurs comptes. Les comptes de base de données figurant dans cette liste reçoivent les résultats des requêtes sous forme de texte chiffré, mais peuvent déchiffrer les données à l'aide d'un pilote de chiffrement spécifique et d'une clé.
RemarqueAutres utilisateurs : Tout compte de base de données non configuré dans les deux rôles précédents. Ces utilisateurs reçoivent les résultats des requêtes sous forme de texte chiffré et ne peuvent pas déchiffrer les données.
Étape 3 : Créer une politique de chiffrement
Sur la page Encrypt, accédez à l'onglet Encryption Policy Settings pour configurer une politique de chiffrement.
Cliquez sur Create Encryption Policy.
-
Dans la boîte de dialogue qui s'affiche, configurez les paramètres de la politique comme décrit dans le tableau suivant.
RemarqueSpécifiez une étendue de chiffrement précise : Lors de la création d'une politique, spécifiez toujours explicitement les noms de la base de données, de la table et du champ. Évitez d'utiliser des configurations qui s'appliquent à toutes les bases de données ou à toutes les tables afin d'éviter d'affecter des services non concernés.
Paramètre
Description
Rule Name
Obligatoire. L'identifiant unique de la politique, par exemple
encrypt-user-email. La longueur ne peut pas dépasser 64 caractères.Description
Facultatif. Une description détaillée de la politique, telle que
Chiffrer le champ e-mail dans la table utilisateur de la base de données client. La longueur ne peut pas dépasser 64 caractères.Enable/Disable Rule
Un interrupteur pour activer ou désactiver la politique. La politique est activée par défaut et ne peut pas être modifiée lors de la création. Vous pouvez modifier ce paramètre après avoir créé la politique.
Associate Permission Policy
Obligatoire. Sélectionnez les autorisations de rôle définies à l'étape 2.
Database
Facultatif. La base de données à laquelle la politique s'applique. Vous pouvez sélectionner l'une des options suivantes :
-
(Par défaut) Toutes les bases de données : La politique s'applique à toutes les bases de données du cluster.
-
Spécifier les bases de données : Ce paramètre s'applique uniquement aux bases de données spécifiées. Utilisez une virgule
,pour séparer plusieurs noms de bases de données.
Table Name
Facultatif. La table à laquelle la politique s'applique. Vous pouvez sélectionner l'une des options suivantes :
-
(Par défaut) Toutes les tables : La politique s'applique à toutes les tables de la base de données spécifiée.
-
Spécifier les tables : S'applique uniquement aux tables spécifiées. Séparez plusieurs noms de tables par une virgule
,.
Column Name
Obligatoire. Les noms des champs à chiffrer, séparés par une virgule
,.Encryption Algorithm
Obligatoire. L'algorithme à utiliser pour le chiffrement. Cette fonctionnalité prend en charge les algorithmes suivants :
-
Série SM4 :
SM4-128-CBC,SM4-128-ECB,SM4-128-GCMetSM4-128-GTR. -
Série AES-128 :
AES-128-CBC,AES-128-ECB,AES-128-GCMetAES-128-GTR. -
Série AES-256 :
AES-256-CBC,AES-256-ECB,AES-256-GCMetAES-256-GTR.
-
Cliquez sur OK pour créer la politique.
Étape 4 : Gérer les politiques de chiffrement
Sur la page Encrypt, accédez à l'onglet Encryption Policy Settings pour gérer les politiques existantes.
Modifier une politique : Recherchez la règle cible et cliquez sur Modify dans la colonne Actions.
Supprimer une politique : Recherchez la règle cible, cliquez sur Delete dans la colonne Actions, puis cliquez sur OK dans la boîte de dialogue qui s'affiche.
Activer ou désactiver une politique : Recherchez la règle cible et cliquez sur l'interrupteur dans la colonne Enable/Disable Rule.
Renforcement de la sécurité
Pour empêcher les DBA ou les développeurs disposant d'autorisations de console de falsifier ou de supprimer malicieusement les politiques de chiffrement, vous pouvez utiliser Resource Access Management (RAM) pour renforcer la sécurité.
Principe fondamental
Créez des utilisateurs RAM distincts pour le personnel concerné, accordez-leur des autorisations pour gérer PolarDB, mais refusez-leur explicitement les autorisations de modifier ou de supprimer les politiques de chiffrement.
Instructions
-
Créer une politique de refus
Connectez-vous à la console RAM. Dans le volet de navigation de gauche, choisissez Permissions > Policies. Cliquez sur Create Policy pour créer une politique personnalisée.
-
Dans l'onglet de l'éditeur visuel, configurez les paramètres suivants :
Effect : Deny.
Service : PolarDB.
Actions : Sélectionnez Specify Actions. Sous Write operations, sélectionnez
polardb:ModifyMaskingRulesetpolardb:DeleteMaskingRules.Resource et Condition : Spécifiez les ressources auxquelles la politique s'applique et les conditions dans lesquelles elle prend effet. Pour plus d'informations, consultez la rubrique Éléments de base d'une politique.
Une fois la configuration terminée, cliquez sur OK. Dans la boîte de dialogue Create Policy, définissez le Policy Name et les Remarks.
-
Configurer les autorisations de l'utilisateur RAM
Connectez-vous à la console RAM. Dans le volet de navigation de gauche, choisissez Identities > Users. Recherchez l'utilisateur RAM cible et cliquez sur Add Permissions dans la colonne Actions.
Dans la section Policies, sélectionnez la politique de refus que vous avez créée, puis cliquez sur OK.
Résultat
Si un utilisateur RAM restreint tente de modifier ou de supprimer une politique de chiffrement, la console affiche une erreur No Permission. L'erreur indique que l'opération actuelle est explicitement refusée, avec le code d'erreur Forbidden.RAM et l'action d'autorisation polardb:ModifyMaskingRules. Le type de politique est une politique basée sur l'identité (niveau du compte) et la décision d'autorisation est un refus explicite. L'utilisateur doit contacter l'administrateur du compte pour obtenir une autorisation.
Étapes suivantes
Après avoir configuré les règles de chiffrement, votre application doit utiliser un pilote capable de gérer le chiffrement, tel que le pilote EncJDBC ou le pilote GoLang, pour lire et écrire correctement les données chiffrées.