すべてのプロダクト
Search
ドキュメントセンター

Data Management:リレーショナルデータベースの SQL コンソール

最終更新日:Apr 21, 2026

Data Management (DMS) では、SQL コンソールモジュールでの操作に対するセキュリティルールを設定できます。SQL コンソールでは、リレーショナルデータベースと非リレーショナルデータベースを管理できます。このトピックでは、SQL コンソールでの操作に関するセキュリティルールについて説明します。この例では、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

    環境タイプ。値は DEVPRODUCT などの環境識別子です。詳細については、「インスタンスの環境タイプ」をご参照ください。

    @fac.fulltable_delete

    現在の SQL ステートメントが全テーブルの DELETE かどうかを示します。有効な値は次のとおりです。

    • true

    • false

    @fac.fulltable_update

    現在の SQL ステートメントが全テーブルの UPDATE かどうかを指定します。有効な値:

    • true

    • false

    @fac.current_sql

    現在の SQL ステートメント。

    @fac.user_is_admin

    現在のユーザーが DMS 管理者であるかどうかを示します。有効な値:

    • true

    • false

    @fac.user_is_dba

    現在のユーザーがデータベース管理者 (DBA) であるかどうかを示します。有効な値:

    • true

    • false

    @fac.user_is_inst_dba

    現在のユーザーが現在のデータベースインスタンスの DBA であるかどうかを示します。有効な値:

    • true

    • false

    @fac.user_is_sec_admin

    現在のユーザーがセキュリティ管理者であるかどうかを示します。有効な値:

    • true

    • false

    @fac.sql_affected_rows

    現在の SQL ステートメントによって影響を受ける行数。

    説明

    COUNT 操作が実行されるため、注意してご使用ください。

    @fac.sql_relate_table_store_size

    現在の SQL ステートメントがアクセスするテーブルの推定合計サイズ。単位:MB。

    説明

    この値は DMS が取得したメタデータに基づいて推定されたものであり、実際の値ではありません。

  • アクション:if 条件が満たされたときにシステムが実行する動作。このアクションは、チケットの送信の禁止、承認プロセスの選択、実行の許可、実行の拒否など、セキュリティルールの主な目的を表します。

    • すべてのアクションは @act. で始まり、その後にアクション名が続きます。

    • セキュリティルールセットの [詳細] ページの各モジュールは、チェックポイントごとに異なるアクションを提供します。

    表 2. SQL コンソールモジュールが提供するアクション

    アクション

    説明

    @act.reject_execute

    現在の SQL ステートメントの実行を拒否します。

    @act.allow_execute

    現在の SQL ステートメントの実行を許可します。

    @act.reject_sql_type_execute

    特定の種類の SQL ステートメントを拒否するには、SQL サブタイプを指定する必要があります。例:@act.reject_sql_type_execute 'UPDATE'

    @act.allow_sql_type_execute

    特定の種類の SQL の実行を許可するには、正確な 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

  • 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

よくある質問

  • Q: SELECT * ステートメントの実行を制限できますか。

    A: はい。このアクションには、セキュリティコラボレーションモードが有効になっているインスタンスが必要です。

    1. DMS コンソールの上部のナビゲーションバーで、[セキュリティと障害復旧] > [セキュリティルール] を選択します。

    2. [ルールセット] タブで、ご利用のデータエンジンタイプに対応するルールセットを選択します。

    3. 対象のルールセットを見つけ、[操作] 列の [編集] をクリックして [詳細] ページに移動します。

    4. 左側のナビゲーションウィンドウで、[SQL コンソール] を選択します。[チェックポイント] で、[SQL 実行数量基準] を選択します。

    5. [ルールの追加] をクリックし、次の DSL スクリプトを入力します。

      if 
        @fac.sql_sub_type in ['SELECT'] 
        AND @fun.is_contain_str(@fac.current_sql,'*') 
      then 
        @act.reject_execute 'SQL ステートメントに * が含まれています。別の方法を使用してください。' 
      end
  • Q: SQL コンソールで大規模なクエリを制限するルールを設定するにはどうすればよいですか。

    A: このアクションには、セキュリティコラボレーションモードが有効になっているインスタンスが必要です。

    1. DMS コンソールの上部のナビゲーションバーで、[セキュリティと障害復旧] > [セキュリティルール] を選択します。

    2. [ルールセット] タブで、ご利用のデータエンジンタイプに対応するルールセットを選択します。

    3. 対象のルールセットを見つけ、[操作] 列の [編集] をクリックして [詳細] ページに移動します。

    4. 左側のナビゲーションウィンドウで、[SQL コンソール] を選択します。検索ボックスに「全表スキャン」と入力し、[検索] ボタンをクリックします。

    5. リストから対象のルールを選択し、その [編集] ボタンをクリックして設定します。