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ネットワーク双方向接続の詳細な説明

推薦する

Docker データ管理 (データ ボリュームとデータ ボリューム コンテナー) の詳細な説明

実稼働環境で Docker を使用する場合、多くの場合、データを複数のコンテナ間で永続化または共有す...

MySQLサーバーは--read-onlyオプションで実行されているため、このステートメントを実行できません

会議中に同僚から開発ライブラリを書き込めないとの報告を受けました。エラー メッセージは次のとおりでし...

jar パッケージを Docker コンテナに変換する方法

jar パッケージを Docker コンテナに変換する方法1.まずJavaイメージをダウンロードする...

フロントエンドのパフォーマンス最適化を学習するための準備として、HTML ページのレンダリング プロセスを理解する (続き)

昨夜、ブラウザのレンダリングプロセスに関するエッセイを書きましたが、小さなコードで説明しただけでした...

Vue での ElementUI の使用に関する詳細な説明

ログイン + セッションストレージエフェクト表示ログインに成功すると、ユーザー ID がフロントエン...

VUE 3 テレポート コンポーネントと使用構文をすぐに使い始める

目次1. テレポートの紹介1.1. 複数のテレポートを使用する2. テレポートを使用する理由3. テ...

Vueはアンカー配置機能を実装します

この記事では、アンカー配置を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...

VMware 仮想マシン (CentOS7 イメージ) を使用して Linux をインストールする

1. VMwareのダウンロードとインストールリンク: https://www.jb51.net/s...

WeChatアプレットはウォーターフォールフローのページングスクロール読み込みを実装します

この記事では、WeChatアプレットのウォーターフォールフローページングスクロールロードを実装するた...

Vue.js パフォーマンス最適化 N 個のヒント (収集する価値あり)

目次機能コンポーネント子コンポーネントの分割ローカル変数v-show によるDOMの再利用キープアラ...

JavaScriptのonclickとclickの違いの詳細な説明

目次addEventListener が必要な理由は何ですか? addEventListener を...

MySQL 5.7.21 解凍版のインストールと設定方法のグラフィックチュートリアル (win10)

MySQL 5.7.21 解凍版のインストールと設定方法は参考までに。具体的な内容は以下のとおりで...

自作の Windows サーバーに egg アプリケーションを展開する方法 (画像とテキスト付き)

1. IEブラウザを使用してVPNにログインする 2. リモートログイン 3. サーバーに最新のn...

MySQL 8.0.11 MacOS 10.13 のインストールと設定方法のグラフィックチュートリアル

MacにMySQLデータベースをインストールし、環境変数を設定する手順を参考までに記録します。具体的...

WindowsX Hyper-V ベースの CentOS システムをインストールする

現在、Linux を使用するほとんどの人は、クラウド サーバーを使用するか、Windows 上に仮想...