パスワードは、CREATE USER
、GRANT
、SET PASSWORD
などの SQL ステートメントでプレーンテキストとして記述できます。 このようなステートメントが書き込まれたとおりに MySQL サーバーによってログに記録された場合、それらの中のパスワードは、ログへのアクセス権を持つすべてのユーザーに表示されます。
ステートメントロギングでは、次のステートメントのクリアテキストとしてパスワードを書き込まないようにします:
CREATE USER ... IDENTIFIED BY ...
ALTER USER ... IDENTIFIED BY ...
SET PASSWORD ...
START SLAVE ... PASSWORD = ...
START REPLICA ... PASSWORD = ...
CREATE SERVER ... OPTIONS(... PASSWORD ...)
ALTER SERVER ... OPTIONS(... PASSWORD ...)
これらのステートメントのパスワードは、一般クエリーログ、スロークエリーログ、およびバイナリログに書き込まれたステートメントテキストに文字どおりに表示されないように書き換えられます。 ほかのステートメントについては書き換えが適用されません。 特に、リテラルパスワードを参照する mysql.user
システムテーブルの INSERT
ステートメントまたは UPDATE
ステートメントはそのままログに記録されるため、このようなステートメントは避けてください。 (付与テーブルを直接変更することはお勧めしません。)
一般クエリーログの場合、パスワードの書き換えは、--log-raw
オプションを使用してサーバーを起動することによって抑制することができます。 セキュリティ上の理由から、このオプションは本番での使用にはお薦めできません。 診断のために、サーバーで受信されたステートメントの正確なテキストを確認すると役立つ場合があります。
デフォルトでは、監査ログプラグインによって生成される監査ログファイルの内容は暗号化されず、SQL ステートメントのテキストなどの機密情報が含まれることがあります。 セキュリティ上の理由から、監査ログファイルは、MySQL サーバーおよびログを表示する正当な理由を持つユーザーのみがアクセスできるディレクトリに書き込む必要があります。 セクション6.4.5.3「MySQL Enterprise Audit のセキュリティに関する考慮事項」を参照してください。
クエリーリライトプラグインがインストールされている場合は、サーバーが受信したステートメントがリライトされることがあります (Query Rewrite Plugins を参照)。 この場合、--log-raw
オプションは次のようにステートメントロギングに影響します:
--log-raw
がない場合、サーバーはクエリーリライトプラグインによって返されたステートメントをログに記録します。 これは、受け取ったステートメントとは異なる場合があります。--log-raw
では、サーバーは元のステートメントを受信したとおりにログに記録します。
パスワードの書き換えの影響は、解析できないステートメント (構文エラーなど) はパスワードがないことがわかっていないため、一般クエリーログに書き込まれないことです。 エラーが発生したステートメントを含むすべてのステートメントのロギングが必要なユースケースでは、--log-raw
オプションを使用する必要があります。これにより、パスワードのリライトもバイパスされることに注意してください。
パスワードの書き換えは、プレーンテキストパスワードが必要な場合にのみ行われます。 パスワードハッシュ値を想定する構文を持つステートメントの場合、書き換えは行われません。 このような構文に対してプレーンテキストパスワードが誤って指定された場合、パスワードはリライトなしで指定されたとおりにログに記録されます。
保証されていない公開からログファイルを保護するには、サーバーおよびデータベース管理者へのアクセスを制限するディレクトリ内でログファイルを見つけます。 サーバーが mysql
データベース内のテーブルにログを記録する場合は、それらのテーブルへのアクセス権をデータベース管理者にのみ付与します。
レプリカは、レプリケーションソースサーバーのパスワードを接続メタデータリポジトリ (デフォルトでは、slave_master_info
という名前の mysql
データベースのテーブル) に格納します。 接続メタデータリポジトリのデータディレクトリでのファイルの使用は非推奨になりましたが、引き続き可能です (セクション17.2.4「リレーログおよびレプリケーションメタデータリポジトリ」 を参照)。 データベース管理者のみが接続メタデータリポジトリにアクセスできることを確認します。 接続メタデータリポジトリにパスワードを格納するかわりに、START REPLICA | SLAVE
ステートメントまたは START GROUP_REPLICATION
ステートメントを使用して、ソースに接続するための資格証明を指定することもできます。
制限付きアクセスモードを使用して、パスワードを含むログテーブルまたはログファイルを含むデータベースバックアップを保護します。