TiDB Dashboardのセキュリティ保護
TiDB Dashboardにアクセスするにはサインインする必要がありますが、TiDB Dashboardはデフォルトで信頼できるユーザーエンティティからのアクセスを想定して設計されています。外部ネットワークユーザーや信頼できないユーザーにTiDB Dashboardへのアクセスを許可する場合は、セキュリティ上の脆弱性を回避するために以下の対策を講じてください。
TiDBユーザーのセキュリティを強化する
TiDB rootユーザーに強力なパスワードを設定する
TiDB Dashboardのアカウントシステムは、 TiDB SQLユーザーのアカウントシステムと一致しています。デフォルトでは、TiDBのrootユーザーにはパスワードが設定されていないため、TiDB Dashboardへのアクセスにはパスワード認証が不要です。これにより、悪意のある訪問者は、特権SQL文の実行を含む高い権限を取得できます。
TiDB rootユーザーには強力なパスワードを設定することをお勧めします。詳細はTiDB ユーザーアカウント管理ご覧ください。または、TiDB rootユーザーを無効にすることもできます。
TiDB Dashboard用の最小権限ユーザーを作成する
TiDB Dashboardのアカウントシステムは、 TiDB SQLのアカウントシステムと一致しています。TiDB Dashboardにアクセスするユーザーは、 TiDB SQLユーザーの権限に基づいて認証および認可されます。そのため、TiDB Dashboardでは限定的な権限、つまり読み取り専用権限のみが必要です。最小権限の原則に基づいてユーザーがTiDB Dashboardにアクセスできるように設定することで、高い権限を持つユーザーのアクセスを回避できます。
TiDB Dashboardにアクセスしてサインインするには、最小限の権限を持つSQLユーザーを作成することをお勧めします。これにより、高い権限を持つユーザーによるアクセスを回避し、セキュリティを向上できます。詳細はTiDB Dashboardのユーザー管理ご覧ください。
ファイアウォールを使用して信頼できないアクセスをブロックする
TiDB DashboardはPDクライアントポート(デフォルトはhttp://IP:2379/dashboard/ )を介してサービスを提供します。TiDB DashboardはID認証を必要としますが、PDクライアントポート上のPD内の他の特権インターフェース(例: http://IP:2379/pd/api/v1/members )はID認証を必要とせず、特権操作を実行できます。したがって、PDクライアントポートを外部ネットワークに直接公開することは非常に危険です。
以下の対策を講じることをお勧めします。
ファイアウォールを使用して、コンポーネントが外部ネットワークまたは信頼できないネットワーク経由で PDコンポーネントのクライアントポートにアクセスすることを禁止します。
リバース プロキシを構成して、別のポートで TiDB Dashboard サービスを外部ネットワークに安全に提供する方法の詳細については、 リバースプロキシの背後で TiDB Dashboardを使用する参照してください。
複数のPDインスタンスを展開するときにTiDB Dashboardポートへのアクセスを開く方法
テスト環境では、外部アクセス用に TiDB Dashboard ポートを開くようにファイアウォールを構成する必要がある場合があります。
複数のPDインスタンスがデプロイされている場合、TiDB Dashboardは実際に1つのPDインスタンスのみで実行され、他のPDインスタンスにアクセスするとブラウザのリダイレクトが発生します。そのため、ファイアウォールに正しいIPアドレスが設定されていることを確認する必要があります。このメカニズムの詳細については、 複数のPDインスタンスを使用したデプロイメント参照してください。
TiUPデプロイメント ツールを使用する場合、次のコマンドを実行すると、実際に TiDB Dashboardを実行している PD インスタンスのアドレスを表示できます ( CLUSTER_NAMEをクラスター名に置き換えます)。
tiup cluster display CLUSTER_NAME --dashboard
出力は実際の TiDB Dashboard アドレスです。
以下はサンプル出力です。
http://192.168.0.123:2379/dashboard/
この例では、ファイアウォールは、開いている IP 192.168.0.123のポート2379への受信アクセスを設定する必要があり、TiDB Dashboardにはhttp://192.168.0.123:2379/dashboard/経由でアクセスします。
TiDB Dashboard専用のリバース プロキシ
ファイアウォールを使用して信頼できないアクセスをブロックするで述べたように、PDクライアントポートで提供されるサービスには、TiDB Dashboard( http://IP:2379/dashboard/に配置)だけでなく、PD内の他の特権インターフェース( http://IP:2379/pd/api/v1/membersなど)も含まれます。したがって、リバースプロキシを使用してTiDB Dashboardを外部ネットワークに提供する場合は、外部ネットワークがリバースプロキシを介してPD内の特権インターフェースにアクセスできないように、ポート内のすべてのサービスではなく、プレフィックスが/dashboardサービスのみを提供するようにしてください。
安全で推奨されるリバース プロキシ構成を確認するには、 リバースプロキシの背後で TiDB Dashboardを使用する参照することをお勧めします。
リバースプロキシのTLSを有効にする
トランスポートレイヤーのセキュリティをさらに強化するには、リバース プロキシに対して TLS を有効にし、さらに mTLS を導入してユーザー証明書を認証することもできます。
詳細はHTTPSサーバーの設定とHAProxy SSL 終了ご覧ください。