Data Management (DMS), SQL Konsolu modülündeki işlemler için güvenlik kuralları yapılandırmanıza olanak tanır. SQL Konsolu'nda hem ilişkisel hem de ilişkisel olmayan veritabanlarını yönetebilirsiniz. Bu konu, SQL Konsolu'ndaki işlemlere yönelik güvenlik kurallarını açıklar. Bu örnekte, ApsaraDB RDS for MySQL için güvenlik kuralları kullanılmıştır.
SQL Konsolu'ndaki kontrol noktaları
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DMS, kontrol noktaları için çok sayıda önceden tanımlanmış yapılandırma ve kural sunar. Yapılandırmaları değiştirebilir, kuralların durumunu güncelleyebilir ve iş gereksinimlerinize göre özel güvenlik kuralları oluşturabilirsiniz. Daha fazla bilgi için "Güvenlik kurallarını yönetme" konusunun Bir kural kümesinde kuralları yapılandırma bölümüne bakın.
Aşağıdaki akış şeması, kontrol noktalarının nasıl çalıştığını gösterir.
Faktörler ve eylemler
-
Faktör, DMS tarafından sağlanan önceden tanımlanmış bir değişkendir. Faktörleri kullanarak güvenlik kuralları tarafından doğrulanacak bağlamı (SQL deyimlerinin kategorileri ve etkilenmesi gereken veri satırlarının sayısı gibi) elde edebilirsiniz.
Tüm faktörler
@fac.ile başlar ve ardından faktör adı gelir.Bir güvenlik kuralı kümesinin Ayrıntılar sayfasındaki her modül, farklı kontrol noktaları için farklı faktörler sağlar.
Tablo 1. SQL Konsolu modülü tarafından sağlanan faktörler
Faktör
Açıklama
@fac.sql_count
Tek seferde gönderilen SQL deyimlerinin sayısı.
@fac.select_sql_count
Tek seferde gönderilen SQL deyimleri arasındaki DQL deyimlerinin sayısı.
@fac.dml_sql_count
Tek seferde gönderilen SQL deyimleri arasındaki DML deyimlerinin sayısı.
@fac.sql_type
Bir SQL deyiminin kategorisi. Daha fazla bilgi için bu konunun DMS'de yürütülebilen SQL deyimleri bölümüne bakın.
@fac.sql_sub_type
Bir SQL deyiminin alt kategorisi. Daha fazla bilgi için bu konunun DMS'de yürütülebilen SQL deyimleri bölümüne bakın.
@fac.env_type
Ortam türü. Değer,
DEVveyaPRODUCTgibi bir ortam tanımlayıcısıdır. Daha fazla bilgi için bkz. Örnek ortam türü.@fac.fulltable_delete
Geçerli SQL deyiminin tam tablo
DELETEolup olmadığını gösterir. Geçerli değerler şunlardır:true
false
@fac.fulltable_update
Geçerli SQL deyiminin tam tablo
UPDATEolup olmadığını belirtir. Geçerli değerler:true
false
@fac.current_sql
Geçerli SQL deyimi.
@fac.user_is_admin
Geçerli kullanıcının bir DMS yöneticisi olup olmadığını gösterir. Geçerli değerler:
true
false
@fac.user_is_dba
Geçerli kullanıcının bir veritabanı yöneticisi (DBA) olup olmadığını gösterir. Geçerli değerler:
true
false
@fac.user_is_inst_dba
Geçerli kullanıcının geçerli veritabanı örneğinin DBA'sı olup olmadığını gösterir. Geçerli değerler:
true
false
@fac.user_is_sec_admin
Geçerli kullanıcının bir güvenlik yöneticisi olup olmadığını gösterir. Geçerli değerler:
true
false
@fac.sql_affected_rows
Geçerli SQL deyimi tarafından etkilenmesi gereken satır sayısı.
NotBir
COUNTişlemi gerçekleştirilecektir, bu nedenle dikkatli kullanın.@fac.sql_relate_table_store_size
Geçerli SQL deyimi tarafından erişilmesi gereken tablonun tahmini toplam boyutu. Birim: MB.
NotBu değer, DMS tarafından elde edilen meta verilere dayanarak tahmin edilir. Gerçek bir değer değildir.
-
Eylem: Bir
ifkoşulu karşılandığında sistemin uyguladığı davranıştır. Bu eylem, bilet gönderimini yasaklama, bir onay süreci seçme, yürütmeye izin verme veya yürütmeyi reddetme gibi bir güvenlik kuralının ana amacını ifade eder.Tüm eylemler
@act.ile başlar ve ardından eylem adı gelir.Bir güvenlik kuralı kümesinin Ayrıntılar sayfasındaki her modül, farklı kontrol noktaları için farklı eylemler sağlar.
Tablo 2. SQL Konsolu modülü tarafından sağlanan eylemler
Eylem
Açıklama
@act.reject_execute
Geçerli SQL deyiminin yürütülmesini reddeder.
@act.allow_execute
Geçerli SQL deyiminin yürütülmesine izin verir.
@act.reject_sql_type_execute
Belirli bir türdeki SQL deyimini reddetmek için SQL alt türünü belirtmeniz gerekir. Örneğin:@act.reject_sql_type_execute 'UPDATE'.
@act.allow_sql_type_execute
Belirli bir türdeki SQL'in yürütülmesine izin vermek için tam SQL alt türünü belirtmeniz gerekir. Örneğin:@act.allow_sql_type_execute 'UPDATE'.
@act.check_dml_sec_column_permission
Kullanıcının hassas alanlar üzerinde izni olup olmadığını denetler. Kullanıcı gerekli izinlere sahip değilse veri değişikliği için bir DML deyimi yürütülmez.
@act.uncheck_dml_sec_column_permission
Kullanıcının hassas alanlar üzerinde izni olup olmadığını denetlemez.
@act.check_sql_access_permission
Kullanıcının, yürütülecek SQL deyimlerinde yer alan veritabanları, tablolar veya alanlar üzerinde belirli izinlere sahip olup olmadığını denetler. Örneğin, kullanıcının veri sorgulama veya veri değiştirme izinlerine sahip olup olmadığını denetleyebilirsiniz.
@act.uncheck_sql_access_permission
Kullanıcının, yürütülecek SQL deyimlerinde yer alan veritabanları, tablolar veya alanlar üzerinde belirli izinlere sahip olup olmadığını denetlemez.
@act.enable_sec_column_mask
Hassas alanlar üzerinde izni olmayan kullanıcılar tarafından gönderilen SQL deyimleri için döndürülen sorgu sonuç kümelerindeki hassas alanları maskeler.
@act.disable_sec_column_mask
Hassas alanlar üzerinde izni olmayan kullanıcılar tarafından gönderilen SQL deyimleri için döndürülen sorgu sonuç kümelerindeki hassas alanları maskelemez.
DMS'de yürütülebilen SQL deyimleri
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
SSS
-
S:
SELECT *deyimlerinin yürütülmesini kısıtlayabilir miyim?C: Evet. Bu eylem, güvenlik iş birliği modu etkinleştirilmiş bir örnek gerektirir.
DMS konsolunun üst gezinme çubuğunda Security and Disaster Recovery > Security Rules öğelerini seçin.
Rule Sets sekmesinde veri motoru türünüzle eşleşen kural kümesini seçin.
Hedef kural kümesini bulun ve Actions sütunundaki Edit düğmesine tıklayarak Details sayfasına gidin.
Sol gezinme bölmesinden SQL console öğesini seçin. Checkpoints altında SQL execution count criteria seçeneğini belirleyin.
-
Add Rule düğmesine tıklayın ve aşağıdaki DSL betiğini girin.
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
-
S: SQL konsolunda büyük sorguları kısıtlamak için kuralları nasıl yapılandırırım?
C: Bu eylem, güvenlik iş birliği modu etkinleştirilmiş bir örnek gerektirir.
DMS konsolunun üst gezinme çubuğunda Security and Disaster Recovery > Security Rules öğelerini seçin.
Rule Sets sekmesinde veri motoru türünüzle eşleşen kural kümesini seçin.
Hedef kural kümesini bulun ve Actions sütunundaki Edit düğmesine tıklayarak Details sayfasına gidin.
Sol gezinme bölmesinden SQL console öğesini seçin. Arama kutusuna "full table scan" yazın ve Search düğmesine tıklayın.
Listeden hedef kuralı seçin ve yapılandırmak için Düzenle düğmesine tıklayın.