重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

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

TiDBダッシュボードにアクセスする前にサインインする必要がありますが、TiDBダッシュボードは、デフォルトで信頼できるユーザーエンティティからアクセスできるように設計されています。外部ネットワークユーザーまたは信頼できないユーザーにアクセス用のTiDBダッシュボードを提供する場合は、セキュリティの脆弱性を回避するために次の対策を講じてください。

TiDBユーザーのセキュリティを強化する

rootユーザーに強力なパスワードを設定する

TiDBダッシュボードのアカウントシステムは、 TiDB SQLユーザーのアカウントシステムと一致しています。デフォルトでは、TiDBのrootユーザーにはパスワードがないため、TiDBダッシュボードにアクセスするためにパスワード認証は必要ありません。これにより、悪意のある訪問者に、特権SQLステートメントの実行などの高い特権が与えられます。

rootユーザーには強力なパスワードを設定することをお勧めします。詳細については、 TiDBユーザーアカウント管理を参照してください。または、 rootユーザーを無効にすることもできます。

TiDBダッシュボードの最小特権ユーザーを作成します

TiDBダッシュボードのアカウントシステムは、TiDBSQLのアカウントシステムと一致していTiDB SQL。 TiDBダッシュボードにアクセスするユーザーは、 TiDB SQLユーザーの特権に基づいて認証および承認されます。したがって、TiDBダッシュボードには、制限された特権、または単に読み取り専用特権が必要です。最小特権の原則に基づいてTiDBダッシュボードにアクセスするようにユーザーを構成できるため、特権の高いユーザーのアクセスを回避できます。

TiDBダッシュボードにアクセスしてサインインするために、最小特権のSQLユーザーを作成することをお勧めします。これにより、特権の高いユーザーのアクセスが回避され、セキュリティが向上します。詳細については、 TiDBダッシュボードユーザー管理を参照してください。

ファイアウォールを使用して、信頼できないアクセスをブロックします

TiDBダッシュボードは、PDクライアントポート(デフォルトはhttp:// IP:2379 / dashboard / )を介してサービスを提供します。 TiDBダッシュボードにはID認証が必要ですが、PDクライアントポートで伝送されるPDの他の特権インターフェイス( http:// IP:2379 / pd / api / v1 / membersなど)はID認証を必要とせず、特権操作を実行できます。したがって、PDクライアントポートを外部ネットワークに直接公開することは非常に危険です。

次の対策を講じることをお勧めします。

  • ファイアウォールを使用して、コンポーネントが外部ネットワークまたは信頼できないネットワークを介してPDコンポーネントのクライアントポートにアクセスすることを禁止します。

    ノート:

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

  • 別のポートで外部ネットワークにTiDBダッシュボードサービスを安全に提供するようにリバースプロキシを構成する方法については、 リバースプロキシの背後でTiDBダッシュボードを使用するを参照してください。

複数のPDインスタンスを展開するときにTiDBダッシュボードポートへのアクセスを開く方法

警告

このセクションでは、テスト環境専用の安全でないアクセスソリューションについて説明します。このソリューションを実稼働環境で使用しないでください。

テスト環境では、外部アクセス用にTiDBダッシュボードポートを開くようにファイアウォールを構成する必要がある場合があります。

複数のPDインスタンスが展開されている場合、実際には1つのPDインスタンスのみがTiDBダッシュボードを実行し、他のPDインスタンスにアクセスするとブラウザーのリダイレクトが発生します。したがって、ファイアウォールが正しいIPアドレスで構成されていることを確認する必要があります。このメカニズムの詳細については、 複数のPDインスタンスを使用した展開を参照してください。

TiUPデプロイメントツールを使用する場合、次のコマンドを実行することにより、実際にTiDBダッシュボードを実行するPDインスタンスのアドレスを表示できます( CLUSTER_NAMEをクラスタ名に置き換えます)。

tiup cluster display CLUSTER_NAME --dashboard

出力は実際のTiDBダッシュボードアドレスです。

ノート:

この機能は、 tiup clusterデプロイメントツールの新しいバージョン(v1.0.3以降)でのみ使用できます。

TiUPクラスターをアップグレードする
tiup update --self
tiup update cluster --force

以下は出力例です。

http://192.168.0.123:2379/dashboard/

この例では、ファイアウォールは192.168.0.123のオープンIPの2379のポートへのインバウンドアクセスで構成する必要があり、TiDBダッシュボードはhttp://192.168.0.123:2379/dashboard/を介してアクセスされます。

TiDBダッシュボード専用のリバースプロキシ

[ファイアウォールを使用して信頼できないアクセスをブロックする](#use-a-firewall-to-block-untrustedaccess)で説明したように、PDクライアントポートで提供されるサービスには、TiDBダッシュボード( http:// IP:2379 / dashboard /にあります)だけでなく、他のPDの特権インターフェイス( http:// IP:2379 / pd / api / v1 / membersなど)。したがって、リバースプロキシを使用して外部ネットワークにTiDBダッシュボードを提供する場合は、外部ネットワークがPDの特権インターフェイスにアクセスできないように、プレフィックスが/dashboardのサービスのみが提供されていることを確認してください(ポートの下のすべてのサービスではありません)。リバースプロキシ。

安全で推奨されるリバースプロキシ構成を学習するには、 リバースプロキシの背後でTiDBダッシュボードを使用するを表示することをお勧めします。

リバースプロキシのTLSを有効にする

トランスポート層のセキュリティをさらに強化するために、リバースプロキシのTLSを有効にしたり、mTLSを導入してユーザー証明書を認証したりすることもできます。

詳細については、 HTTPSサーバーの構成HAProxySSLターミネーションを参照してください。