O Data Management (DMS) permite configurar regras de segurança para operações no módulo SQL Console. É possível gerenciar bancos de dados relacionais e não relacionais no SQL Console. Este tópico descreve as regras de segurança aplicáveis às operações no SQL Console, utilizando como exemplo as regras do ApsaraDB RDS for MySQL.
Pontos de verificação no SQL Console
|
Ponto de verificação |
Descrição |
|
Basic Configuration Item |
Permite especificar configurações básicas, como o número máximo de linhas retornadas por consulta, a possibilidade de modificar conjuntos de resultados e a permissão para calcular dados sensíveis. |
|
SQL Execution Quantity Criteria |
Limita a quantidade de instruções SQL enviadas simultaneamente. |
|
DQL SQL Criteria |
Define restrições para a execução de instruções da linguagem de consulta de dados (DQL). |
|
Other SQL Criteria |
Estabelece restrições para a execução de diversos tipos de instruções SQL. Por exemplo, permite executar instruções SQL não identificadas e rejeitar instruções que excluam tabelas inteiras. |
|
SQL Permission Criteria |
Aplica restrições à execução de instruções SQL com base nas permissões de bancos de dados, tabelas, colunas sensíveis e linhas. |
|
SQL Execution Performance Criteria |
Rejeita a execução de instruções DDL caso o tamanho do tablespace envolvido ultrapasse o limite superior ou bloqueia instruções DML se o número de linhas afetadas exceder o limite definido. |
|
Exception Recognition Criteria of Database and Table Column Permissions |
Determina se a execução de instruções SQL (como DQL, DML, DDL ou DCL) deve continuar ou ser rejeitada quando ocorrem exceções de análise. |
|
SQL Execution Criteria in Logical Databases |
Configura restrições específicas para a execução de diferentes categorias de instruções SQL. |
O DMS oferece um vasto conjunto de configurações e regras predefinidas para os pontos de verificação. Modifique essas configurações, altere o status das regras e personalize as regras de segurança conforme as necessidades do seu negócio. Para mais informações, consulte a seção Configurar regras em um conjunto de regras no tópico "Gerenciar regras de segurança".
O fluxograma a seguir ilustra o funcionamento dos pontos de verificação.
Fatores e ações
-
Um fator é uma variável predefinida fornecida pelo DMS. Utilize fatores para obter o contexto que as regras de segurança devem validar, como as categorias das instruções SQL e a quantidade de linhas de dados afetadas.
Todos os fatores começam com
@fac., seguido pelo nome do fator.Cada módulo na página de detalhes de um conjunto de regras de segurança disponibiliza fatores distintos para cada ponto de verificação.
Tabela 1. Fatores disponibilizados pelo módulo SQL Console
Fator
Descrição
@fac.sql_count
Quantidade de instruções SQL enviadas simultaneamente.
@fac.select_sql_count
Número de instruções DQL presentes no lote de instruções SQL enviadas.
@fac.dml_sql_count
Total de instruções DML incluídas nas instruções SQL submetidas ao mesmo tempo.
@fac.sql_type
Categoria da instrução SQL. Para mais detalhes, consulte a seção Instruções SQL executáveis no DMS deste tópico.
@fac.sql_sub_type
Subcategoria da instrução SQL. Consulte a seção Instruções SQL executáveis no DMS neste tópico para mais informações.
@fac.env_type
Tipo de ambiente. O valor corresponde a um identificador de ambiente, como
DEVouPRODUCT. Para saber mais, veja Tipo de ambiente da instância.@fac.fulltable_delete
Indica se a instrução SQL atual é um
DELETEde tabela completa. Valores válidos:true
false
@fac.fulltable_update
Especifica se a instrução SQL atual é um
UPDATEde tabela inteira. Valores válidos:true
false
@fac.current_sql
Instrução SQL atual.
@fac.user_is_admin
Indica se o usuário atual é administrador do DMS. Valores válidos:
true
false
@fac.user_is_dba
Indica se o usuário atual atua como administrador de banco de dados (DBA). Valores válidos:
true
false
@fac.user_is_inst_dba
Indica se o usuário atual é DBA da instância de banco de dados em uso. Valores válidos:
true
false
@fac.user_is_sec_admin
Indica se o usuário atual possui a função de administrador de segurança. Valores válidos:
true
false
@fac.sql_affected_rows
Estimativa de linhas afetadas pela instrução SQL atual.
NotaUma operação
COUNTserá executada; portanto, utilize com cautela.@fac.sql_relate_table_store_size
Tamanho total estimado da tabela acessada pela instrução SQL atual. Unidade: MB.
NotaEste valor é uma estimativa baseada nos metadados obtidos pelo DMS e não representa o tamanho real.
-
Ação: Comportamento adotado pelo sistema quando uma condição
ifé satisfeita. Essa ação define o objetivo principal da regra de segurança, como impedir o envio de tickets, selecionar um fluxo de aprovação, permitir ou negar a execução.Todas as ações começam com
@act., seguido do nome da ação.Os módulos na página de detalhes do conjunto de regras de segurança oferecem ações específicas para cada ponto de verificação.
Tabela 2. Ações disponíveis no módulo SQL Console
Ação
Descrição
@act.reject_execute
Bloqueia a execução da instrução SQL atual.
@act.allow_execute
Autoriza a execução da instrução SQL atual.
@act.reject_sql_type_execute
Para rejeitar um tipo específico de instrução SQL, especifique o subtipo SQL. Exemplo:
@act.reject_sql_type_execute 'UPDATE'.@act.allow_sql_type_execute
Para permitir a execução de um tipo específico de SQL, indique o subtipo SQL exato. Exemplo:
@act.allow_sql_type_execute 'UPDATE'.@act.check_dml_sec_column_permission
Valida se o usuário possui permissões em campos sensíveis. Caso não tenha as permissões necessárias, a instrução DML para alteração de dados não será executada.
@act.uncheck_dml_sec_column_permission
Ignora a verificação de permissões do usuário em campos sensíveis.
@act.check_sql_access_permission
Verifica se o usuário tem permissões específicas sobre os bancos de dados, tabelas ou campos envolvidos nas instruções SQL a serem executadas. Por exemplo, valida permissões de consulta ou alteração de dados.
@act.uncheck_sql_access_permission
Não verifica permissões específicas do usuário nos bancos de dados, tabelas ou campos relacionados às instruções SQL.
@act.enable_sec_column_mask
Oculta campos sensíveis nos conjuntos de resultados de consultas retornados para instruções SQL enviadas por usuários sem permissão nesses campos.
@act.disable_sec_column_mask
Não aplica mascaramento em campos sensíveis nos resultados de consultas, mesmo quando o usuário não possui permissão sobre eles.
Instruções SQL executáveis no 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
Perguntas frequentes
-
P: É possível restringir a execução de instruções
SELECT *?R: Sim. Essa configuração exige uma instância com o modo de colaboração de segurança ativado.
Na barra de navegação superior do console DMS, escolha Security and Disaster Recovery > Security Rules.
Na aba Rule Sets, selecione o conjunto de regras correspondente ao seu tipo de mecanismo de dados.
Localize o conjunto de regras desejado e clique em Edit na coluna Actions para acessar a página Details.
No painel de navegação à esquerda, selecione SQL console. Em Checkpoints, escolha SQL execution count criteria.
-
Clique em Add Rule e insira o script DSL abaixo.
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
-
P: Como configurar regras para limitar consultas extensas no Console SQL?
R: Esta ação requer uma instância com o modo de colaboração de segurança habilitado.
Na barra de navegação superior do console DMS, escolha Security and Disaster Recovery > Security Rules.
Na aba Rule Sets, selecione o conjunto de regras adequado ao seu tipo de mecanismo de dados.
Encontre o conjunto de regras alvo e clique em Edit na coluna Actions para ir à página Details.
No painel de navegação à esquerda, selecione SQL console. Na caixa de pesquisa, digite "full table scan" e clique no botão Search.
Selecione a regra desejada na lista e clique no botão Edit correspondente para configurá-la.