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

Data Management:正しいSQL

最終更新日:Sep 25, 2024

データ管理 (DMS) では、データ変更のためにSQL文を実行できます。 しかし、このようなSQL文の実行には高度なセキュリティが必要です。 DMSを使用すると、[SQL Correct] タブでセキュリティルールを設定して、データ変更のチケットの送信と承認を検証できます。 セキュリティルールによって検証されたSQL文のみを実行できます。

前提条件

DMS管理者データベース管理者 (DBA) 、またはセキュリティ管理者です。

背景情報

DMSを使用すると、ドメイン固有言語 (DSL) ステートメントを作成してセキュリティルールを定義できます。 ビジネス要件に基づいて、データ変更のリスクレベルを指定できます。 次に、さまざまなリスクレベルでデータ変更チケットに対してさまざまな承認プロセスを指定できます。 たとえば、SQL文の実行を制御するための厳密な承認プロセスや、すべてのSQL文の実行を許可するための緩い承認プロセスを指定できます。

[SQLの修正] タブで提供されるチェックポイント

チェックポイント

説明

基本設定アイテム

デフォルトでは、次の5つのルールが提供されます。

  • データ変更の既定の承認テンプレート: 既定では、データ変更チケットに使用される承認テンプレートのIDは853で、承認者は関連するデータベースのDBAです。

    説明

    既定の承認テンプレートを変更する方法の詳細については、このトピックの「既定の承認テンプレートの変更」をご参照ください。

  • データ変更リスクレベルリスト: チケットのデータ変更は、さまざまなリスクレベルでマークできます。 シナリオごとに異なるリスクレベルと承認プロセスを指定できます。 このリスクレベルリストは、主にリスク識別ルールおよびリスク承認ルールチェックポイントのルールを作成するために使用されます。

    デフォルトでは、次の4つのリスクレベルがサポートされます。

    • LOW: 低リスク

    • 中: 中リスク

    • 高: ハイリスク

    • 最も高い: 主要なリスク

  • データインポートが速度モードの選択をサポートしているかどうか: データを速度モードでデータベースにインポートできるかどうかを指定します。 詳細については、「データのインポート」をご参照ください。

  • 通常のデータ変更の影響を受ける行の検証をスキップ: データ変更チケットの事前チェックで影響を受ける行数の検証をスキップするかどうかを指定します。 ルールを有効にすると、影響を受ける行の検証をスキップできます。 ルールを無効にした場合、影響を受ける行の検証はスキップできません。

  • 指定された数の影響を受ける行が行数検証の結果と一致しない場合、通常データ変更チケットを送信できません。: 指定された影響を受ける行数が行数検証の結果と一致しない場合、データ変更チケットを送信するかどうかを指定します。 ルールを有効にした場合、指定された数の影響を受けた行が行数の検証の結果と一致しない場合、チケットを送信できません。 ルールを無効にした場合、指定された数の影響を受けた行が行数の検証の結果と一致しない場合は、チケットを送信できます。

-

SQL実行ルール

SQL実行ルールを使用して、SQLコンソールモジュールで実行できるSQL文を指定できます。

説明

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

たとえば、次の2つのルールが両方とも有効になっている場合、2番目のルールが優先されます。

  • すべてのDMLはSQLConsoleで直接実行できます

  • すべてのDMLはチケットで実行する必要があります

オンライン環境で特定のDMLステートメントを実行してデータベースのデータを変更できるようにするには、次のSQL実行ルールを作成します。

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

上記のコードは、データベースがオフライン環境にある場合、UPDATEDELETE、およびINSERTステートメントをデータベースで実行できることを示しています。

リスク識別ルール

リスク識別ルールは、データ変更のリスクを識別および分類するために使用されます。 データベース環境、データが影響を受ける行数、SQL文のカテゴリとサブカテゴリに基づいて、リスク識別ルールを作成できます。

説明

データ変更は、複数のセキュリティルールによって複数のリスクレベルでマークすることができます。 最高のリスクレベルが優先されます。

たとえば、データ変更は、5つのルールによって低リスクでマークされ、3つのルールによって中リスクでマークされ、1つのルールによって高リスクでマークされます。 この場合、データ変更はリスクの高い操作として識別されます。

オフライン環境にあるデータベースのデータ変更を低リスクでマークする場合は、次のリスク識別ルールを作成できます。

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

上記のコードは、関連するデータベースがオフライン環境にある場合、データ変更が低リスクでマークされることを示しています。

リスク承認ルール

リスク承認ルールは、さまざまなリスクレベルでマークされたデータ変更を含むチケットの組み込みまたはカスタム承認ルールを指定するために使用されます。

リスク識別ルールチェックポイントに設定されたすべてのルールによってデータ変更がチェックされたが、リスクレベルのマークが付けられなかった場合、基本構成項目チェックポイントのデータ変更デフォルト承認テンプレートルールに指定された承認プロセスが使用されます。

デフォルトでは、オフライン環境はリスクの低い要因として識別され、承認は必要ありません。

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

これらのルールは、データインポートチケットの検証にのみ適用されます。

INSERTステートメントの一括インポートを許可する

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

  1. DMSコンソールV5.0 にログインします。

  2. 上部のナビゲーションバーで、セキュリティと仕様> 権限センター> 権限テンプレートを選択します。

    説明

    DMSコンソールをシンプルモードで使用する場合は、左上隅の2023-01-28_15-57-17.pngアイコンの上にポインターを移動し、[すべての機能] > [セキュリティと仕様] > [権限センター] > [権限テンプレート] を選択します。

  3. セキュリティルールタブで、管理するセキュリティルールセットを見つけて、編集で、アクション列を作成します。

  4. 詳細ページで、左側の正しいSQLタブをクリックします。

  5. 正しいSQLタブで、Checkpointsパラメーターに基本設定アイテムを選択します。

  6. データ変更デフォルト承认テンプレートルールを見つけ、アクション列で編集をクリックします。

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

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

    説明

    デフォルトでチケットの承認が必要ない場合は、[承認なしにリセット] をクリックして承認プロセスをスキップできます。

  9. クリック送信.

[SQLの修正] タブで提供される要因とアクション

要素

因子は、DMSにおける所定の変数である。 要因を使用して、セキュリティルールによって検証されるコンテキストを取得できます。 コンテキストには、SQL文のカテゴリと影響を受ける行数が含まれます。

  • 因子名は、プレフィックス @ facで構成されます。 と要素の表示名を指定します。

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

表 1. [SQLの修正] タブで提供される要因

要素

説明

@ fac.env_type

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

@ fac.sql_type

SQL 文のタイプです。 値は、UPDATEINSERTなどのSQL文のサブカテゴリです。 詳細については、「リレーショナルデータベースのSQLConsole」トピックで説明されているSQLサブカテゴリをご参照ください。

@ fac.de tail_type

データ変更チケットのタイプ。 有効な値:

  • 共通: 通常のデータ変更チケット

  • 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

SQL文によって実行されるデータ変更のリスクレベル。

@ fac.risk_reason

データの変更に基づく理由は、このリスクレベルでマークされます。

@ fac.table_name_list

データ変更に関与するテーブルの名前。 サンプルコード:

if    
   'tb_order' in @fac.table_name_list or 'tb1_order' in @fac.table_name_list
then    
    @ act.mark_risk 'high''High-level risk: involving order table'
end

進行コードは、データ変更に関与するテーブルの名前がtb_orderまたはtb1_orderである場合、データ変更が高リスクでマークされることを示します。

Action

アクションは、ifステートメントで指定された条件が満たされた場合にシステムが実行する操作です。 セキュリティルールに指定したアクションは、セキュリティルールの目的を示しています。 たとえば、チケットの送信を禁止したり、承認プロセスを選択したり、チケットを承認したり、チケットを拒否したりできます。

  • アクション名は、プレフィックス @ actで構成されます。 とアクションの表示名を指定します。

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

表 2. [SQLの修正] タブで提供されるアクション

Action

説明

@ act.allow_submit

SQL文の送信をチケットで実行できるようにします。

@ act.allow_execute_direct

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

@ act.forbid_execute

SQL文の実行を禁止します。

@ act.mark_risk

データの変更をリスクレベルでマークします。 例: @ act.mark_risk 'middle' '中レベルリスク: オンライン環境'

@ act.do_not_approve

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

@ act.choose_approve_template

@ act.choose_approve_template_with_reason