データ管理 (DMS) では、SQLコンソールモジュールで操作のセキュリティルールを設定できます。 SQL Consoleで、リレーショナルデータベースと非リレーショナルデータベースを管理できます。 このトピックでは、SQL Consoleでの操作のセキュリティルールについて説明します。 この例では、ApsaraDB RDS for MySQLのセキュリティルールが使用されています。
SQLコンソールのチェックポイント
チェックポイント | 説明 |
基本設定アイテム | クエリごとに返される最大行数、結果セットを変更できるかどうか、機密データを計算できるかどうかなどの基本的な設定を指定できます。 |
SQL実行数量基準 | 一度に送信できるSQL文の数を制限できます。 |
DQL SQL基準 | データクエリ言語 (DQL) ステートメントの実行に制約を設定できます。 |
その他のSQL基準 | 複数の種類のSQL文の実行に制約を設定できます。 たとえば、未確認のSQL文の実行を許可し、テーブル全体を削除する文の実行を拒否できます。 |
SQL権限基準 | データベース、テーブル、機密の列、および行に対する権限に基づいて、SQL文の実行に制約を設定できます。 |
SQL実行のパフォーマンス基準 | 関係するテーブルスペースのサイズが上限を超えた場合はDDLステートメントの実行を拒否し、影響を受ける行数が上限を超えた場合はDMLステートメントの実行を拒否できます。 |
データベースおよびテーブル列権限の例外認識基準 | 解析例外が発生した場合に、DQL、DML、DDL、またはデータ制御言語 (DCL) ステートメントなどのSQLステートメントの実行を続行するか拒否するかを指定できます。 |
論理データベースでのSQL実行条件 | さまざまな種類のSQL文の実行に制約を設定できます。 |
DMSは、チェックポイントに多数の定義済みの設定とルールを提供します。 ビジネス要件に基づいて、設定の変更、ルールのステータスの変更、セキュリティルールのカスタマイズを行うことができます。 詳細については、「セキュリティルールの管理」トピックのセキュリティルールの設定セクションをご参照ください。
次のフローチャートは、チェックポイントの仕組みを示しています。
要因とアクション
因子は、DMSによって提供される事前定義された変数である。 要因を使用して、SQL文のカテゴリや影響を受けるデータ行の数など、セキュリティルールによって検証されるコンテキストを取得できます。
因子名は、プレフィックス
@ facで構成されます。
と要素の表示名を指定します。セキュリティルールセットの [詳細] ページの各モジュールは、チェックポイントごとに異なる要素を提供します。
表 1. SQLコンソールモジュールが提供する要因 要素
説明
@ fac.sql_count
一度に送信されるSQL文の数。
@ fac.select_sql_count
一度に送信されるSQL文のうちDQL文の数。
@ fac.dml_sql_count
一度に送信されるSQL文のうちのDML文の数。
@ fac.sql_type
SQL文のカテゴリ。 詳細については、このトピックの「DMSで実行できるSQLステートメント」をご参照ください。
@ fac.sql_sub_type
SQL文のサブカテゴリ。 詳細については、このトピックの「DMSで実行できるSQLステートメント」をご参照ください。
@ fac.env_type
環境のタイプ。 値は、
DEV
やPRODUCT
などの環境タイプの表示名です。 詳細については、「インスタンスの環境タイプの変更」をご参照ください。@ fac.fulltable_delete
現在のSQL文がテーブル全体を削除するかどうかを示します。 有効な値:
true
false
@ fac.fulltable_update
現在のSQL文がテーブル全体を更新するかどうかを示します。 有効な値:
true
false
@ fac.current_sql
現在のSQL文。
@ fac.us er_is_admin
現在のユーザーがDMS管理者であるかどうかを示します。 有効な値:
true
false
@ fac.us er_is_dba
現在のユーザーがデータベース管理者 (DBA) かどうかを示します。 有効な値:
true
false
@ fac.us er_is_inst_dba
現在のユーザーが現在のデータベースインスタンスのDBAであるかどうかを示します。 有効な値:
true
false
@ fac.us er_is_sec_admin
現在のユーザーがセキュリティ管理者であるかどうかを示します。 有効な値:
true
false
@ fac.sql_affected_rows
現在のSQL文の影響を受ける行数。
説明この要因は
COUNT
操作をトリガーします。 この要素は慎重に使用してください。@ fac.sql_relate_table_store_size
現在のSQL文によってアクセスされるテーブルの推定合計サイズ。 単位:MB。
説明この値は、DMSによって取得されたメタデータに基づいて推定されます。 値は実際の値ではありません。
アクションは、
if
ステートメントで指定された条件が満たされた場合にシステムが実行する操作です。 セキュリティルールに指定したアクションは、セキュリティルールの目的を示しています。 たとえば、チケットの送信を禁止したり、承認プロセスを選択したり、SQL文の実行を許可したり、SQL文の実行を拒否したりできます。アクション名は、プレフィックス
@ actで構成されます。
とアクションの表示名を指定します。セキュリティルールセットの [詳細] ページの各モジュールは、異なるチェックポイントに対して異なるアクションを提供します。
表 2. SQLコンソールモジュールによるアクション Action
説明
@ act.reject_execute
現在のSQL文の実行を拒否します。
@ act.allow_execute
現在のSQL文の実行を許可します。
@ act.reject_sql_type_execute
SQL文の特定のサブカテゴリの実行を拒否します。 このアクションを使用する場合は、サブカテゴリを指定する必要があります。 例:
@ act.reject_sql_type_execute 'UPDATE'
@ act.allow_sql_type_execute
SQL文の特定のサブカテゴリの実行を許可します。 このアクションを使用する場合は、サブカテゴリを指定する必要があります。 例:
@ act.allow_sql_type_execute 'UPDATE'
@ act.check_dml_sec_column_permission
ユーザーに機密フィールドに対する権限があるかどうかを確認します。 ユーザーに必要な権限がない場合、データ変更のDMLステートメントは実行されません。
@ act.uncheck_dml_sec_column_permission
ユーザーが機密フィールドに対する権限を持っているかどうかはチェックしません。
@ act.check_sql_access_permission
実行するSQL文に含まれるデータベース、テーブル、またはフィールドに対する特定の権限がユーザーにあるかどうかを確認します。 たとえば、ユーザーがデータを照会したり、データを変更したりする権限を持っているかどうかを確認できます。
@ act.uncheck_sql_access_permission
実行するSQL文に含まれるデータベース、テーブル、またはフィールドに対する特定の権限がユーザーにあるかどうかは確認しません。
@ act.enable_sec_column_mask
機密フィールドに対する権限を持たないユーザーが送信したSQL文に対して返される、クエリ結果セット内の機密フィールドをマスクします。
@ act.disable_sec_column_mask
機密フィールドに対する権限を持たないユーザーが送信したSQL文に対して返されるクエリ結果セットの機密フィールドはマスクされません。
DMSで実行できるSQL文
DML
INSERT
INSERT_SELECT
SELECT_INTO
MULTI_INSERT
REPLACE
REPLACE_INTO
UPDATE
DELETE
マージ
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
真空
SUBMIT_JOB
CANCEL_JOB
BUILD_TABLE
IF
DQL
SELECT
DESC
EXPLAIN
SHOW_INDEX
ショー
CHECK_TABLE
SHOW_DDL
リスト
GDB_QUERY
チェックサム
SELECT_PG_TERMINATION_BACKEND
WLM_LIST_RULE
DCL
GRANT
DECLARE
SET
ANALYZE
フラッシュ
最適化
キル
RECOVER_DDL
REMOVE_DDL
SELECT_PG_TERMINATION_BACKEND