ログ編集
TiDB が詳細なログ情報を提供する場合、機密データ (ユーザー データなど) をログに出力する可能性があり、データ セキュリティ リスクが発生します。このようなリスクを回避するために、各コンポーネント (TiDB、TiKV、および PD) は、ログのリダクションを有効にしてユーザー データの値を保護する構成項目を提供します。
TiDB 側でのログ編集
TiDB 側でログのリダクションを有効にするには、値をglobal.tidb_redact_log
から1
に設定します。この構成値のデフォルトは0
です。これは、ログのリダクションが無効であることを意味します。
set
構文を使用して、グローバル変数tidb_redact_log
を設定できます。
set @@global.tidb_redact_log=1;
設定後、新しいセッションで生成されたすべてのログが編集されます。
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 'a'
上記のINSERT
ステートメントのエラー ログは次のように出力されます。
[2020/10/20 11:45:49.539 +08:00] [INFO] [conn.go:800] ["command dispatched failed"] [conn=5] [connInfo="id:5, addr:127.0.0.1:57222 status:10, collation:utf8_general_ci, user:root"] [command=Query] [status="inTxn:0, autocommit:1"] [sql="insert into t values ( ? ) , ( ? )"] [txn_mode=OPTIMISTIC] [err="[kv:1062]Duplicate entry '?' for key 'a'"]
上記のエラー ログから、すべての機密情報が?
を使用してシールドされ、 tidb_redact_log
が有効になっていることがわかります。このようにして、データセキュリティのリスクが回避されます。
TiKV 側でのログ編集
TiKV 側でログのリダクションを有効にするには、値をsecurity.redact-info-log
からtrue
に設定します。この構成値のデフォルトはfalse
です。これは、ログのリダクションが無効であることを意味します。
PD 側でのログ編集
PD 側でログのリダクションを有効にするには、値をsecurity.redact-info-log
からtrue
に設定します。この構成値のデフォルトはfalse
です。これは、ログのリダクションが無効であることを意味します。
TiFlash 側のログ編集
TiFlash 側でログのリダクションを有効にするには、tiflash-server のsecurity.redact_info_log
値と tiflash-learner のsecurity.redact-info-log
値の両方をtrue
に設定します。両方の構成値のデフォルトはfalse
です。これは、ログのリダクションが無効になっていることを意味します。