Les listes blanches d'adresses IP configurées sur une instance RDS s'appliquent à l'ensemble des comptes de cette instance. Il n'existe aucun mécanisme natif permettant de restreindre l'accès d'un compte individuel à des adresses IP sources spécifiques, ce qui accroît la surface d'attaque. Pour remédier à cette situation, liez un compte MySQL à une adresse IP spécifique en exécutant directement des instructions SQL sur l'instance RDS. Le compte lié ne pourra alors se connecter qu'à partir de cette adresse.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un compte privilégié sur l'instance RDS. Pour plus d'informations, consultez la rubrique Créer un compte sur une instance ApsaraDB RDS for MySQL
Notes d'utilisation
Gestion via la console et l'API
Une fois un compte lié à une adresse IP, sa gestion via la console ApsaraDB RDS ou les opérations API peut entraîner des problèmes. Privilégiez l'utilisation de Data Management (DMS) ou d'instructions SQL pour gérer ce type de compte.
Conflits de noms de compte
MySQL identifie chaque compte par son nom d'utilisateur et son adresse hôte. Si deux comptes partagent le même nom d'utilisateur avec des motifs d'hôte qui se chevauchent — par exemple, user@192.168.% et user@192.168.%.% — l'ordre d'authentification n'est pas garanti, ce qui peut provoquer des exceptions d'accès. Si les mots de passe ou les permissions de ces deux comptes diffèrent, la connexion peut échouer ou les permissions appliquées après la connexion à la base de données peuvent être incorrectes. Utilisez des noms d'utilisateur distincts pour éviter cette ambiguïté.
Lier un compte à une adresse IP
Connectez-vous à l'instance RDS. Pour plus d'informations, consultez la rubrique Utiliser un client ou la CLI pour se connecter à une instance ApsaraDB RDS for MySQL.
-
Exécutez les instructions SQL suivantes pour créer un compte et le lier à une adresse IP spécifique.
L'exemple ci-dessous crée l'utilisateur
test001, lui accorde l'accès à la base de donnéesrds001et restreint les connexions à l'adresse IP42.120.XX.XX.-- Create the user and bind it to the specified IP address CREATE USER `test001`@`42.120.XX.XX` IDENTIFIED BY 'passwd'; -- Grant global privileges required for replication monitoring GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test001'@'42.120.XX.XX'; -- Grant full access to the target database GRANT ALL PRIVILEGES ON `rds001`.* TO 'test001'@'42.120.XX.XX'; -- Grant read access to MySQL system tables GRANT SELECT ON mysql.* TO 'test001'@'42.120.XX.XX';La valeur d'hôte dans le nom du compte (
42.120.XX.XX) prend en charge les formats suivants :Format Exemple Description Adresse IP exacte 42.120.1.1Restreint les connexions à une seule adresse IP Motif avec caractère générique 192.168.%Autorise les connexions depuis n'importe quelle adresse IP dans la plage 192.168.x.x Aucune restriction %Autorise les connexions depuis n'importe quelle adresse IP La console ApsaraDB RDS n'affiche les bases de données autorisées d'un compte que lorsque l'hôte est défini sur le caractère générique
%. Si vous liez le compte à une adresse IP spécifique, ses bases de données autorisées ne seront pas visibles dans la console. -
(Facultatif) Pour modifier l'adresse IP liée, exécutez l'instruction
RENAME USER:RENAME USER `test001`@`42.120.XX.XX` TO `test001`@`42.121.XX.XX`;