sql >> データベース >  >> RDS >> MariaDB

MariaDBの保存データの暗号化に関する考慮事項

    GDPR、PCI DSS、またはHIPPAの時代には、データのセキュリティが非常に重要です。規制に準拠するには、データの保存方法と保護方法について細心の注意を払う必要があります。通常、データは保存中または転送中の場合があります。転送中のデータは、データベースとの間で転送されるデータです。クライアントまたはアプリケーションに送信されたクエリ結果、またはクラスターのノード間で複製されたデータは、データが転送中の場合の例です。 SSLまたはTLS(データベースノード間またはデータベースとクライアント間の暗号化された接続)を使用して、その状態のデータを保護する傾向があります。

    スペクトルの反対側には、保存されているデータがあります。ほとんどのデータは、特定の瞬間に保存されていると言えます。ここでは、テーブルスペースのディスクに保存されているデータ、さまざまなデータ構造(gcacheバッファー、REDOログ)、およびログ(バイナリログとリレーログ)について説明します。 MariaDBでこのテーマに関する考慮事項を見てみましょう。

    MariaDBで何を暗号化するか?

    理想的には、すべてを暗号化する必要があります。上記のように、データベースはさまざまな場所とさまざまな方法でデータを保存します。最大のデータセットはテーブルスペースに格納されます。これは、データが格納される「最終的な」場所です。明らかに、テーブルスペースを暗号化することは可能です-そうでなければ、機能全体が無意味になります。 MariaDBは、データを1つの共有テーブルスペースに格納できます。それらのいくつか、またはすべてのテーブルを個別のテーブルスペースに格納できます。これらのシナリオはすべてサポートされています。ユーザーは、暗号化する対象を選択するときにある程度の柔軟性があります。すべて、個別のテーブル、または一部の個別のテーブルを除くすべてを暗号化できます。

    MariaDBInnoDBREDOログ

    データを格納するもう1つの構造はInnoDBREDOログです。 InnoDB REDOログは、特定の行がアップグレードされた後にデータが書き込まれる場所です。 REDOログからのデータは最終的にテーブルスペースに転送されますが、当面の間、InnoDBREDOログには最近発生したすべての変更が含まれます。ご想像のとおり、このデータも重要であり、保護する必要があります。MariaDBを使用すると、InnoDBREDOログを暗号化できます。

    MariaDBバイナリログ

    バイナリログ(およびリレーログ)には、データを変更する実行済みクエリに関する情報が格納されます。含まれている情報により、変更された行の現在の状態を再構築できるため、これは保護および暗号化する必要がある別の形式のデータです。バイナリログとリレーログの両方をMariaDBで暗号化できます。

    ガレラキャッシュ

    Galeraキャッシュ(gcache)は、実行された変更に関する情報を格納するGaleraClusterのディスク上のバッファーです。これは、ノード障害または一時的なネットワークの問題の場合に使用され、クラスターに参加するノードが欠落しているデータのみを使用して追いつくことができ、データセット全体の転送を回避します。バイナリログやREDOログと同様に、gcacheには変更のリストが含まれているため、データの一部を回復してまとめるために使用できます。コミュニティバージョンのMariaDBGaleraClusterでは、gcacheを暗号化できません。このようなオプションは、MariaDBGaleraClusterのエンタープライズバージョンで利用できるようになります。

    MariaDBで暗号化できないものは何ですか?

    MariaDBには、少なくとも現時点では、暗号化できないデータが表示される可能性のある場所がまだいくつかあります。まず、エラーログには、一部のデータを公開する可能性のあるクエリのサンプルが含まれている場合があります。エラーログを暗号化することはできませんが、エラーログをsyslogにリダイレクトし、MariaDBの外部に何らかの保護メカニズムを実装することは可能です。

    監査プラグインからのログ

    Audit Pluginもログを生成します。このログには、データベースで実行された正確なクエリなどの機密情報が含まれている場合があります。このログを暗号化することはできませんが、syslogにリダイレクトしてそこで暗号化することはできます。

    クエリログ

    一般的なクエリログと遅いクエリログ-これらのログには、MariaDBによって実行されたクエリ(または少なくともそれらのサンプル)が含まれます。現在のところ、これらのログを暗号化することはできません。

    InnoDBバッファープール

    メモリ-MariaDBは、ディスクに保存されているページに対してのみ暗号化を実行します。 InnoDBバッファープールに保存されているすべてのデータは暗号化されません。 InnoDBバッファープールは、最近変更された行、またはSELECTクエリによってアクセスされた行を保持することを目的としています。これらの行には明らかにデータサンプルが含まれます。現在のところ、MariaDBのInnoDBバッファープールを暗号化するオプションはありません。ライブメモリを読み取るには、システムにアクセスする必要があることに注意してください。どちらかを達成することは不可能ではありませんが、それは簡単な作業ではありません。

    MariaDBに含まれている暗号化オプションについて説明したことに注意してください。暗号化の別のレイヤーを使用する可能性は常にあります。たとえば、ストレージ全体を暗号化すると、ディスクに物理的にアクセスできる人はログを読み取れなくなります。一方、システムにログインできる人からデータを保護することはできません。

    外部ツールとの互換性 考慮すべきもう1つのことは互換性です。 MariaDBを暗号化する場合は、操作方法に影響を与える可能性があることに注意する必要があります。 XtraBackupやmysqlbinlogなどの外部ツールを使用して、データを処理してバックアップを作成したり、バイナリログを処理したりすることはできません。暗号化メカニズムを念頭に置いて作成されたMariaDBによって作成されたツール(Mariabackupなど)に固執する必要があります。保存データを処理できます。暗号化はMariaDBに実装されています。

    暗号化プロセスの計画

    このセクションでは、プロセスの詳細については説明しませんが、リソースや時間など、暗号化を計画する際に考慮すべきことについて説明します。プロセス中のI/Oアクティビティと同様に、CPU使用率も増加します。ユーザーの観点からは、すべては構成設定になり、ALTERコマンドを実行して既存のテーブルを再構築および暗号化します。大規模なデータベースの場合、これだけでも計画が必要な重要な課題になる可能性があります。スキーマの変更は深刻な負担になる可能性があるため、pt-online-schema-changeなどのツールを使用して、本番システムへの影響を減らし、プロセスをより適切に制御することをお勧めします。

    最終的な考え

    前述のように、データはすべての組織にとって重要であり、データが安全で保護されていることを確認することが重要です。保存データの暗号化は、全体像の重要な要素の1つです。 MariaDBでの保存データの暗号化に関するご意見をお聞かせください。ご意見をお聞かせください。下にコメントを残してください。


    1. oci_bind_by_nameおよびto_datePHP/ OCI / Oracle

    2. SQLServerでサブストリングを取得する

    3. ハイブリッドOLTP/Analyticsデータベースワークロード:MySQLデータをClickHouseに複製する

    4. BOMを使用してUTF-8としてエンコードされたファイルに対してSQLPLUSスクリプトを実行することは可能ですか?