SQL Correct を使用すると、データ変更のために提出および実行できるセキュリティルールを定義できます。ルールはドメイン特化言語 (DSL) で記述され、チェックポイントに整理されています。各チェックポイントは、データ変更ワークフローの特定の段階を管理します。
前提条件
開始する前に、次のいずれかのロールを持っていることを確認してください。
DMS 管理者
データベース管理者 (DBA)
セキュリティ管理者
仕組み
データ変更チケットが提出されると、DMS は SQL Correct タブで設定されたセキュリティルールに対してそれを評価します。ビジネス要件に基づいてデータ変更のリスクレベルを指定し、異なるリスクレベルのチケットに対して異なる承認プロセスを指定できます。これは、すべての SQL ステートメントの実行を制御する厳格な承認プロセスから、承認なしでの実行を許可する緩いプロセスまで多岐にわたります。
競合解決
競合する 2 つのルールが両方とも有効になっている場合、より厳格なルールが適用されます。たとえば、「すべての DML は SQL Console で直接実行できる」と「すべての DML はチケットで実行する必要がある」が両方とも有効になっている場合、後者のルールが優先されます。
チェックポイント
Basic Configuration Item
このチェックポイントは、システム全体のデフォルトとして機能する 5 つのデフォルトルールを提供します。
| ルール | 説明 |
|---|---|
| データ変更デフォルト承認テンプレート | データ変更チケットのデフォルト承認テンプレート。デフォルトテンプレート ID: 853。デフォルト承認者: 関連するデータベースの DBA。 |
| データ変更リスクレベルリスト | リスク識別ルールおよびリスク承認ルールで使用される利用可能なリスクレベルを定義します。デフォルトレベル: LOW (低リスク)、MIDDLE (中リスク)、HIGH (高リスク)、HIGHEST (最高リスク)。 |
| データインポートがスピードモードの選択をサポートするかどうか | データがスピードモードでインポートできるかどうかを指定します。詳細については、「データのインポート」をご参照ください。 |
| 通常のデータ変更における影響を受ける行の検証をスキップする | 有効にすると、事前チェックはデータ変更チケットの行数検証をスキップします。 |
| 指定された影響を受ける行数が、行数検証の結果と一致しない場合、通常のデータ変更チケットは提出できません。 | 有効にすると、指定された影響を受ける行数が事前チェックの結果と異なる場合、チケットは提出できません。 |
SQL 実行ルール
SQL 実行ルールは、SQL Console で直接実行できる SQL ステートメントと、チケットを必要とする SQL ステートメントを制御します。
例: 非本番環境でのみ UPDATE、DELETE、INSERT を直接実行することを許可します。
if
@fac.env_type not in ['product']
and
@fac.sql_type in ['UPDATE','DELETE','INSERT']
then
@act.allow_submit
endリスク識別ルール
リスク識別ルールは、各データ変更をリスクレベルで分類します。複数のルールが同じ変更に一致する場合、最も高いリスクレベルが適用されます。
例: 非本番環境、非プレリリース環境でのデータ変更を低リスクとしてマークします。
if
@fac.env_type not in ['product','pre']
then
@act.mark_risk 'low' 'Low risk level: offline environment'
endリスク承認ルール
リスク承認ルールは、リスクレベルを承認プロセスにマッピングします。データ変更がいずれのリスク識別ルールにも一致しない場合、DMS は Basic Configuration Item の「データ変更デフォルト承認テンプレート」ルールで定義された承認テンプレートを使用します。
例 (デフォルト動作): オフライン環境 (低リスクとして識別される) は承認を必要としません。
バッチデータインポートルール
これらのルールはデータインポートチケットにのみ適用され、データ変更ワークフローとは別に評価されます。
例 (ルール): INSERT ステートメントの一括インポートを許可します。
ファクターとアクション
ルールは、ファクター (@fac.*) と アクション (@act.*) を使用して記述されます。ファクターは、環境タイプ、SQL タイプ、影響を受ける行数などのコンテキスト変数を表します。アクションは、ルール条件が満たされたときに何が起こるかを定義します。
ファクター
表 1. SQL Correct タブで提供されるファクター
| ファクター | タイプ | 説明 |
|---|---|---|
@fac.env_type | String | データベースの環境タイプ。例: DEV または PRODUCT。詳細については、「インスタンスの環境タイプを変更する」をご参照ください。 |
@fac.sql_type | String | SQL ステートメントのサブカテゴリ。例: UPDATE または INSERT。サブカテゴリの完全なリストについては、「リレーショナルデータベース用 SQL Console」をご参照ください。 |
@fac.detail_type | String | データ変更チケットのタイプ: COMMON (通常のデータ変更)、CHUNK_DML (ロックレス変更)、PROCEDURE (プログラマブルオブジェクト)、CRON_CLEAR_DATA (履歴データクリーン)、BIG_FILE (大量データインポート)。 |
@fac.is_logic | Boolean | ターゲットデータベースが論理データベースであるかどうか。 |
@fac.is_ignore_affect_rows | Boolean | 行数検証がスキップされるかどうか。 |
@fac.insert_rows | Number | 挿入される行数。 |
@fac.update_delete_rows | Number | 更新または削除される行数。 |
@fac.max_alter_table_size | Number | 変更されるテーブルを含む最大の表領域のサイズ。 |
@fac.is_has_security_column | Boolean | SQL ステートメントに機密フィールドが含まれるかどうか。 |
@fac.security_column_list | List | SQL ステートメントに含まれる機密フィールド。 |
@fac.risk_level | String | データ変更に割り当てられたリスクレベル。 |
@fac.risk_reason | String | データ変更にこのリスクレベルが割り当てられた理由。 |
@fac.table_name_list | List | データ変更に含まれるテーブルの名前。 |
@fac.extra_info | String | 追加のチケット情報。現在利用されていません。 |
例: 注文テーブルへの変更を高リスクとしてマークします。
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アクション
表 2. SQL Correct タブで提供されるアクション
| アクション | 説明 |
|---|---|
@act.allow_submit | SQL ステートメントをチケットで提出することを許可します。 |
@act.allow_execute_direct | SQL ステートメントを SQL Console で直接実行することを許可します。 |
@act.forbid_execute | SQL ステートメントの実行をブロックします。 |
@act.mark_risk | データ変更にリスクレベルを割り当てます。形式: @act.mark_risk 'middle' 'Medium-level risk: online environment'。 |
@act.do_not_approve | 承認テンプレートの ID を指定します。詳細については、「承認プロセスを設定する」をご参照ください。 |
@act.choose_approve_template | — |
@act.choose_approve_template_with_reason | — |
デフォルト承認テンプレートの変更
DMS コンソール V5.0 にログインします。
-
ポインターを左上隅の
[アイコン]に移動し、を選択します。説明DMS コンソールを通常モードで使用する場合、上部ナビゲーションバーで を選択します。
[セキュリティルール] タブで、セキュリティルールセットを見つけ、[操作] 列の [編集] をクリックします。
[詳細] ページで、左側の [SQL Correct] タブをクリックします。
Checkpoints パラメーターに[Basic Configuration Item]を選択します。
「Data change default approval Template」ルールを見つけ、[編集] を [操作] 列でクリックします。
「[設定項目の変更]」ダイアログボックスで、[承認テンプレートの切り替え]をクリックします。
「[承認テンプレートの切り替え]」ダイアログボックスで、テンプレートを見つけ、「[選択]」を「[操作]」列でクリックします。
承認要件を完全に削除するには、[承認不要にリセット] をクリックします。
[Submit] をクリックします。