MySQL テーブル全体の暗号化ソリューション keyring_file の詳細な説明

MySQL テーブル全体の暗号化ソリューション keyring_file の詳細な説明

例示する

MySql Community Edition は、5.7.11 以降、テーブルベースのデータ暗号化ソリューションをサポートしています。モジュールは keyring_file と呼ばれ、テーブル全体の暗号化をサポートします。この暗号化方法は、実際にはファイル暗号化に基づいています。mysqld がキーを読み取って起動すると、テーブル全体のデータを復号化します。mysql サービスでは、読み取られたデータが復号化されるため、クライアントはそれを認識しません。このキーはローカルに保存され、MySQL サービスにはこのキーの読み取りと書き込みの権限があります。

一般的に、このソリューションはデータベース ファイルが暗号化されているためあまり安全ではありませんが、MySQL サービスのアカウントがある限り、アクセス データは復号化され、暗号化は自動的に解除されます。さらに、復号化キーもローカルに保存されるため、侵入者はそれを持ち去ることができます。このソリューションでは、侵入者がデータベース ファイルをドラッグした後にその内容を読み取れないようにすることしかできません。

MySQL Enterprise Edition の 3 つの追加モジュール

MySQL のエンタープライズ バージョンの場合は、他に 3 つの暗号化方式があります。

1.キーリング暗号化ファイル

前に述べたコミュニティ バージョンと似ていますが、追加のキーがある点が異なります。このキーは、データベース キーの暗号化と復号化に使用されます。セキュリティ面では、どちらもほぼ同じです。

2.キーリング_okv

キーのローカルストレージと比較して、このモジュールは KMIP を使用してキーにアクセスするため、比較的安全です。

3.キーリング_aws

AWS キー管理サービスを統合して、暗号化キーと復号化キーを管理します。キー管理のセキュリティをさらに向上します。

4つの暗号化モジュールでサポートされる暗号化タイプ

モジュール名利用可能な暗号化アルゴリズムキーの長さの制限
キーリング暗号化ファイルエーエス
DSSA
RSAA の
制限なし 制限なし 制限なし
キーリングファイルエーエス
DSSA
RSAA の
制限なし 制限なし 制限なし
キーリング_okvエーエス16、24、32
キーリング_awsエーエス16、24、32

まとめると、これら 4 つのソリューションはすべてファイル暗号化およびメモリ復号化ソリューションであり、違いは暗号化および復号化キーの保存方式にあります。 keyring_okv と keyring_aws を使用して、MySQL アカウントのセキュリティを確保し、アカウント権限を厳密に区別することをお勧めします。

他の 2 つは安全性が低くなります。

実装手順

さて、ここで最も単純な keyring_file 展開ソリューションについて簡単に説明します。何らかの理由で暗号化キーが常に生成できるとは限らないため、Windows ではこのソリューションを使用できない可能性があることを事前に指摘しておきます。

1. MySQL 5.7.21の最新バージョンを使用する

yum aptなどのツールを使用して最新バージョンのmysqlをインストールするか、ソースコードをダウンロードして自分でコンパイルしてインストールします。

sudo apt で mysql-5.7 をインストールします

2. 暗号化モジュールを有効にする

プラグイン keyring_file soname 'keyring_file.so' をインストールします。

mysql> INSTALL PLUGIN keyring_file soname 'keyring_file.so';
クエリは正常、影響を受けた行は 0 行 (0.10 秒)

3. 暗号化キーの保存パスを設定する

グローバル keyring_file_data を '/root/mysql-keyring/keyring' に設定します。

mysql> グローバル keyring_file_data を '/var/lib/mysql-keyring/keyring' に設定します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

4. 設定を永続的に有効にする

上記の 2 つの手順は一時的なものであり、サービスを再起動すると失敗します。サービスの再起動後に設定が有効になるように、設定を構成ファイルに書き込みます。

[mysqld]
早期プラグインロード=keyring_file.so
keyring_file_data=/root/mysql-keyring/keyring

5. キーの保存パスを確認する

'%keyring_file_data%' のようなグローバル変数を表示します。

mysql> '%keyring_file_data%' のようなグローバル変数を表示します。
+-------------------+--------------------------------+
| 変数名 | 値 |
+-------------------+--------------------------------+
| キーリングファイルデータ | /var/lib/mysql-keyring/keyring |
+-------------------+--------------------------------+
セット内の 1 行 (0.00 秒)

6. 有効なモジュールを表示する

keyring_file モジュールがロードされているかどうかを確認します。
プラグインを表示します。

mysql> プラグインを表示します。
+----------------------------+----------+--------------------+-----------------+---------+
| 名前 | ステータス | タイプ | ライブラリ | ライセンス |
+----------------------------+----------+--------------------+-----------------+---------+
| binlog | アクティブ | ストレージ エンジン | NULL | GPL |
| mysql_native_password | アクティブ | 認証 | NULL | GPL |
| sha256_password | アクティブ | 認証 | NULL | GPL |
| パフォーマンス スキーマ | アクティブ | ストレージ エンジン | NULL | GPL |
| CSV | アクティブ | ストレージ エンジン | NULL | GPL |
| MRG_MYISAM | アクティブ | ストレージ エンジン | NULL | GPL |
| MyISAM | アクティブ | ストレージ エンジン | NULL | GPL |
| InnoDB | アクティブ | ストレージ エンジン | NULL | GPL |
| INNODB_TRX | アクティブ | 情報スキーマ | NULL | GPL |
| INNODB_LOCKS | アクティブ | 情報スキーマ | NULL | GPL |
| INNODB_LOCK_WAITS | アクティブ | 情報スキーマ | NULL | GPL |
| INNODB_CMP | アクティブ | 情報スキーマ | NULL | GPL |
| INNODB_CMP_RESET | アクティブ | 情報スキーマ | NULL | GPL |

。 。 。 。 。 。 (N項目を省略)

| keyring_file | アクティブ | キーリング | keyring_file.so | GPL |
+----------------------------+----------+--------------------+-----------------+---------+
セット内の行数は 45 です (0.00 秒)

7. 既存のテーブルを暗号化する

テーブル暗号化を 'Y' に変更します。

mysql> テーブル cc (id int) を作成します。
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

mysql> テーブル cc 暗号化を 'Y' に変更します。
クエリは正常、影響を受けた行は 0 行 (0.06 秒)
レコード: 0 重複: 0 警告: 0

8. 暗号化を解除する

テーブル暗号化を 'N' に変更します。

mysql> テーブル cc 暗号化を 'N' に変更します。
クエリは正常、影響を受けた行は 0 行 (0.01 秒)
レコード: 0 重複: 0 警告: 0

公式ドキュメント:

https://dev.mysql.com/doc/refman/5.7/en/keyring-installation.html

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL の暗号化と復号化の例
  • Java、JavaScript、Oracle、MySQL に実装された MD5 暗号化アルゴリズムの共有
  • mysql および mssql の MD5 暗号化ステートメント
  • PHP MySQL アプリケーションで XOR 暗号化アルゴリズムを使用する
  • MySQL 暗号化/圧縮関数
  • MySQL 双方向暗号化と復号化の使用方法の詳細な説明

<<:  Vue-Jest自動テストの基本構成の詳しい説明

>>:  dockerネットワーク双方向接続の詳細な説明

推薦する

1つの記事でJavaScriptのクロージャ関数について学ぶ

目次変数のスコープ閉鎖の概念クロージャの使用クロージャのデメリット最後に、クロージャのメリットとデメ...

URLパラメータに基づくNginx転送

使用シナリオ:ジャンプ パスは、傍受された URL に応じて動的に構成する必要があります。これは、イ...

PDO を使用して SQL インジェクションを防ぐ原理の分析

序文この記事では、SQL インジェクションを回避するために pdo の前処理メソッドを使用します。詳...

React で setInterval 関数を使用する例

この記事はWindows 10のシステム環境をベースに、Reactの学習と使用について説明しています...

単一選択折りたたみメニュー機能を実現するCSS

前回の「最もシンプルなスイッチを実現するCSS」のように、HTML5とCSS3でほとんどの機能をすで...

ハイパーコネクションの4つの状態の適用の詳細な説明

ブラウザの問題かもしれないと思うかもしれませんが、スタイル定義の順序が間違っている可能性が高いです。...

Linux でファイルの作成時間を取得する方法と実践的なチュートリアル

背景ファイルの作成時刻を取得する必要がある場合があります。例えば: 「xtrabackup スキーマ...

Vue プロジェクトにインターフェース リスニング マスクを追加する方法

1. 事業背景マスク レイヤーを使用してユーザーの異常な操作を遮断する方法は、フロントエンドでよく使...

ローカルで起動したときに Vue プロジェクトがクッキーを保持できない問題を解決する

vueプロジェクトをパッケージ化してサーバーにデプロイし、正常にログインできるが、ローカルで起動する...

Linuxでディスクをマウントする方法

仮想マシンを使用しているときに、ディスク容量が不足し、継続使用するためにディスクをマウントする必要が...

nginx のロードバランシングとリバースプロキシの説明

目次負荷分散負荷分散分類1. DNS 負荷分散2. IP負荷分散3. リンク層の負荷分散4. ハイブ...

CSS3 を使用して楕円軌道の回転を実装するサンプルコード

最近、次のような効果を達成する必要がある最初は、CSS3D回転を使用して記述すると、次の効果しか得ら...

HttpsページでBaiduシェアを使用するためのソリューション

サイト全体で https アクセスを有効にしてから、共有コードが利用できなくなり、有効になっていた小...

SQLはROW_NUMBER() OVER関数を使用してシーケンス番号を生成します。

構文: ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY...

ウェブページコンテンツの閲覧設計手法に関する議論

<br />コンテンツ ページの記事の場合、記事が長すぎる場合やカテゴリ (ランキング)...