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

Data Management:SQL 修正

最終更新日:Jul 30, 2026

SQL 修正機能は、SQL 変更を実行するためのエントリーポイントであり、高いレベルのセキュリティが求められます。 承認のためにチケットを送信すると、一連のセキュリティルールによってリクエストが検証されます。 この検証に合格した SQL ステートメントのみが実行できます。

前提条件

ユーザーは [管理者]、[DBA]、または [セキュリティ管理者] である必要があります。

背景情報

Data Management (DMS) のセキュリティルールは、柔軟なドメイン特化言語 (DSL) 機能を提供します。 これにより、必要に応じてリスクレベルをカスタマイズし、リスクの異なる変更に対して異なる承認ワークフローを使用できます。 たとえば、SQL の実行を厳しく制限したり、すべての SQL ステートメントを寛大に許可したりできます。

SQL 修正モジュールのチェックポイント

チェックポイント

説明

例

基本設定項目

このセクションには、5 つのデフォルトルールが含まれています:

  • データ変更のデフォルト承認テンプレート:データ変更チケットのデフォルトの承認テンプレート ID は 853 で、承認者は DBA です。

    説明

    デフォルトの承認テンプレートを変更するには、「デフォルトの承認テンプレートの変更」をご参照ください。

  • データ変更のリスクレベルリスト:リスクレベルは、チケット内の変更のリスクを評価するために使用されます。 シナリオごとに異なるリスクレベルと承認ワークフローを設定できます。 これは主に [リスク識別ルール] および [リスク承認ルール] チェックポイントで使用されます。

    4 つのデフォルトのリスクレベルが利用可能です:

    • LOW:低リスク

    • MIDDLE:中リスク

    • HIGH:高リスク

    • HIGHEST:重大なリスク

  • データインポートでのシンプルモードのサポート:このセキュリティルールを使用するデータベースのデータインポートチケットを作成する際に、シンプルモードがサポートされるかどうかを指定します。 詳細については、「データインポート」をご参照ください。

  • 標準データ変更で影響を受ける行のチェックをスキップすることを許可:このルールを有効にすると、DMS は事前チェック段階で標準データ変更チケットの影響を受ける行のチェックをスキップすることを禁止します。 それ以外の場合は、このチェックをスキップできます。

  • 行数チェックが不整合な通常のデータ変更チケットの送信を禁止:このルールが有効になっている場合、行数チェックが不整合な通常のデータ変更チケットは送信できません。 それ以外の場合は、送信できます。

-

SQL 実行ルール

SQL ウィンドウで実行できる SQL ステートメントを制限します。 許可された SQL ステートメントのみが実行できます。

説明

競合する 2 つのルールが有効になっている場合、より厳しいルールが適用されます。

たとえば、次の 2 つのルールが両方とも有効になっている場合、システムは 2 番目のルールを適用します。

  • すべての DML ステートメントを SQL コンソールで直接実行することを許可します。

  • すべての DML ステートメントを SQL コンソールで直接実行することを禁止します。 チケットを通じて実行する必要があります。

DML ステートメントのみがオンラインプロダクトデータベースを変更できるようにするには、次の SQL 実行ルールを追加します:

前提条件

if
  @fac.env_type not in ['product']
  and
  @fac.sql_type in [ 'UPDATE','DELETE','INSERT']
then
  @act.allow_submit
end

意味:データベース環境が本番環境ではなく、SQL ステートメントのタイプが UPDATE、DELETE、または INSERT の場合、その SQL ステートメントの実行が許可されます。

リスク識別ルール

送信されたチケットのリスクレベルを識別します。 データベース環境、影響を受ける行数、SQL タイプなどの条件に基づいてリスクレベルをカスタマイズできます。

説明

セキュリティルールが異なると、変更タスクにマークされるリスクレベルも異なります。 最終的なリスクレベルは、マークされたすべてのレベルの中で最も高いものになります。

たとえば、5 つの低リスク、3 つの中リスク、1 つの高リスクを持つ SQL 変更タスクは、高リスクとして分類されます。

オフライン環境を低リスクとして定義するには、次のリスク識別ルールを追加します:

if
  @fac.env_type not in ['product','pre']
then
  @act.mark_risk 'low' 'Low risk: offline environment'
end

意味:データベース環境が本番環境でない場合、リスクレベルは低くなります。

リスク承認ルール

さまざまなリスクレベルに対する承認ルールを設定またはカスタマイズします。

データベースの変更が [リスク識別ルール] チェックポイントでいずれのリスクレベルにも該当しない場合、[基本設定項目] セクションの [データ変更のデフォルト承認テンプレート] で指定された承認ワークフローが使用されます。

デフォルトでは、ステージング環境は低リスクと見なされ、承認は不要です。

バッチデータインポートルール

[データインポート] チケットに適用される検証ルールです。

挿入ステートメントのバッチインポートを許可します。

デフォルトの承認テンプレートの変更

  1. DMS 5.0 にログインします。

  2. 左上隅の 2023-01-28_15-57-17.png アイコンにポインターを合わせ、[すべての機能] > [セキュリティとディザスタリカバリ (DBS)] > [セキュリティルール] を選択します。

    説明

    DMS コンソールを通常モードで使用する場合は、上部のナビゲーションバーで [セキュリティとディザスタリカバリ (DBS)] > [セキュリティルール] を選択します。

  3. [セキュリティルール] タブで、目的のルールセットを見つけ、[操作] 列の [編集] をクリックします。

  4. 左側のナビゲーションバーの[詳細] ページで、[SQL Correct] をクリックします。

  5. [チェックポイント] セクションで、[基本設定項目] をクリックします。

  6. [データ変更デフォルト承認テンプレート] 行の [操作] 列で、[編集] をクリックします。

  7. [設定項目変更] ダイアログボックスで、[承認テンプレートの切り替え] をクリックします。

  8. [承認テンプレートの切り替え] ダイアログボックスで、目的のテンプレートを見つけ、[操作] 列にある [選択] をクリックします。

    説明

    チケットに承認が不要な場合、[承認不要にリセット] をクリックして承認ステップをバイパスできます。

  9. [送信] をクリックします。

SQL 修正モジュールのファクターとアクション

ファクター

ファクターは組み込みのシステム変数です。 これらを使用して、SQL タイプや影響を受ける行数など、セキュリティルール検証のためのコンテキスト情報を取得できます。

  • すべてのファクターは @fac. で始まり、その後にファクター名が続きます。

  • 各モジュールのチェックポイントごとに、提供されるファクターは異なります。

表 1. ファクターリスト

ファクター

説明

@fac.env_type

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

@fac.sql_type

SQL スクリプトのタイプ (UPDATE や INSERT など)。 詳細については、「SQLConsole」の SQL 子クラスの説明をご参照ください。

@fac.detail_type

データ変更のタイプ:

  • COMMON:通常のデータ変更

  • CHUNK_DML:ロックフリーのデータ変更

  • PROCEDURE:ストアドプロシージャ

  • CRON_CLEAR_DATA:定期的なテーブルクリーンアップ

  • BIG_FILE:バッチデータインポート

@fac.is_logic

データベースが論理データベースであるかどうかを示します。

@fac.extra_info

その他の変更情報。 このファクターは現在使用されていません。

@fac.is_ignore_affect_rows

チェックをスキップするかどうかを示します。

@fac.insert_rows

挿入操作で影響を受ける行数。

@fac.update_delete_rows

影響を受ける行数。

@fac.max_alter_table_size

変更されたテーブルの最大表領域サイズ。

@fac.is_has_security_column

SQL スクリプトに機密性の高い列が含まれているかどうかを示します。

@fac.security_column_list

SQL スクリプトに含まれる機密性の高い列のリスト。

@fac.risk_level

検出されたリスクレベル。 有効な値は小文字の英語文字列で、低いものから順に次のとおりです:

  • low:低リスク

  • middle:中リスク

  • high:高リスク

  • highest:重大なリスク

@fac.risk_reason

このリスクレベルが検出された理由。

@fac.table_name_list

SQL 変更に関与するテーブル名のリスト。 例:

if    
   'tb_order' in @fac.table_name_list or 'tb1_order' in @fac.table_name_list
then    
    @act.mark_risk 'high' 'High risk: Involves changes to the order table'
end

意味:SQL 変更に tb_order または tb1_order テーブルが含まれる場合、リスクレベルは高くなります。

アクション

アクションは、if 条件が満たされたときにシステムが実行する動作です。 例として、チケット送信の禁止、ワークフローの選択、実行の許可、実行の拒否などがあります。

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

  • 各モジュールのチェックポイントごとに、提供されるアクションは異なります。

表 2. アクションリスト

アクション

説明

@act.allow_submit

チケットの実行送信を許可します。

@act.allow_execute_direct

SQL コンソールでの直接実行を許可します。

@act.forbid_execute

実行を禁止します。

@act.mark_risk

リスクをマークします。 最初のパラメーターはリスクレベルを指定し、次の 4 つの小文字の英語の値のみをサポートします (低いものから順に):low (低リスク)、middle (中リスク)、high (高リスク)、highest (重大なリスク)。 2 番目のパラメーターはリスク理由の説明です。 使用法:@act.mark_risk 'middle' 'Medium risk: production environment'。

@act.do_not_approve

承認テンプレートの ID を指定します。 詳細については、「承認ワークフローの設定」をご参照ください。

@act.choose_approve_template

@act.choose_approve_template_with_reason