Data Management (DMS) permite configurar reglas de seguridad para las operaciones en el módulo SQL Console. Es posible gestionar bases de datos relacionales y no relacionales en SQL Console. Este tema describe las reglas de seguridad para las operaciones en SQL Console. En este ejemplo, se utilizan las reglas de seguridad para ApsaraDB RDS for MySQL.
Puntos de control en SQL Console
|
Punto de control |
Descripción |
|
Basic Configuration Item |
Permite especificar configuraciones básicas, como el número máximo de filas que se pueden devolver por consulta, si los conjuntos de resultados son modificables y si es posible calcular datos sensibles. |
|
SQL Execution Quantity Criteria |
Permite limitar la cantidad de sentencias SQL que se pueden enviar a la vez. |
|
DQL SQL Criteria |
Permite establecer restricciones en la ejecución de sentencias de lenguaje de consulta de datos (DQL). |
|
Other SQL Criteria |
Permite establecer restricciones en la ejecución de varios tipos de sentencias SQL. Por ejemplo, puede permitir la ejecución de sentencias SQL no identificadas y rechazar la ejecución de sentencias que eliminen tablas completas. |
|
SQL Permission Criteria |
Permite establecer restricciones en la ejecución de sentencias SQL según los permisos sobre bases de datos, tablas, columnas sensibles y filas. |
|
SQL Execution Performance Criteria |
Permite rechazar la ejecución de sentencias DDL si el tamaño del tablespace involucrado supera el límite superior, o rechazar la ejecución de sentencias DML si el número de filas afectadas excede dicho límite. |
|
Exception Recognition Criteria of Database and Table Column Permissions |
Permite especificar si se debe continuar o rechazar la ejecución de sentencias SQL, como DQL, DML, DDL o sentencias de lenguaje de control de datos (DCL), cuando ocurren excepciones de análisis sintáctico. |
|
SQL Execution Criteria in Logical Databases |
Permite establecer restricciones en la ejecución de diferentes tipos de sentencias SQL. |
DMS proporciona una gran cantidad de configuraciones y reglas predefinidas para los puntos de control. Puede modificar las configuraciones, cambiar el estado de las reglas y personalizar las reglas de seguridad según sus requisitos empresariales. Para obtener más información, consulte la sección Configure rules in a rule set del tema "Gestionar reglas de seguridad".
El siguiente diagrama de flujo muestra cómo funcionan los puntos de control.
Factores y acciones
-
Un factor es una variable predefinida proporcionada por DMS. Los factores permiten obtener el contexto que deben validar las reglas de seguridad, como las categorías de sentencias SQL y el número de filas de datos que se verán afectadas.
Todos los factores comienzan con
@fac., seguido del nombre del factor.Cada módulo en la página Details de un conjunto de reglas de seguridad ofrece distintos factores para diferentes puntos de control.
Tabla 1. Factores proporcionados por el módulo SQL Console
Factor
Descripción
@fac.sql_count
Número de sentencias SQL que se envían a la vez.
@fac.select_sql_count
Número de sentencias DQL entre las sentencias SQL que se envían a la vez.
@fac.dml_sql_count
Número de sentencias DML entre las sentencias SQL que se envían a la vez.
@fac.sql_type
Categoría de una sentencia SQL. Para obtener más información, consulte la sección SQL statements that can be executed in DMS de este tema.
@fac.sql_sub_type
Subcategoría de una sentencia SQL. Para obtener más información, consulte la sección SQL statements that can be executed in DMS de este tema.
@fac.env_type
Tipo de entorno. El valor es un identificador de entorno, como
DEVoPRODUCT. Para obtener más información, consulte Instance environment type.@fac.fulltable_delete
Indica si la sentencia SQL actual es una operación
DELETEde tabla completa. Los valores válidos son:true
false
@fac.fulltable_update
Especifica si la sentencia SQL actual es una operación
UPDATEde tabla completa. Valores válidos:true
false
@fac.current_sql
Sentencia SQL actual.
@fac.user_is_admin
Indica si el usuario actual es administrador de DMS. Valores válidos:
true
false
@fac.user_is_dba
Indica si el usuario actual es administrador de bases de datos (DBA). Valores válidos:
true
false
@fac.user_is_inst_dba
Indica si el usuario actual es DBA de la instancia de base de datos actual. Valores válidos:
true
false
@fac.user_is_sec_admin
Indica si el usuario actual es administrador de seguridad. Valores válidos:
true
false
@fac.sql_affected_rows
Número de filas que se verán afectadas por la sentencia SQL actual.
NotaSe ejecutará una operación
COUNT, por lo que debe usarse con precaución.@fac.sql_relate_table_store_size
Tamaño total estimado de la tabla a la que accederá la sentencia SQL actual. Unidad: MB.
NotaEste valor se estima con base en los metadatos obtenidos por DMS. No representa el valor real.
-
Acción: Comportamiento que ejecuta el sistema cuando se cumple una condición
if. Esta acción expresa el propósito principal de una regla de seguridad, como prohibir el envío de tickets, seleccionar un proceso de aprobación, permitir la ejecución o denegar la ejecución.Todas las acciones comienzan con
@act., seguido del nombre de la acción.Cada módulo en la página Details de un conjunto de reglas de seguridad ofrece distintas acciones para diferentes puntos de control.
Tabla 2. Acciones proporcionadas por el módulo SQL Console
Acción
Descripción
@act.reject_execute
Rechaza la ejecución de la sentencia SQL actual.
@act.allow_execute
Permite la ejecución de la sentencia SQL actual.
@act.reject_sql_type_execute
Para rechazar un tipo específico de sentencia SQL, debe especificar el subtipo de SQL. Por ejemplo:
@act.reject_sql_type_execute 'UPDATE'.@act.allow_sql_type_execute
Para permitir la ejecución de un tipo específico de SQL, debe especificar el subtipo exacto de SQL. Por ejemplo:
@act.allow_sql_type_execute 'UPDATE'.@act.check_dml_sec_column_permission
Comprueba si un usuario tiene permisos sobre campos sensibles. Si el usuario carece de los permisos necesarios, no se ejecuta la sentencia DML para cambio de datos.
@act.uncheck_dml_sec_column_permission
No comprueba si un usuario tiene permisos sobre campos sensibles.
@act.check_sql_access_permission
Comprueba si un usuario cuenta con permisos específicos sobre las bases de datos, tablas o campos involucrados en las sentencias SQL que se ejecutarán. Por ejemplo, puede verificar si un usuario tiene permisos para consultar o modificar datos.
@act.uncheck_sql_access_permission
No comprueba si un usuario cuenta con permisos específicos sobre las bases de datos, tablas o campos involucrados en las sentencias SQL que se ejecutarán.
@act.enable_sec_column_mask
Enmascara los campos sensibles en los conjuntos de resultados de consulta devueltos para sentencias SQL enviadas por usuarios sin permisos sobre dichos campos.
@act.disable_sec_column_mask
No enmascara los campos sensibles en los conjuntos de resultados de consulta devueltos para sentencias SQL enviadas por usuarios sin permisos sobre dichos campos.
Sentencias SQL ejecutables en 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
Preguntas frecuentes
-
Q: Can I restrict the execution of
SELECT *statements?A: Yes. This action requires an instance with security collaboration mode enabled.
En la barra de navegación superior de la consola DMS, seleccione Security and Disaster Recovery > Security Rules.
En la pestaña Rule Sets, seleccione el conjunto de reglas correspondiente a su tipo de motor de datos.
Localice el conjunto de reglas deseado y haga clic en Edit en la columna Actions para ir a la página Details.
En el panel de navegación izquierdo, seleccione SQL console. En Checkpoints, seleccione SQL execution count criteria.
-
Haga clic en Add Rule e introduzca el siguiente script DSL.
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: How do I configure rules to restrict large queries in the SQL console? A: This action requires an instance with security collaboration mode enabled.
En la barra de navegación superior de la consola DMS, seleccione Security and Disaster Recovery > Security Rules.
En la pestaña Rule Sets, seleccione el conjunto de reglas correspondiente a su tipo de motor de datos.
Localice el conjunto de reglas deseado y haga clic en Edit en la columna Actions para ir a la página Details.
En el panel de navegación izquierdo, seleccione SQL console. En el cuadro de búsqueda, introduzca "full table scan" y haga clic en el botón Search.
Seleccione la regla deseada de la lista y haga clic en su botón Edit para configurarla.