ログ編集
TiDB が詳細なログ情報を提供する場合、ログに機密データ (ユーザー データなど) が出力される可能性があり、データ セキュリティ リスクが発生します。このようなリスクを回避するために、各コンポーネント(TiDB、TiKV、PD) は、ログ編集を有効にしてユーザー データ値を保護できる構成項目を提供します。
TiDB側でのログ編集
TiDB 側でログ編集を有効にするには、 global.tidb_redact_log
の値をON
またはMARKER
に設定します。この構成値のデフォルトはOFF
で、ログ編集が無効であることを意味します。
set
構文を使用してグローバル変数tidb_redact_log
設定できます。
set @@global.tidb_redact_log = ON;
設定後、新しいセッションで生成されたすべてのログが編集されます。
create table t (a int, unique key (a));
Query OK, 0 rows affected (0.00 sec)
insert into t values (1),(1);
ERROR 1062 (23000): Duplicate entry '1' for key 't.a'
上記のINSERT
ステートメントのエラー ログは次のように出力されます。
[2024/07/02 11:35:32.686 +08:00] [INFO] [conn.go:1146] ["command dispatched failed"] [conn=1482686470] [session_alias=] [connInfo="id:1482686470, addr:127.0.0.1:52258 status:10, collation:utf8mb4_0900_ai_ci, user:root"] [command=Query] [status="inTxn:0, autocommit:1"] [sql="insert into `t` values ( ... )"] [txn_mode=PESSIMISTIC] [timestamp=450859193514065921] [err="[kv:1062]Duplicate entry '?' for key 't.a'"]
上記のエラー ログから、値tidb_redact_log
がON
に設定されている場合、データ セキュリティ リスクを回避するために、機密情報が TiDB ログ内の?
マークに置き換えられていることがわかります。
さらに、TiDB にはMARKER
オプションがあります。 tidb_redact_log
の値をMARKER
に設定すると、TiDB はログ内の機密情報を直接置き換えるのではなく、 ‹›
でマークするため、編集ルールをカスタマイズできます。
set @@global.tidb_redact_log = MARKER;
上記の構成の後、新しいセッションによって生成されるすべてのログで機密情報が置き換えられるのではなく、マークされます。
create table t (a int, unique key (a));
Query OK, 0 rows affected (0.07 sec)
insert into t values (1),(1);
ERROR 1062 (23000): Duplicate entry '‹1›' for key 't.a'
エラーログは次のとおりです。
[2024/07/02 11:35:01.426 +08:00] [INFO] [conn.go:1146] ["command dispatched failed"] [conn=1482686470] [session_alias=] [connInfo="id:1482686470, addr:127.0.0.1:52258 status:10, collation:utf8mb4_0900_ai_ci, user:root"] [command=Query] [status="inTxn:0, autocommit:1"] [sql="insert into `t` values ( ‹1› ) , ( ‹1› )"] [txn_mode=PESSIMISTIC] [timestamp=450859185309483010] [err="[kv:1062]Duplicate entry '‹1›' for key 't.a'"]
前述のエラー ログからわかるように、 tidb_redact_log
をMARKER
に設定すると、TiDB はログで‹ ›
使用して機密情報をマークします。必要に応じて、ログ内の機密情報を処理するための編集ルールをカスタマイズできます。
TiKV側でのログ編集
TiKV 側でログ編集を有効にするには、 security.redact-info-log
の値をtrue
または"marker"
に設定します。この構成値のデフォルトはfalse
で、ログ編集が無効であることを意味します。
PD側でのログ編集
PD 側でログ編集を有効にするには、 security.redact-info-log
の値をtrue
または"marker"
に設定します。この設定値のデフォルトはfalse
で、ログ編集が無効であることを意味します。
TiFlash側でのログ編集
TiFlash側でログ編集を有効にするには、 tiflash-server のsecurity.redact_info_log
値と tiflash-learner のsecurity.redact-info-log
値の両方をtrue
または"marker"
に設定します。両方の設定値はデフォルトでfalse
に設定されており、これはログ編集が無効であることを意味します。