Créez, activez, désactivez, modifiez et supprimez des règles de liste de blocage dans la console PolarDB. Cette rubrique décrit les règles de liste de blocage et explique comment les configurer.
Règles de liste de blocage
Le proxy offre une fonctionnalité de blocage. Configurez des règles de liste de blocage pour bloquer certains types d'instructions SQL ou des instructions SQL spécifiques.
Il existe trois modes de configuration des règles de liste de blocage :
fixed rule mode : Mode courant pour la configuration des règles de liste de blocage dans la console. Chaque règle s'applique à un compte et à un cluster spécifiques. Pour obtenir la liste des règles courantes prises en charge, consultez la section Configurer des règles de pare-feu SQL.
custom parameterized SQL mode : Ce mode paramètre toutes les variables de vos instructions SQL et enregistre le modèle généré dans la base de données. Le proxy bloque ensuite toute instruction SQL correspondant à ce modèle.
custom SQL mode : Ce mode bloque une instruction SQL spécifique telle quelle, sans paramétrer les variables. Les instructions SQL comportant des paramètres différents ne sont pas affectées.
Créer une règle de liste de blocage
Connectez-vous à la console PolarDB.
Dans le coin supérieur gauche, sélectionnez la région où le cluster est déployé.
Localisez le cluster cible et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
Sous l'onglet SQL Firewall, cliquez sur Add à gauche.
-
Dans la boîte de dialogue Create a Rule, configurez les paramètres selon le mode de liste de blocage souhaité.
-
fixed rule mode
-
Si vous sélectionnez fixed rule mode, configurez les paramètres suivants.
Tableau 1. Paramètres des règles de pare-feu SQL Paramètre
Obligatoire
Description
Basic Information
Rule Name
Oui
Nom de la règle de pare-feu SQL. Le nom doit respecter les exigences suivantes :
-
Être composé de lettres et de chiffres.
-
Compter jusqu'à 30 caractères.
Description
Non
Description permettant une identification et une gestion simplifiées.
RemarqueLa description peut contenir jusqu'à 64 caractères.
Endpoint
Oui
Endpoint auquel la règle s'applique.
Configurations
Rule Type
Oui
Sélectionnez Blacklist Rule.
Current Mode
Non
Mode de la règle de pare-feu SQL. Ce paramètre est toujours défini sur Protection Mode, ce qui signifie que les instructions SQL correspondant à une règle de liste de blocage sont bloquées.
Database Account Name
Non
Comptes de base de données auxquels cette règle s'applique. Les options suivantes sont disponibles :
-
All Accounts : Applique la règle à tous les comptes de base de données du cluster. Aucun texte n'est requis dans la zone de saisie.
-
Include : Applique la règle uniquement aux comptes de base de données spécifiés. Saisissez un ou plusieurs noms de compte séparés par des virgules.
-
Exclude : Applique la règle à tous les comptes de base de données du cluster, à l'exception de ceux que vous spécifiez. Saisissez un ou plusieurs noms de compte séparés par des virgules.
RemarqueLe nom du compte de base de données saisi doit respecter l'un des formats suivants :
-
AccountName. Exemple :user. -
AccountName@IPAddress. Exemple :user@10.0.0.0.
Block SQLs With Asterisks (*)
Non
Bloque les instructions SQL contenant un astérisque (
*). Valeurs valides :-
Enable : Bloque les instructions SQL contenant un astérisque (
*). -
Close : Ne bloque pas les instructions SQL contenant un astérisque (
*).
Block SQLs of Specific Types
Non
Bloque des types spécifiques d'instructions SQL. Valeurs valides :
-
Enable : Bloque des types spécifiques d'instructions SQL. Si vous activez l'option Block SQLs of Specific Types, vous devez sélectionner au moins un type. Types pris en charge :
-
CREATE -
DROP -
ALTER -
TRUNCATE -
RENAME -
INSERT -
UPDATE -
SELECT -
DELETE
-
-
Close : Ne bloque pas les types spécifiques d'instructions SQL.
Block SQLs Without WHERE
Non
Bloque les instructions SQL ne comportant pas de clause WHERE. Valeurs valides :
-
Enable : Bloque les types spécifiés d'instructions SQL ne comportant pas de clause WHERE. Si vous activez l'option Block SQLs Without WHERE, vous devez sélectionner au moins un type. Types pris en charge :
-
UPDATE -
SELECT -
DELETE
-
-
Close : Ne bloque pas les instructions SQL ne comportant pas de clause WHERE.
RemarqueCe paramètre s'applique uniquement aux instructions
SELECT,UPDATEetDELETEcontenant au moins un nom de table. Le proxy ne bloque pas les instructions telles queSELECT 1;.Block SQLs With Specific Columns
Non
Bloque les instructions SQL contenant des noms de colonne spécifiques. Valeurs valides :
-
Enable : Bloque les instructions SQL contenant des noms de colonne spécifiques. Si vous activez l'option Block SQLs With Specific Columns, les options suivantes sont disponibles :
-
All : Applique la règle à tous les noms de colonne du cluster. Aucun texte n'est requis dans la zone de saisie.
-
Include : Applique la règle uniquement aux noms de colonne spécifiés. Vous devez saisir un ou plusieurs noms de colonne séparés par des virgules (,).
-
Exclude : Applique la règle à tous les noms de colonne du cluster, à l'exception de ceux que vous spécifiez. Vous devez saisir un ou plusieurs noms de colonne séparés par des virgules (,).
-
-
Close : Ne bloque pas les instructions SQL contenant des noms de colonne spécifiques.
Block SQLs With Specific Functions
Non
Bloque les instructions SQL utilisant des fonctions spécifiques. Valeurs valides :
-
Enable : Bloque les instructions SQL utilisant des fonctions spécifiques. Si vous activez l'option Block SQLs With Specific Functions, les options suivantes sont disponibles :
-
All : Applique la règle à toutes les fonctions exécutées dans les bases de données du cluster. Aucun texte n'est requis dans la zone de saisie.
-
Include : Applique la règle uniquement aux fonctions spécifiées. Vous devez saisir un ou plusieurs noms de fonction séparés par des virgules (,).
-
Exclude : Applique la règle à toutes les fonctions, à l'exception de celles que vous spécifiez. Vous devez saisir un ou plusieurs noms de fonction séparés par des virgules (,).
-
-
Close : Ne bloque pas les instructions SQL utilisant des fonctions spécifiques.
Block SQLs With Specific Columns and Specific Functions
Non
Bloque les instructions SQL contenant des fonctions spécifiques et faisant référence à des noms de colonne spécifiques. Valeurs valides :
-
Enable : Bloque les instructions SQL contenant des fonctions spécifiques et faisant référence à des noms de colonne spécifiques. Si vous activez l'option Block SQLs With Specific Columns and Specific Functions, vous devez saisir une ou plusieurs valeurs pour les champs Function Name et Column Name. Plus précisément :
-
Si Function Name est défini sur Include et si Column Name est également défini sur Include, la règle s'applique aux instructions SQL du cluster qui utilisent une fonction spécifique et font référence à un nom de colonne spécifique.
-
Si Function Name est défini sur Include et si Column Name est défini sur Exclude, la règle s'applique aux instructions qui utilisent une fonction spécifiée sur n'importe quelle colonne, à l'exception de celles spécifiées.
-
Si Function Name est défini sur Exclude et si Column Name est défini sur Include, la règle s'applique aux instructions qui utilisent n'importe quelle fonction, à l'exception de celles spécifiées, sur une colonne spécifiée.
-
Si vous sélectionnez Exclude pour Function Name et également Exclude pour Column Name, cela signifie que la règle s'applique aux instructions SQL du cluster qui utilisent des fonctions autres que celles spécifiées et font référence à des colonnes autres que celles spécifiées.
-
-
Close : Ne bloque pas les instructions SQL contenant des fonctions spécifiques et faisant référence à des noms de colonne spécifiques.
-
Une fois la règle configurée, cliquez sur OK.
-
-
custom parameterized SQL mode
-
Si vous sélectionnez custom parameterized SQL mode, configurez les paramètres requis. Pour plus d'informations, consultez la section Paramètres des règles de pare-feu SQL.
RemarqueLorsque vous utilisez le custom parameterized SQL mode, il n'est pas nécessaire d'activer des règles de blocage sous Configurations.
Une fois la règle configurée, cliquez sur OK.
-
Utilisez le Database Account Name de l'étape précédente pour vous connecter à l'endpoint de base de données spécifié. Pour bloquer une instruction SQL, ajoutez la commande
hint/* store_to_blacklist */avant l'instruction. Par exemple, pour bloquer l'instruction SQLselect id from sqlblack_test where id = 1;, exécutez la commande suivante :/* store_to_blacklist */ select id from sqlblack_test where id = 1;Le modèle paramétré est le suivant :
select id from sqlblack_test where id = ?Dans ce modèle,
?représente n'importe quelle valeur.Au bout d'environ 5 secondes, le proxy bloque toute instruction SQL de ce compte correspondant au modèle. L'erreur suivante est renvoyée :
ERROR 1141 (HY000): This SQL is rejected by SQL Firewall. Access denied for user 'xxx'@'x.x.x.x' to database 'xzh': This SQL is on blacklist bl_test.Dans ce message,
bl_testcorrespond au nom de la règle de liste de blocage.
RemarqueSi vous utilisez le client en ligne de commande MySQL, vous devez ajouter l'option
-c. Sinon, la commandehintne prendra pas effet.La règle prend effet au bout d'environ 5 secondes.
-
-
custom SQL mode
-
Si vous sélectionnez custom SQL mode, configurez les paramètres requis. Pour plus d'informations, consultez la section Paramètres des règles de pare-feu SQL.
RemarqueLorsque vous utilisez le custom SQL mode, il n'est pas nécessaire d'activer des règles de blocage sous Configurations.
Une fois la règle configurée, cliquez sur OK.
-
Utilisez le Database Account Name de l'étape précédente pour vous connecter à l'endpoint de base de données spécifié. Pour bloquer une instruction SQL, ajoutez la commande
hint/* orginal_store_to_blacklist */avant l'instruction. Par exemple, pour bloquer l'instructionupdate t set k = 2 where id = 2;, exécutez la commande suivante :/* orginal_store_to_blacklist */ update t set k = 2 where id = 2;Au bout d'environ 5 secondes, lorsque vous utilisez ce compte pour exécuter l'instruction SQL exacte
update t set k = 2 where id = 2;, le proxy bloque l'instruction. Les autres instructions SQL ne sont pas affectées. L'erreur suivante est renvoyée :ERROR 1141 (HY000): This SQL is rejected by SQL Firewall. Access denied for user 'xxx'@'x.x.x.x' to database 'xzh': This SQL is on blacklist bl_test.Dans ce message,
bl_testcorrespond au nom de la règle de liste de blocage.
RemarqueSi vous utilisez le client en ligne de commande MySQL, vous devez ajouter l'option
-c. Sinon, la commandehintne prendra pas effet.La règle prend effet au bout d'environ 5 secondes.
-
-
Activer ou désactiver une règle de liste de blocage
Connectez-vous à la console PolarDB.
Dans le coin supérieur gauche, sélectionnez la région où le cluster est déployé.
Localisez le cluster cible et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
-
Sous l'onglet SQL Firewall, localisez la règle à activer ou désactiver, puis cliquez sur le commutateur Enable/Disable.
RemarqueVous pouvez également sélectionner plusieurs règles dans la liste, puis cliquer sur Enable ou Disable en bas de la liste pour les activer ou les désactiver en masse.
Dans la boîte de dialogue Enable ou Disable qui s'affiche, cliquez sur OK.
Modifier une règle de liste de blocage
Connectez-vous à la console PolarDB.
Dans le coin supérieur gauche, sélectionnez la région où le cluster est déployé.
Localisez le cluster cible et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
-
Sous l'onglet SQL Firewall, localisez la règle à modifier, puis cliquez sur Modify dans la colonne Operation. Dans la boîte de dialogue Modify A Rule, modifiez les paramètres. Pour plus de détails sur les paramètres, consultez la section Paramètres des règles de pare-feu SQL.
RemarqueVous ne pouvez pas modifier le Rule Name d'une règle.
Une fois la règle modifiée, cliquez sur OK.
Depuis la console, vous ne pouvez pas modifier les instructions SQL paramétrées dans les règles créées avec le custom parameterized SQL mode, ni les instructions SQL spécifiques dans les règles créées avec le custom SQL mode. Pour modifier ces instructions, vous devez les supprimer de la table de base de données, puis les ajouter à nouveau.
Supprimer une règle de liste de blocage
Connectez-vous à la console PolarDB.
Dans le coin supérieur gauche, sélectionnez la région où le cluster est déployé.
Localisez le cluster cible et cliquez sur son ID.
Dans le volet de navigation de gauche, choisissez .
-
Sous l'onglet SQL Firewall, localisez la règle à supprimer, puis cliquez sur Delete dans la colonne Operation.
RemarqueVous pouvez également sélectionner plusieurs règles dans la liste, puis cliquer sur Delete en bas de la liste pour les supprimer en masse.
Dans la boîte de dialogue Delete qui s'affiche, cliquez sur OK.
Supprimer des règles pour les modes personnalisés
-
Règle de liste de blocage en custom parameterized SQL mode
Vous pouvez supprimer une règle de liste de blocage en custom parameterized SQL mode de l'une des manières suivantes :
-
Supprimez une règle de liste de blocage pour le custom parameterized SQL mode en activant ou désactivant une règle de liste de blocage ou en supprimant une règle de liste de blocage.
RemarqueSi vous désactivez simplement la règle de liste de blocage dans la console sans supprimer l'instruction SQL paramétrée correspondante de la table
proxy_auditing.sql_list, la règle reprendra effet si vous la réactivez pour le même compte. -
Connectez-vous au nœud principal de l'endpoint à l'aide d'un compte super administrateur, puis supprimez l'instruction SQL correspondante de la table
proxy_auditing.sql_list. Au bout d'environ 5 secondes, le proxy ne bloquera plus l'instruction.RemarqueN'utilisez pas la commande
DROPpour supprimer la table.
-
-
Règle de liste de blocage en custom SQL mode
Vous pouvez supprimer une règle de liste de blocage en custom SQL mode de l'une des manières suivantes :
-
Pour gérer une règle de liste de blocage en custom SQL mode, vous pouvez activer ou désactiver une règle de liste de blocage ou supprimer une règle de liste de blocage.
RemarqueSi vous désactivez simplement la règle de liste de blocage dans la console sans supprimer l'instruction SQL correspondante de la table
proxy_auditing.org_sql_list, la règle reprendra effet si vous la réactivez pour le même compte. -
Connectez-vous au nœud principal de l'endpoint à l'aide d'un compte super administrateur, puis supprimez l'instruction SQL correspondante de la table
proxy_auditing.org_sql_list. Au bout d'environ 5 secondes, le proxy ne bloquera plus l'instruction.RemarqueN'utilisez pas la commande
DROPpour supprimer la table.
-