TiDBSecurityコンフィグレーションのベスト プラクティス

TiDB のセキュリティは、データの整合性と機密性を保護するために重要です。このドキュメントでは、デプロイメント中に TiDB クラスターを安全に構成するためのガイドラインを示します。これらのベスト プラクティスに従うことで、潜在的なセキュリティ リスクを効果的に軽減し、データ侵害を防ぎ、TiDB データベース システムの継続的かつ安定した信頼性の高い運用を確保できます。

注記:

このドキュメントでは、TiDB セキュリティ構成に関する一般的な推奨事項を示します。PingCAP は情報の完全性や正確性を保証するものではなく、このガイドの使用によって生じる問題について一切の責任を負いません。ユーザーは、特定のニーズに基づいてこれらの推奨事項を評価し、専門家に相談してカスタマイズされたアドバイスを受ける必要があります。

ルートユーザーの初期パスワードを設定する

デフォルトでは、新しく作成された TiDB クラスターの root ユーザーにはパスワードがないため、潜在的なセキュリティ リスクが生じます。パスワードが設定されていない場合、誰でも root ユーザーとして TiDB データベースにログインでき、データにアクセスして変更できる可能性があります。

このリスクを回避するには、展開時にルート パスワードを設定することをお勧めします。

パスワードの複雑さのチェックを有効にする

デフォルトでは、TiDB はパスワードの複雑さのポリシーを適用しないため、弱いパスワードや空のパスワードが使用され、セキュリティ リスクが増大する可能性があります。

データベース ユーザーが強力なパスワードを作成できるようにするには、妥当なパスワードの複雑さのポリシー設定することをお勧めします。たとえば、パスワードに大文字、小文字、数字、特殊文字の組み合わせを含めることを要求するポリシーを設定します。パスワードの複雑さのチェックを実施することで、データベースのセキュリティを強化し、ブルート フォース攻撃を防ぎ、内部の脅威を減らし、規制への準拠を保証し、データ侵害のリスクを軽減して、全体的なセキュリティを強化できます。

デフォルトのGrafanaパスワードを変更する

TiDB のインストールにはデフォルトで Grafanaコンポーネントが含まれており、デフォルトのユーザー名とパスワードは通常adminです。パスワードをすぐに変更しないと、攻撃者がこれを悪用してシステムを制御する可能性がありますadmin

TiDB の展開中は、Grafana のパスワードをすぐに強力なものに変更し、システムのセキュリティを確保するために定期的にパスワードを更新することをお勧めします。Grafana のパスワードを変更する手順は次のとおりです。

  • Grafana に初めてログインしたら、プロンプトに従ってパスワードを変更します。

    Grafana Password Reset Guide

  • パスワードを変更するには、Grafana 個人設定センターにアクセスします。

    Grafana Password Reset Guide

TiDBダッシュボードのセキュリティ強化

最小権限ユーザーを使用する

TiDB ダッシュボードはTiDB SQLユーザーとアカウント システムを共有し、TiDB ダッシュボードの認証はTiDB SQLユーザーの権限に基づいています。TiDB ダッシュボードには最小限の権限が必要であり、読み取り専用アクセスでも操作できます。

セキュリティを強化するために、TiDB ダッシュボードにアクセスするための最小権限の SQL ユーザー作成し、高い権限を持つユーザーの使用を避けることをお勧めします。

アクセス制御を制限する

デフォルトでは、TiDB ダッシュボードは信頼できるユーザー向けに設計されています。デフォルトのポートには、TiDB ダッシュボードのほかに追加の API インターフェースが含まれています。外部ネットワークまたは信頼できないユーザーからの TiDB ダッシュボードへのアクセスを許可する場合は、セキュリティの脆弱性を回避するために次の対策を講じてください。

  • ファイアウォールまたはその他のメカニズムを使用して、デフォルトの2379ポートを信頼できるドメインに制限し、外部ユーザーによるアクセスを防止します。

    注記:

    TiDB、TiKV、およびその他のコンポーネントは、PD クライアント ポートを介して PDコンポーネントと通信する必要があります。コンポーネント間の内部ネットワーク アクセスをブロックしないでください。ブロックすると、クラスターが使用できなくなります。

  • リバースプロキシを構成するすると、別のポート上の外部ユーザーに TiDB ダッシュボード サービスを安全に提供できます。

内部ポートを保護する

デフォルトでは、TiDB インストールには、コンポーネント間通信用の特権インターフェイスがいくつか含まれています。これらのポートは主に内部通信用であるため、通常、ユーザーがアクセスできるようにする必要はありません。これらのポートをパブリック ネットワークに公開すると、攻撃対象領域が拡大し、最小権限の原則に違反し、セキュリティ脆弱性のリスクが高まります。次の表は、TiDB クラスターのデフォルトのリスニング ポートを示しています。

成分デフォルトポートプロトコル
ティビ4000マイグレーション
ティビ10080ウェブ
ティクヴ20160プロトコル
ティクヴ20180ウェブ
PD2379HTTP/プロトコル
PD2380プロトコル
TiFlash3930プロトコル
TiFlash20170プロトコル
TiFlash20292ウェブ
TiFlash8234ウェブ
ティフロー8261ウェブ
ティフロー8291ウェブ
ティフロー8262ウェブ
ティフロー8300ウェブ
TiDB Lightning8289ウェブ
TiDB Operator6060ウェブ
TiDBダッシュボード2379ウェブ
TiDBBinlog8250ウェブ
TiDBBinlog8249ウェブ
テレメトリ8082ウェブ
電子8080ウェブ
電子8000ウェブ
電子4110ウェブ
電子4111ウェブ
電子4112ウェブ
電子4113ウェブ
電子4124ウェブ
プロメテウス9090ウェブ
グラファナ3000ウェブ
アラートマネージャー9093ウェブ
アラートマネージャー9094プロトコル
ノードエクスポーター9100ウェブ
ブラックボックスエクスポーター9115ウェブ
NGモニタリング12020ウェブ

ネットワーク セキュリティ ポリシーまたはファイアウォールを使用して他のポートへのアクセスを制限しながら、データベース用の4000ポートと Grafana ダッシュボード用の9000ポートのみを一般ユーザーに公開することをお勧めします。以下は、 iptables使用してポート アクセスを制限する例です。

# Allow internal port communication from the whitelist of component IP addresses sudo iptables -A INPUT -s internal IP address range -j ACCEPT # Only open ports 4000 and 9000 to external users sudo iptables -A INPUT -p tcp --dport 4000 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 9000 -j ACCEPT # Deny all other traffic by default sudo iptables -P INPUT DROP

TiDB ダッシュボードにアクセスする必要がある場合は、別のポートで外部ネットワークに安全にサービスを提供することリバースプロキシを設定する推奨します。

サードパーティのMySQL脆弱性スキャナーによる誤検知を解決する

ほとんどの脆弱性スキャナーは、バージョン情報に基づいて MySQL の脆弱性を検出します。TiDB は MySQL プロトコルと互換性がありますが、MySQL 自体は互換性がないため、バージョンベースの脆弱性スキャンでは誤検知が発生する可能性があります。脆弱性スキャンは原則ベースの評価に重点を置くことをお勧めします。コンプライアンス スキャン ツールで特定の MySQL バージョンが必要な場合は、 サーバーのバージョン番号を変更する実行して要件を満たすことができます。

サーバーのバージョン番号を変更することで、脆弱性スキャナーによる誤検知を回避できます。1 server-version値は、TiDB ノードが現在の TiDB バージョンを確認するために使用されます。TiDB クラスターをアップグレードする前に、予期しない動作を回避するために、 server-version値が空であるか、TiDB の実際のバージョンであることを確認してください。

このページは役に立ちましたか?