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

Data Management:定期的なデータ変更

最終更新日:Aug 14, 2024

データを変更するには、[SQLConsole] タブでSQL文を入力するか、データ管理 (DMS) コンソールでデータ変更チケットを送信します。 カスタムセキュリティルールを作成して、異なる環境にあるデータベースでデータ変更操作を管理することもできます。 このトピックでは、4つの例を使用して、一般的なシナリオでセキュリティルールを設定し、データ変更チケットを送信する方法について説明します。

準備

  • このトピックの4つの例では、DMSのスキーマデザイン機能を使用して、Security Collaborationモードで管理されるpoc_prod運用データベースとpoc_dev開発データベースにdata_modifyテーブルを作成しました。 また、SQLConsoleタブでdata_modifyテーブルを作成することもできます。DDLステートメントを実行するためにチケットを送信する必要はありません。 詳細については、このトピックの「チケットを送信せずにDMLステートメントを実行するように開発データベースを構成する」をご参照ください。

    SQL create table文

    CREATE TABLE `data_modify` (
     `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key',
     `name` varchar(256) NOT NULL COMMENT 'Name',
     `phone` varchar(32) DEFAULT NULL COMMENT 'Phone number',
     `sex` varchar(32) DEFAULT NULL COMMENT 'Gender',
     `email` varchar(256) DEFAULT NULL COMMENT 'Email address',
     `remarks` varchar(1024) DEFAULT NULL COMMENT 'Remarks',
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Personal information';
  • POC_devインスタンスのセキュリティルールセットは、POC開発データベースのセキュリティルールです。 POC_prodインスタンスのセキュリティルールセットは、POCプロダクションデータベースのセキュリティルールです。

チケットを起票して定期的なデータ変更操作を実行する

この例では、チケットを送信して、poc_prodデータベースのdata_modifyテーブルにデータを挿入します。

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

  2. 上部のナビゲーションバーで、データベース开発 > データ変更 > 通常のデータの変更を選択します。

    説明

    DMSコンソールをシンプルモードで使用する場合は、コンソールの左上隅にある2023-01-28_15-57-17.pngアイコンの上にポインターを移動し、[すべての機能] > [データベース開発] > [データ変更] > [通常のデータの変更] を選択します。

  3. チケットにパラメーターを設定します。 以下の情報は、いくつかのパラメータについて説明する。

    • SQLテキスト: 実行可能な正しいSQL文を入力します。 複数のSQL文はセミコロン (;) で区切ります。

    • 添付ファイル: のSQL添付ファイルのみ. txt,. zip、および. sqlファイルタイプは変更またはロールバックできます。 ファイルのサイズは15 MBを超えることはできません。

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

    チケットを送信すると、システムは自動的にチケットの事前チェックを実行します。 チケットが事前チェックに失敗した場合は、プロンプトに従ってSQL文を変更し、チケットを再度送信します。

  5. チケットが事前チェックに合格したら、[承認の送信] をクリックします。 [プロンプト] メッセージで、[OK] をクリックします。

    説明

    デフォルトでは、データ変更チケットはDBAによって承認されます。 既定の承認テンプレートを変更する方法の詳細については、「SQL Correct」トピックの既定の承認テンプレートの変更セクションをご参照ください。

  6. チケットの承認後、[変更の実行] をクリックします。 [タスク設定] ダイアログボックスで、必要に応じてパラメーターを設定し、[実行の確認] をクリックします。

    説明
    • [適用] ステップで [実行方法] パラメーターを [監査承認後、自動実行] に設定した場合、このステップは自動的にスキップされます。

    • 中断されたタスクが再開された後、スクリプトは中断された位置から実行できます。

    パラメーター

    説明

    実行戦略

    データ変更が実行された時刻。 有効な値:

    • 即時実行: データの変更は、チケットの送信後すぐに実行されます。 デフォルト値です。

    • スケジュール: データ変更はスケジュールどおりに実行されます。

    単一トランザクションとしての送信の有効化

    ステートメントを単一のトランザクションとして制御するかどうかを指定します。 デフォルト値: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 MySQLPolarDB for MySQLPolarDB-X、MySQLデータベースが含まれます。

      • データベースがMySQLまたはMariaDBデータベースでない場合、DMSはINSERTステートメントを生成します。

    • off: DMSはデータバックアップ用のステートメントを生成しません。

  7. オプションです。 チケットが正常に実行されたら、poc_prodデータベースの [SQLConsole] タブに移動して、データ変更が期待される結果を満たしているかどうかを確認します。

チケットを必要とせずに開発データベースでDMLステートメントを実行できるようにセキュリティルールを構成する

開発データベースのデータ変更操作ごとにチケットが必要になると、開発者の研究開発効率が低下します。 この問題を解決するために、DMSでは、チケットを送信する必要なしに、[SQLConsole] タブでDMLステートメントを実行できるようにするセキュリティルールを設定できます。 これにより、研究開発効率が向上し、データセキュリティが確保されます。 セキュリティルールは、DMSのセキュリティルールエンジンによって提供されます。

この例では、SQLコンソールでのINSERTステートメントの実行例を示します。

  1. poc_devデータベースのセキュリティルールをPOC開発データベースルールに変更します。

    説明

    デフォルトでは、DMSセキュリティルールでは、チケットを使用してDMLステートメントを実行する必要があります。

    1. DMS管理者としてのDMSコンソールV5.0 にログインします。

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

      説明

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

    3. [セキュリティルール] ページで、POC開発データベースルールに対応する [操作] 列の [編集] をクリックします。

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

    5. すべてのDMLはSQLConsoleで直接実行できますを有効にし、すべてのDMLはチケットで実行する必要があります

  2. data_modifyテーブルにデータを挿入します。

    1. DMSコンソールの左上隅で、検索ボックスにキーワードを入力してpoc_devデータベースインスタンスを検索します。

    2. [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');
    3. [実行の確認] ダイアログボックスで、[実行] をクリックします。 実行済みメッセージが表示された場合、セキュリティルールは正常に変更されます。

チケットが必要なpoc_prodデータベースで高リスクのSQL文を実行できるようにセキュリティルールを設定する

セキュリティルールを設定して、さまざまな種類のSQL文の承認プロセスを定義できます。 たとえば、DELETEステートメントの実行後にセキュリティリスクが発生する場合があります。 したがって、DELETEステートメントを実行するには、厳密な承認プロセスを設定する必要があります。

この例では、DELETEステートメントは高リスクSQLステートメントとして構成され、DELETEステートメントを実行するためのチケット承認プロセスが指定されています。

  1. 承認プロセスを設定します。

    1. 最初に DMS管理者としてDMSコンソールにログインします。

    2. 上部のナビゲーションバーで、セキュリティと仕様 > 承認プロセスを選択します。

      説明

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

    3. [承認テンプレートの作成] をクリックします。 表示されるメッセージで、パラメーターを設定します。

      承認ノード: [ノードの追加] をクリックして承認ノードを追加します。 承認ノードを昇順で追加する必要があります。 例えば、シーケンス番号が1及び2である承認ノードは、第1及び第2の承認ノードである。

    4. 設定が完了したら、[送信] をクリックします。

  2. セキュリティルールを設定します。

    1. 上部のナビゲーションバーで、セキュリティと仕様 > セキュリティルールを選択します。

      説明

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

    2. [セキュリティルール] ページで、POC本番データベースルールの右側にある [操作] 列の [編集] をクリックします。

    3. [詳細] ページで、左側のウィンドウで [SQLの修正] タブをクリックします。

    4. [チェックポイント] パラメーターを [リスク識別ルール] に設定し、[ルールの作成] をクリックします。

    5. [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
    6. [送信] をクリックします。

    7. 本番環境を検索します。 DELETEステートメントの実行はリスクの高い操作ルールであるため、[アクション] 列の [有効化] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。

      [OK] をクリックすると、ルールが有効になります。 すべてのDELETEステートメントは、高リスク操作として識別されます。

    8. [チェックポイント] パラメーターを [リスク承認ルール] に設定し、[高リスク承認プロセス] ルールを見つけて、[操作] 列の [編集] をクリックします。

    9. [ルールの変更-SQL修正] ダイアログボックスで、[ルールDSL] フィールドのテンプレートIDをステップ1で作成したテンプレートのIDに変更し、[送信] をクリックします。

    10. 高リスク承認プロセスルールを見つけ、[操作] 列の [有効化] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。

  3. を実行するExecute a削除ステートメントを使用します。

    1. DMSコンソールの左上隅で、検索ボックスにキーワードを入力してpoc_prodデータベースインスタンスを検索します。

    2. [SQLConsole] タブで、SQLエディターに次のDELETEステートメントを入力し、[実行] をクリックします。

      DELETE FROM data_modify WHERE id = 1; 
    3. [実行履歴] エリアにセキュリティルールのために実行が失敗したことを示すエラーメッセージが表示された場合、[データ変更の申請] をクリックしてチケットを送信し、[削除] ステートメントを実行します。

      説明

      運用データベースでDELETEステートメントを実行することは、リスクの高い操作です。 チケットを起票し、承認テンプレートで指定された承認者がチケットを承認するのを待つ必要があります。

poc_prodデータベースのTRUNCATEステートメントを禁止するようにセキュリティルールを設定する

TRUNCATEステートメントを実行して、テーブルからすべてのデータをクリアします。 ほとんどの場合、運用データベースでは実行されません。 実行されると、重大なデータ損失を引き起こす可能性があります。 TRUNCATEステートメントを禁止するようにセキュリティルールを設定できます。

この例では、SQLコンソールまたはチケットを送信してTRUNCATEステートメントの実行を禁止する方法を示します。

  1. セキュリティルールを変更します。

    1. 最初に DMS管理者としてDMSコンソールにログインします。

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

      説明

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

    3. [セキュリティルール] ページで、[POC運用データベースルール] の右側にある [操作] 列の [編集] をクリックします。

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

    5. [SQLコンソールでTRUNCATEの直接実行を許可する] ルールを見つけ、ルールの右側にある [操作] 列の [編集] をクリックします。

    6. ルール名をForbid TRUNCATEステートメントに変更します。 元のDSL構文を次のDSL構文に置き換え、[送信] をクリックします。

      if
          @fac.sql_type in
            ['TRUNCATE']
      then
          @act.forbid_execute
      end
      説明

      上記のDSL構文では、SQLコンソールまたはチケットの送信によるTRUNCATEステートメントの実行が禁止されています。 セキュリティルールのDSL構文の詳細については、「セキュリティルールのDSL構文」をご参照ください。

    7. TRUNCATEを検索して、SQLコンソールで直接実行することはできません。 チケットとして実行する必要があります。 ルールをクリックし、[操作] 列の [有効化] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。

  2. SQLConsoleタブでTRUNCATEステートメントを実行します。

    1. DMSコンソールの左上隅で、検索ボックスにキーワードを入力してpoc_prodデータベースインスタンスを検索します。

    2. [SQLConsole] タブで、SQLエディターに次のTRUNCATEステートメントを入力し、[実行] をクリックします。

      TRUNCATE TABLE `data_modify`;
    3. 実行失敗が表示されます。 セキュリティルールにより、システムはSQLコンソールでのTRUNCATEステートメントの実行を禁止します。

  3. チケットを起票し、TRUNCATEステートメントを実行します。 詳細については、このトピックの「チケットを起票して定期的なデータ変更操作を実行する」をご参照ください。

    説明

    データ変更チケットのChange SQLパラメーターに次のSQL文を指定します。

    TRUNCATE TABLE `data_modify`;

    チケットの送信後、事前チェックの結果を確認します。 事前チェックが失敗した場合、TRUNCATEステートメントがチケットを提出することによって実行されることを禁止するセキュリティルールが有効になります。