Data Management (DMS) vous permet de configurer des règles de sécurité pour les opérations dans le module Console SQL. Vous pouvez gérer des bases de données relationnelles et non relationnelles depuis la console SQL. Cette rubrique décrit les règles de sécurité applicables aux opérations dans la console SQL. L'exemple présenté ici concerne les règles de sécurité pour ApsaraDB RDS for MySQL.
Points de contrôle dans la console SQL
|
Point de contrôle |
Description |
|
Basic Configuration Item |
Spécifiez des configurations de base, telles que le nombre maximal de lignes renvoyées par requête, la possibilité de modifier les ensembles de résultats et le calcul des données sensibles. |
|
SQL Execution Quantity Criteria |
Limitez le nombre d'instructions SQL soumises simultanément. |
|
DQL SQL Criteria |
Définissez des contraintes sur l'exécution des instructions du langage de requête de données (DQL). |
|
Other SQL Criteria |
Définissez des contraintes sur l'exécution de plusieurs types d'instructions SQL. Par exemple, autorisez l'exécution d'instructions SQL non identifiées et rejetez celle des instructions qui suppriment des tables entières. |
|
SQL Permission Criteria |
Définissez des contraintes sur l'exécution des instructions SQL en fonction des autorisations relatives aux bases de données, aux tables, aux colonnes sensibles et aux lignes. |
|
SQL Execution Performance Criteria |
Rejetez l'exécution des instructions DDL si la taille de l'espace de table concerné dépasse la limite supérieure, ou rejetez l'exécution des instructions DML si le nombre de lignes affectées dépasse la limite supérieure. |
|
Exception Recognition Criteria of Database and Table Column Permissions |
Spécifiez s'il faut poursuivre ou rejeter l'exécution d'instructions SQL (telles que DQL, DML, DDL ou DCL) en cas d'exceptions d'analyse. |
|
SQL Execution Criteria in Logical Databases |
Définissez des contraintes sur l'exécution de différents types d'instructions SQL. |
DMS fournit de nombreuses configurations et règles prédéfinies pour les points de contrôle. Modifiez les configurations, changez le statut des règles et personnalisez les règles de sécurité selon vos besoins métier. Pour plus d'informations, consultez la section Configurer les règles dans un ensemble de règles de la rubrique « Gérer les règles de sécurité ».
L'organigramme suivant illustre le fonctionnement des points de contrôle.
Facteurs et actions
-
Un facteur est une variable prédéfinie fournie par DMS. Les facteurs permettent d'obtenir le contexte à valider par les règles de sécurité, comme les catégories d'instructions SQL et le nombre de lignes de données à affecter.
Tous les facteurs commencent par
@fac., suivi du nom du facteur.Chaque module de la page Détails d'un ensemble de règles de sécurité propose différents facteurs pour différents points de contrôle.
Tableau 1. Facteurs fournis par le module Console SQL
Facteur
Description
@fac.sql_count
Nombre d'instructions SQL soumises simultanément.
@fac.select_sql_count
Nombre d'instructions DQL parmi les instructions SQL soumises simultanément.
@fac.dml_sql_count
Nombre d'instructions DML parmi les instructions SQL soumises simultanément.
@fac.sql_type
Catégorie d'une instruction SQL. Pour plus d'informations, consultez la section Instructions SQL pouvant être exécutées dans DMS de cette rubrique.
@fac.sql_sub_type
Sous-catégorie d'une instruction SQL. Pour plus d'informations, consultez la section Instructions SQL pouvant être exécutées dans DMS de cette rubrique.
@fac.env_type
Type d'environnement. La valeur correspond à un identifiant d'environnement, tel que
DEVouPRODUCT. Pour plus d'informations, consultez Type d'environnement de l'instance.@fac.fulltable_delete
Indique si l'instruction SQL actuelle est une opération
DELETEsur une table entière. Les valeurs valides sont :true
false
@fac.fulltable_update
Spécifie si l'instruction SQL actuelle est une opération
UPDATEsur une table entière. Valeurs valides :true
false
@fac.current_sql
Instruction SQL actuelle.
@fac.user_is_admin
Indique si l'utilisateur actuel est un administrateur DMS. Valeurs valides :
true
false
@fac.user_is_dba
Indique si l'utilisateur actuel est un administrateur de base de données (DBA). Valeurs valides :
true
false
@fac.user_is_inst_dba
Indique si l'utilisateur actuel est un DBA de l'instance de base de données actuelle. Valeurs valides :
true
false
@fac.user_is_sec_admin
Indique si l'utilisateur actuel est un administrateur de sécurité. Valeurs valides :
true
false
@fac.sql_affected_rows
Nombre de lignes à affecter par l'instruction SQL actuelle.
RemarqueUne opération
COUNTsera effectuée ; utilisez cette option avec prudence.@fac.sql_relate_table_store_size
Taille totale estimée de la table à laquelle l'instruction SQL actuelle accède. Unité : Mo.
RemarqueCette valeur est estimée sur la base des métadonnées obtenues par DMS. Il ne s'agit pas d'une valeur réelle.
-
Action : comportement adopté par le système lorsqu'une condition
ifest remplie. L'action exprime l'objectif principal d'une règle de sécurité, comme interdire la soumission de tickets, sélectionner un processus d'approbation, autoriser l'exécution ou refuser l'exécution.Toutes les actions commencent par
@act., suivi du nom de l'action.Chaque module de la page Détails d'un ensemble de règles de sécurité propose différentes actions pour différents points de contrôle.
Tableau 2. Actions fournies par le module Console SQL
Action
Description
@act.reject_execute
Rejette l'exécution de l'instruction SQL actuelle.
@act.allow_execute
Autorise l'exécution de l'instruction SQL actuelle.
@act.reject_sql_type_execute
Pour rejeter un type spécifique d'instruction SQL, spécifiez le sous-type SQL. Exemple :
@act.reject_sql_type_execute 'UPDATE'.@act.allow_sql_type_execute
Pour autoriser l'exécution d'un type spécifique d'instruction SQL, spécifiez le sous-type SQL exact. Exemple :
@act.allow_sql_type_execute 'UPDATE'.@act.check_dml_sec_column_permission
Vérifie si un utilisateur dispose d'autorisations sur les champs sensibles. Si l'utilisateur ne possède pas les autorisations requises, une instruction DML de modification des données n'est pas exécutée.
@act.uncheck_dml_sec_column_permission
Ne vérifie pas si un utilisateur dispose d'autorisations sur les champs sensibles.
@act.check_sql_access_permission
Vérifie si un utilisateur dispose d'autorisations spécifiques sur les bases de données, les tables ou les champs impliqués dans les instructions SQL à exécuter. Par exemple, vérifiez si un utilisateur est autorisé à interroger ou à modifier des données.
@act.uncheck_sql_access_permission
Ne vérifie pas si un utilisateur dispose d'autorisations spécifiques sur les bases de données, les tables ou les champs impliqués dans les instructions SQL à exécuter.
@act.enable_sec_column_mask
Masque les champs sensibles dans les ensembles de résultats de requête renvoyés pour les instructions SQL soumises par des utilisateurs ne disposant pas d'autorisations sur ces champs sensibles.
@act.disable_sec_column_mask
Ne masque pas les champs sensibles dans les ensembles de résultats de requête renvoyés pour les instructions SQL soumises par des utilisateurs ne disposant pas d'autorisations sur ces champs sensibles.
Instructions SQL pouvant être exécutées dans DMS
DML
INSERT
INSERT_SELECT
SELECT_INTO
MULTI_INSERT
REPLACE
REPLACE_INTO
UPDATE
DELETE
MERGE
REMOVE
MSCK_REPAIR
REFRESH_MATERIALIZED_VIEW
BEGIN
START_TRANSACTION
COMMIT
ROLLBACK
SAVEPOINT
RELEASE_SAVEPOINT
SET
ADD_EDGE
ADD_VERTEX
SET_PROPERTY
GDB_DROP
INSERT_MANY
INSERT_ONE
DELETE_MANY
DELETE_ONE
UPDATE_MANY
UPDATE_ONE
WLM_ADD_RULE
DDL
CREATE
CREATE_SCHEMA
CREATE_INDEX
CREATE_VIEW
CREATE_SEQUENCE
CREATE_TABLE
CREATE_TABLEGROUP
CREATE_PACKAGE
CREATE_SELECT
TRUNCATE
DROP
DROP_SCHEMA
DROP_INDEX
DROP_VIEW
DROP_TABLE
DROP_TABLEGROUP
DROP_SEQUENCE
RENAME
ALTER_TABLE_DROP_COLUMN
ALTER_TABLE_CHARACTER_COLLATE
ALTER_TABLE_AUTOINCREMENT
ALTER
ALTER_SCHEMA
ALTER_INDEX
ALTER_VIEW
ALTER_TABLE
ALTER_TABLEGROUP
ALTER_SEQUENCE
CREATE_FUNCTION
ALTER_FUNCTION
DROP_FUNCTION
CREATE_PROCEDURE
ALTER_PROCEDURE
DROP_PROCEDURE
MONGO_CREATE_INDEX
MONGO_DROP_INDEX
CREATE_DATABASE
ALTER_DATABASE
DROP_DATABASE
CREATE_USER
ALTER_USER
DROP_USER
CREATE_ROLE
DROP_ROLE
EXEC
CALL_PROCEDURE
CREATE_TRIGGER
ALTER_TRIGGER
DROP_TRIGGER
CREATE_EVENT
ALTER_EVENT
DROP_EVENT
ROLLBACK_DDL
CANCEL_DDL
VACUUM
SUBMIT_JOB
CANCEL_JOB
BUILD_TABLE
IF
DQL
SELECT
DESC
EXPLAIN
SHOW_INDEX
SHOW
CHECK_TABLE
SHOW_DDL
LIST
GDB_QUERY
CHECKSUM
SELECT_PG_TERMINATION_BACKEND
WLM_LIST_RULE
DCL
GRANT
DECLARE
SET
ANALYZE
FLUSH
OPTIMIZE
KILL
RECOVER_DDL
REMOVE_DDL
SELECT_PG_TERMINATION_BACKEND
FAQ
-
Q : Puis-je restreindre l'exécution des instructions
SELECT *?R : Oui. Cette action nécessite une instance avec le mode de collaboration de sécurité activé.
Dans la barre de navigation supérieure de la console DMS, choisissez Security and Disaster Recovery > Security Rules.
Dans l'onglet Rule Sets, sélectionnez l'ensemble de règles correspondant à votre type de moteur de données.
Localisez l'ensemble de règles cible et cliquez sur Edit dans la colonne Actions pour accéder à la page Details.
Dans le volet de navigation de gauche, sélectionnez SQL console. Sous Checkpoints, sélectionnez SQL execution count criteria.
-
Cliquez sur Add Rule et saisissez le script DSL suivant.
if @fac.sql_sub_type in ['SELECT'] AND @fun.is_contain_str(@fac.current_sql,'*') then @act.reject_execute 'The SQL statement contains *. Please use an alternative method.' end
-
Q : Comment configurer des règles pour restreindre les requêtes volumineuses dans la console SQL ?
R : Cette action nécessite une instance avec le mode de collaboration de sécurité activé.
Dans la barre de navigation supérieure de la console DMS, choisissez Security and Disaster Recovery > Security Rules.
Dans l'onglet Rule Sets, sélectionnez l'ensemble de règles correspondant à votre type de moteur de données.
Localisez l'ensemble de règles cible et cliquez sur Edit dans la colonne Actions pour accéder à la page Details.
Dans le volet de navigation de gauche, sélectionnez SQL console. Dans la zone de recherche, saisissez « full table scan » et cliquez sur le bouton Search.
Sélectionnez la règle cible dans la liste et cliquez sur son bouton Edit pour la configurer.