Data Management (DMS) memungkinkan Anda mengonfigurasi aturan keamanan untuk operasi di modul SQL Console. Anda dapat mengelola database relasional dan non-relasional melalui SQL Console. Topik ini menjelaskan aturan keamanan untuk operasi di SQL Console, dengan contoh berdasarkan ApsaraDB RDS for MySQL.
Checkpoint di SQL Console
Checkpoint | Deskripsi |
Basic Configuration Item | Memungkinkan Anda menentukan konfigurasi dasar, seperti jumlah maksimum baris yang dapat dikembalikan per kueri, apakah set hasil dapat dimodifikasi, dan apakah data sensitif dapat dihitung. |
SQL Execution Quantity Criteria | Memungkinkan Anda membatasi jumlah pernyataan SQL yang dapat diajukan sekaligus. |
DQL SQL Criteria | Memungkinkan Anda menetapkan batasan pada eksekusi pernyataan Data Query Language (DQL). |
Other SQL Criteria | Memungkinkan Anda menetapkan batasan pada eksekusi berbagai jenis pernyataan SQL. Misalnya, Anda dapat mengizinkan eksekusi pernyataan SQL yang tidak teridentifikasi dan menolak eksekusi pernyataan yang menghapus tabel secara penuh. |
SQL Permission Criteria | Memungkinkan Anda menetapkan batasan pada eksekusi pernyataan SQL berdasarkan izin pada database, tabel, kolom sensitif, dan baris. |
SQL Execution Performance Criteria | Memungkinkan Anda menolak eksekusi pernyataan DDL jika ukuran ruang tabel yang terlibat melebihi batas atas, atau menolak eksekusi pernyataan DML jika jumlah baris yang terpengaruh melebihi batas atas. |
Exception Recognition Criteria of Database and Table Column Permissions | Memungkinkan Anda menentukan apakah akan melanjutkan atau menolak eksekusi pernyataan SQL seperti DQL, DML, DDL, atau pernyataan Data Control Language (DCL) jika terjadi pengecualian saat penguraian. |
SQL Execution Criteria in Logical Databases | Memungkinkan Anda menetapkan batasan pada eksekusi berbagai jenis pernyataan SQL. |
DMS menyediakan banyak konfigurasi dan aturan yang telah ditentukan sebelumnya untuk checkpoint. Anda dapat memodifikasi konfigurasi, mengubah status aturan, dan menyesuaikan aturan keamanan sesuai kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat bagian Configure rules in a rule set dalam topik "Manage security rules".
Bagan alir berikut menunjukkan cara kerja checkpoint.
Faktor dan aksi
Faktor adalah variabel yang telah ditentukan sebelumnya oleh DMS. Anda dapat menggunakan faktor untuk mendapatkan konteks yang akan divalidasi oleh aturan keamanan, seperti kategori pernyataan SQL dan jumlah baris data yang akan terpengaruh.
Semua faktor diawali dengan
@fac., diikuti oleh nama faktor.Setiap modul pada halaman Detail dari satu set aturan keamanan menyediakan faktor yang berbeda untuk checkpoint yang berbeda.
Tabel 1. Faktor yang disediakan oleh modul SQL Console
Faktor
Deskripsi
@fac.sql_count
Jumlah pernyataan SQL yang diajukan sekaligus.
@fac.select_sql_count
Jumlah pernyataan DQL di antara pernyataan SQL yang diajukan sekaligus.
@fac.dml_sql_count
Jumlah pernyataan DML di antara pernyataan SQL yang diajukan sekaligus.
@fac.sql_type
Kategori pernyataan SQL. Untuk informasi selengkapnya, lihat bagian SQL statements that can be executed in DMS dalam topik ini.
@fac.sql_sub_type
Subkategori pernyataan SQL. Untuk informasi selengkapnya, lihat bagian SQL statements that can be executed in DMS dalam topik ini.
@fac.env_type
Jenis lingkungan. Nilainya berupa identifikasi lingkungan, seperti
DEVatauPRODUCT. Untuk informasi selengkapnya, lihat Instance environment type.@fac.fulltable_delete
Menunjukkan apakah pernyataan SQL saat ini merupakan
DELETEtabel penuh. Nilai yang valid adalah:true
false
@fac.fulltable_update
Menentukan apakah pernyataan SQL saat ini merupakan
UPDATEtabel penuh. Nilai yang valid:true
false
@fac.current_sql
Pernyataan SQL saat ini.
@fac.user_is_admin
Menunjukkan apakah pengguna saat ini merupakan administrator DMS. Nilai yang valid:
true
false
@fac.user_is_dba
Menunjukkan apakah pengguna saat ini merupakan Administrator basis data (DBA). Nilai yang valid:
true
false
@fac.user_is_inst_dba
Menunjukkan apakah pengguna saat ini merupakan DBA dari instansiasi basis data saat ini. Nilai yang valid:
true
false
@fac.user_is_sec_admin
Menunjukkan apakah pengguna saat ini merupakan administrator keamanan. Nilai yang valid:
true
false
@fac.sql_affected_rows
Jumlah baris yang akan terpengaruh oleh pernyataan SQL saat ini.
CatatanOperasi
COUNTakan dilakukan, jadi harap gunakan dengan hati-hati.@fac.sql_relate_table_store_size
Perkiraan ukuran total tabel yang akan diakses oleh pernyataan SQL saat ini. Satuan: MB.
CatatanNilai ini diperkirakan berdasarkan metadata yang diperoleh oleh DMS. Nilai ini bukan nilai aktual.
Aksi: Perilaku yang dilakukan sistem ketika kondisi
ifterpenuhi. Aksi ini menyatakan tujuan utama aturan keamanan, seperti melarang pengajuan tiket, memilih proses persetujuan, mengizinkan eksekusi, atau menolak eksekusi.Semua aksi diawali dengan
@act., diikuti oleh nama aksi.Setiap modul pada halaman Detail dari satu set aturan keamanan menyediakan aksi yang berbeda untuk checkpoint yang berbeda.
Tabel 2. Aksi yang disediakan oleh modul SQL Console
Aksi
Deskripsi
@act.reject_execute
Menolak eksekusi pernyataan SQL saat ini.
@act.allow_execute
Mengizinkan eksekusi pernyataan SQL saat ini.
@act.reject_sql_type_execute
Untuk menolak jenis tertentu dari pernyataan SQL, Anda harus menentukan subjenis SQL tersebut. Contohnya:
@act.reject_sql_type_execute 'UPDATE'.@act.allow_sql_type_execute
Untuk mengizinkan eksekusi jenis SQL tertentu, Anda harus menentukan subjenis SQL secara tepat. Contohnya:
@act.allow_sql_type_execute 'UPDATE'.@act.check_dml_sec_column_permission
Memeriksa apakah pengguna memiliki izin pada bidang sensitif. Jika pengguna tidak memiliki izin yang diperlukan, pernyataan DML untuk perubahan data tidak akan dieksekusi.
@act.uncheck_dml_sec_column_permission
Tidak memeriksa apakah pengguna memiliki izin pada bidang sensitif.
@act.check_sql_access_permission
Memeriksa apakah pengguna memiliki izin tertentu pada database, tabel, atau bidang yang terlibat dalam pernyataan SQL yang akan dieksekusi. Misalnya, Anda dapat memeriksa apakah pengguna memiliki izin untuk mengkueri data atau mengubah data.
@act.uncheck_sql_access_permission
Tidak memeriksa apakah pengguna memiliki izin tertentu pada database, tabel, atau bidang yang terlibat dalam pernyataan SQL yang akan dieksekusi.
@act.enable_sec_column_mask
Menyamarkan bidang sensitif dalam set hasil kueri yang dikembalikan untuk pernyataan SQL yang diajukan oleh pengguna yang tidak memiliki izin pada bidang sensitif tersebut.
@act.disable_sec_column_mask
Tidak menyamarkan bidang sensitif dalam set hasil kueri yang dikembalikan untuk pernyataan SQL yang diajukan oleh pengguna yang tidak memiliki izin pada bidang sensitif tersebut.
Pernyataan SQL yang dapat dieksekusi di 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: Apakah saya dapat membatasi eksekusi pernyataan
SELECT *?A: Ya. Tindakan ini memerlukan instans dengan mode kolaborasi keamanan yang diaktifkan.
Pada bilah navigasi atas Konsol DMS, pilih Security and Disaster Recovery > Security Rules.
Pada tab Rule Sets, pilih set aturan yang sesuai dengan jenis mesin data Anda.
Temukan set aturan target dan klik Edit pada kolom Actions untuk membuka halaman Details.
Pada panel navigasi kiri, pilih SQL console. Di bawah Checkpoints, pilih SQL execution count criteria.
Klik Add Rule dan masukkan skrip DSL berikut.
if @fac.sql_sub_type in ['SELECT'] AND @fun.is_contain_str(@fac.current_sql,'*') then @act.reject_execute 'Pernyataan SQL mengandung *. Harap gunakan metode alternatif.' end
Q: Bagaimana cara mengonfigurasi aturan untuk membatasi kueri besar di konsol SQL?
A: Tindakan ini memerlukan instans dengan mode kolaborasi keamanan yang diaktifkan.
Pada bilah navigasi atas Konsol DMS, pilih Security and Disaster Recovery > Security Rules.
Pada tab Rule Sets, pilih set aturan yang sesuai dengan jenis mesin data Anda.
Temukan set aturan target dan klik Edit pada kolom Actions untuk membuka halaman Details.
Pada panel navigasi kiri, pilih SQL console. Pada kotak pencarian, masukkan "full table scan" dan klik tombol Search.
Pilih aturan target dari daftar dan klik tombol Edit-nya untuk mengonfigurasi aturan tersebut.