データを変更するには、[SQLConsole] タブでSQL文を入力するか、データ管理 (DMS) コンソールでデータ変更チケットを送信します。 カスタムセキュリティルールを作成して、異なる環境にあるデータベースでデータ変更操作を管理することもできます。 このトピックでは、4つの例を使用して、一般的なシナリオでセキュリティルールを設定し、データ変更チケットを送信する方法について説明します。
準備
このトピックの4つの例では、DMSのスキーマデザイン機能を使用して、Security Collaborationモードで管理される
poc_prod
運用データベースとpoc_dev
開発データベースにdata_modify
テーブルを作成しました。 また、SQLConsoleタブでdata_modify
テーブルを作成することもできます。DDLステートメントを実行するためにチケットを送信する必要はありません。 詳細については、このトピックの「チケットを送信せずにDMLステートメントを実行するように開発データベースを構成する」をご参照ください。POC_devインスタンスのセキュリティルールセットは、POC開発データベースのセキュリティルールです。 POC_prodインスタンスのセキュリティルールセットは、POCプロダクションデータベースのセキュリティルールです。
チケットを起票して定期的なデータ変更操作を実行する
この例では、チケットを送信して、poc_prod
データベースのdata_modify
テーブルにデータを挿入します。
DMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、コンソールの左上隅にあるアイコンの上にポインターを移動し、
を選択します。チケットにパラメーターを設定します。 以下の情報は、いくつかのパラメータについて説明する。
SQLテキスト: 実行可能な正しいSQL文を入力します。 複数のSQL文は
セミコロン (;)
で区切ります。添付ファイル: のSQL添付ファイルのみ
. txt
,. zip
、および. sql
ファイルタイプは変更またはロールバックできます。 ファイルのサイズは15 MBを超えることはできません。
[送信] をクリックします。
チケットを送信すると、システムは自動的にチケットの事前チェックを実行します。 チケットが事前チェックに失敗した場合は、プロンプトに従ってSQL文を変更し、チケットを再度送信します。
チケットが事前チェックに合格したら、[承認の送信] をクリックします。 [プロンプト] メッセージで、[OK] をクリックします。
説明デフォルトでは、データ変更チケットはDBAによって承認されます。 既定の承認テンプレートを変更する方法の詳細については、「SQL Correct」トピックの既定の承認テンプレートの変更セクションをご参照ください。
チケットの承認後、[変更の実行] をクリックします。 [タスク設定] ダイアログボックスで、必要に応じてパラメーターを設定し、[実行の確認] をクリックします。
説明[適用] ステップで [実行方法] パラメーターを [監査承認後、自動実行] に設定した場合、このステップは自動的にスキップされます。
中断されたタスクが再開された後、スクリプトは中断された位置から実行できます。
パラメーター
説明
実行戦略
データ変更が実行された時刻。 有効な値:
即時実行: データの変更は、チケットの送信後すぐに実行されます。 デフォルト値です。
スケジュール: データ変更はスケジュールどおりに実行されます。
単一トランザクションとしての送信の有効化
ステートメントを単一のトランザクションとして制御するかどうかを指定します。 デフォルト値:off 有効な値:
on: SQL文が失敗した場合、同じトランザクション内で実行されたすべてのデータ操作言語 (DML) 文がロールバックされます。 DDLステートメントはロールバックできません。
off: 指定されたSQL文は個別に実行されます。 SQL文が失敗した場合、トランザクションは停止されます。 同じトランザクションで実行された他のSQL文はロールバックされません。
バックアップの有効化
データをバックアップするかどうかを指定します。 デフォルト値 : on。 有効な値:
説明データバックアップは、
UPDATE
およびDELETE
ステートメントでのみサポートされます。MongoDBおよびRedisデータベースのデータをバックアップすることはできません。
on: DMSは、
UPDATE
またはDELETE
ステートメントの実行時に影響を受けるデータをバックアップする特定のステートメントを生成します。MySQLまたはMariaDBデータベースの場合、DMSは
REPLACE INTO
ステートメントを生成します。説明サポートされているMySQLデータベースタイプには、Alibaba Cloud上にないApsaraDB RDS for MySQL、PolarDB for MySQL、PolarDB-X、MySQLデータベースが含まれます。
データベースがMySQLまたはMariaDBデータベースでない場合、DMSは
INSERT
ステートメントを生成します。
off: DMSはデータバックアップ用のステートメントを生成しません。
オプションです。 チケットが正常に実行されたら、poc_prodデータベースの [SQLConsole] タブに移動して、データ変更が期待される結果を満たしているかどうかを確認します。
チケットを必要とせずに開発データベースでDMLステートメントを実行できるようにセキュリティルールを構成する
開発データベースのデータ変更操作ごとにチケットが必要になると、開発者の研究開発効率が低下します。 この問題を解決するために、DMSでは、チケットを送信する必要なしに、[SQLConsole] タブでDMLステートメントを実行できるようにするセキュリティルールを設定できます。 これにより、研究開発効率が向上し、データセキュリティが確保されます。 セキュリティルールは、DMSのセキュリティルールエンジンによって提供されます。
この例では、SQLコンソールでのINSERT
ステートメントの実行例を示します。
poc_devデータベースのセキュリティルールをPOC開発データベースルールに変更します。
説明デフォルトでは、DMSセキュリティルールでは、チケットを使用してDMLステートメントを実行する必要があります。
DMS管理者としてのDMSコンソールV5.0 にログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。[セキュリティルール] ページで、POC開発データベースルールに対応する [操作] 列の [編集] をクリックします。
左側のナビゲーションウィンドウで、[SQL Correct] をクリックします。 [チェックポイント] で [SQL実行ルール] を選択します。
すべてのDMLはSQLConsoleで直接実行できますを有効にし、すべてのDMLはチケットで実行する必要があります。
data_modifyテーブルにデータを挿入します。
DMSコンソールの左上隅で、検索ボックスにキーワードを入力してpoc_devデータベースインスタンスを検索します。
[SQLConsole] タブで、SQLエディターに次の
INSERT
ステートメントを入力し、[実行] をクリックします。INSERT INTO data_modify (name, phone, sex) VALUES ('dms_a', '19000001','Male'); INSERT INTO data_modify (name, phone, sex) VALUES ('dms_b', '19000002','Female'); INSERT INTO data_modify (name, phone, sex) VALUES ('dms_c', '19000003','Male');
[実行の確認] ダイアログボックスで、[実行] をクリックします。 実行済みメッセージが表示された場合、セキュリティルールは正常に変更されます。
チケットが必要なpoc_prodデータベースで高リスクのSQL文を実行できるようにセキュリティルールを設定する
セキュリティルールを設定して、さまざまな種類のSQL文の承認プロセスを定義できます。 たとえば、DELETE
ステートメントの実行後にセキュリティリスクが発生する場合があります。 したがって、DELETEステートメントを実行するには、厳密な承認プロセスを設定する必要があります。
この例では、DELETEステートメントは高リスクSQLステートメントとして構成され、DELETE
ステートメントを実行するためのチケット承認プロセスが指定されています。
承認プロセスを設定します。
最初に DMS管理者としてDMSコンソールにログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。[承認テンプレートの作成] をクリックします。 表示されるメッセージで、パラメーターを設定します。
承認ノード: [ノードの追加] をクリックして承認ノードを追加します。 承認ノードを昇順で追加する必要があります。 例えば、シーケンス番号が1及び2である承認ノードは、第1及び第2の承認ノードである。
設定が完了したら、[送信] をクリックします。
セキュリティルールを設定します。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。[セキュリティルール] ページで、POC本番データベースルールの右側にある [操作] 列の [編集] をクリックします。
[詳細] ページで、左側のウィンドウで [SQLの修正] タブをクリックします。
[チェックポイント] パラメーターを [リスク識別ルール] に設定し、[ルールの作成] をクリックします。
[Create Rule - SQL Correct] ダイアログボックスで、セキュリティルールのパラメーターを設定します。
以下の情報は、いくつかのパラメータについて説明する。
パラメーター
説明
ルール名
必須。 この例では、
Production環境と入力します。 DELETEステートメントの実行は、リスクの高い操作
です。ルールDSL
必須。 この例では、次のドメイン固有言語 (DSL) コードを入力します。
if @fac.env_type in ['product','pre'] and @fac.sql_type in [ 'DELETE'] then @act.mark_risk 'high' 'High-risk SQL statements: DELETE in the production environments' end
[送信] をクリックします。
本番環境を検索します。 DELETEステートメントの実行はリスクの高い操作ルールであるため、[アクション] 列の [有効化] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。
[OK] をクリックすると、ルールが有効になります。 すべての
DELETE
ステートメントは、高リスク操作として識別されます。[チェックポイント] パラメーターを [リスク承認ルール] に設定し、[高リスク承認プロセス] ルールを見つけて、[操作] 列の [編集] をクリックします。
[ルールの変更-SQL修正] ダイアログボックスで、[ルールDSL] フィールドのテンプレートIDをステップ1で作成したテンプレートのIDに変更し、[送信] をクリックします。
高リスク承認プロセスルールを見つけ、[操作] 列の [有効化] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。
を実行するExecute a
削除
ステートメントを使用します。DMSコンソールの左上隅で、検索ボックスにキーワードを入力して
poc_prod
データベースインスタンスを検索します。[SQLConsole] タブで、SQLエディターに次の
DELETE
ステートメントを入力し、[実行] をクリックします。DELETE FROM data_modify WHERE id = 1;
[実行履歴] エリアにセキュリティルールのために実行が失敗したことを示すエラーメッセージが表示された場合、[データ変更の申請] をクリックしてチケットを送信し、
[削除]
ステートメントを実行します。説明運用データベースで
DELETE
ステートメントを実行することは、リスクの高い操作です。 チケットを起票し、承認テンプレートで指定された承認者がチケットを承認するのを待つ必要があります。
poc_prodデータベースのTRUNCATEステートメントを禁止するようにセキュリティルールを設定する
TRUNCATE
ステートメントを実行して、テーブルからすべてのデータをクリアします。 ほとんどの場合、運用データベースでは実行されません。 実行されると、重大なデータ損失を引き起こす可能性があります。 TRUNCATE
ステートメントを禁止するようにセキュリティルールを設定できます。
この例では、SQLコンソールまたはチケットを送信してTRUNCATE
ステートメントの実行を禁止する方法を示します。
セキュリティルールを変更します。
最初に DMS管理者としてDMSコンソールにログインします。
上部のナビゲーションバーで、 を選択します。
説明DMSコンソールをシンプルモードで使用する場合は、左上隅のアイコンの上にポインターを移動し、
を選択します。[セキュリティルール] ページで、
[POC運用データベースルール]
の右側にある [操作] 列の [編集] をクリックします。左側のナビゲーションウィンドウで、[SQL Correct] をクリックします。 [チェックポイント] で [SQL実行ルール] を選択します。
[SQLコンソールでTRUNCATEの直接実行を許可する] ルールを見つけ、ルールの右側にある [操作] 列の [編集] をクリックします。
ルール名を
Forbid TRUNCATEステートメント
に変更します。 元のDSL構文を次のDSL構文に置き換え、[送信] をクリックします。if @fac.sql_type in ['TRUNCATE'] then @act.forbid_execute end
説明上記のDSL構文では、SQLコンソールまたはチケットの送信による
TRUNCATE
ステートメントの実行が禁止されています。 セキュリティルールのDSL構文の詳細については、「セキュリティルールのDSL構文」をご参照ください。TRUNCATEを検索して、SQLコンソールで直接実行することはできません。 チケットとして実行する必要があります。 ルールをクリックし、[操作] 列の [有効化] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。
SQLConsoleタブでTRUNCATEステートメントを実行します。
DMSコンソールの左上隅で、検索ボックスにキーワードを入力して
poc_prod
データベースインスタンスを検索します。[SQLConsole] タブで、SQLエディターに次の
TRUNCATE
ステートメントを入力し、[実行] をクリックします。TRUNCATE TABLE `data_modify`;
実行失敗が表示されます。 セキュリティルールにより、システムはSQLコンソールでの
TRUNCATE
ステートメントの実行を禁止します。
チケットを起票し、TRUNCATEステートメントを実行します。 詳細については、このトピックの「チケットを起票して定期的なデータ変更操作を実行する」をご参照ください。
説明データ変更チケットのChange SQLパラメーターに次のSQL文を指定します。
TRUNCATE TABLE `data_modify`;
チケットの送信後、事前チェックの結果を確認します。 事前チェックが失敗した場合、
TRUNCATE
ステートメントがチケットを提出することによって実行されることを禁止するセキュリティルールが有効になります。