ハイブリッドクラウドは、既存のオンプレミス展開に柔軟性を追加するための優れた方法です。いくつかのブログで説明したように、パブリッククラウドは、独自のデータセンターへの優れた追加機能であり、負荷を処理し、設備投資を削減し、ディザスタリカバリ手順の実装に使用できるように簡単にスケールアウトできます。セキュリティは、そのようなシステムを構築することを計画するときに考慮しなければならないもう1つの側面です。このブログ投稿では、ハイブリッドクラウドMariaDB展開のセキュリティに関する考慮事項について説明します。
VPN
そのうちの1つは、クラウドプロバイダーによって利用可能になるソリューションを使用することです。それらのほとんどには、何らかの接続オプションが利用可能です。アマゾンウェブサービスと統合する場合は、AWSDirectConnectにすることができます。 Google Cloudの使用を計画している場合、ソリューションについては次のWebサイトで説明されています:https://cloud.google.com/hybrid-connectivity。つまり、ハードウェアVPN統合からBGPピアリングのセットアップまで、さまざまなオプションが多数あります。
スペクトルの反対側には、ソフトウェアVPNソリューションがあります。 OpenVPNまたは同様の種類のソフトウェアを使用して、独自のデータセンターとパブリッククラウドの間に安全な暗号化されたネットワーク接続をセットアップできます。このような場合、VPNサーバーに使用されるパブリッククラウドで実行されている別のインスタンスが必要になります。ソフトウェアVPNを利用すると、要件に最適で、環境に最適なソリューションを選択できます。
アプリケーションサーバーは、データベースに直接アクセスできないようにする必要があります。アクセスする必要はありません。アプリケーションが実行する必要があるのは、ロードバランサーに接続することだけです。ロードバランサーはデータベースに接続できる必要があります。 ProxySQLのようなロードバランサーは、読み取り/書き込み分割を実行し、読み取りと書き込みを正しいデータベースノードに送信することができます。アプリケーションはProxySQLに接続できる必要があり、残りはプロキシによって処理されます。データベース認証、トラフィックシェーピング、多数のレプリカにトラフィックを分散します。不要なアクセスはすべて制限する必要があります。セキュリティグループ、ファイアウォール-これらは、環境を保護するために使用するツールです。
つまり、データベースホストへのアクセスは、必要なポートでのみ許可する必要があります。 MariaDBの場合、これは明らかにデータベースに使用されるポートですが、必要に応じて他のポートにもなります。ある種のエクスポーターまたはエージェントがインストールされている場合があります。 Galeraの場合、クラスター内通信用にポートを開く必要があります。 SSH接続用に開いたポートが必要な場合もあります。理想的には、ホストごとにアクセスを制限します。特定のポートにアクセスできるのは、限られたホストのセットのみです。たとえば、データベースポートは、他のデータベースノード、ローカルホスト、およびプロキシ層からアクセスできる場合があります。他のノードのために開いたままにする必要はありません。データベースノードを別のサブネットに配置して、セキュリティをさらに強化することもできます。
ポートに関しては、ベストプラクティスは、デフォルト設定から別の設定に変更することです。理想的には、ランダムなものです。 SSHポートを22から2222に、またはMariaDBポートを3306から33306に変更すると、自動化された攻撃の一部を回避できる場合がありますが、誰かが積極的にネットワークに侵入しようとしているかどうかはわかります。より良いセキュリティが必要な場合は、ランダムな値を使用してください。 SSHを5762に設定し、MariaDBを24359に設定します。誰もそれらを推測できない可能性があります。 TCPタイムアウトを設定して、ポートスキャンが非常に長く、費用がかかるようにします。これにより、確実にチャンスが増えます。
SSL
VPNとファイアウォールに加えて、データベーストラフィックがSSLを使用して暗号化されていることを確認する必要があります。
理想的には、両方のフロントエンド接続を(ロードバランサーから)保護します。データベースノード間の通信(Galeraクラスターでのレプリケーションまたはクラスター内転送)。 ClusterControlは、数回クリックするだけでこれらのオプションを有効にするのに役立ちます。
必要なのは、ClusterControlに新しい証明書を作成させるか、既存の証明書の1つを使用させることです。必要に応じて独自の証明書をインポートできます。 SSLを有効にすると、ネットワークにアクセスした人でもデータベーストラフィックを読み取ることができなくなります。
もちろん、セキュリティの重要な側面はネットワークだけではありません。はい、特にハイブリッドクラウド環境では重要ですが、他にも非常に重要な側面があります。それらの1つは、MariaDBに組み込まれているアクセス制御です。
MariaDBの役割ベースのアクセス制御
MariaDBには、データベースアクセスが適切に管理され、必要な場所で制限されるようにするための一連の機器が付属しています。認証の最初の行はユーザーです。 MariaDBへのアクセスを許可されているすべての人は、割り当てられたユーザーを使用してデータベースに接続する必要があります。このようなユーザーは適切なパスワードを使用できます。MariaDBでパスワード検証を有効にして、パスワードが十分に強力であることを確認できます。理想的には、ユーザーのアクセスホストをロードバランサーのホスト名またはIPのみに制限します。これは、ユーザーがデータベースに接続する方法である必要があります。一部の管理ユーザーの場合、必要に応じてローカルホストアクセスを維持することをお勧めします。適切なパスワード強度を適用することに加えて、一定期間内に期限切れになるようにパスワードを構成したり、ユーザーにパスワードローテーションを適用したりできます。ご想像のとおり、適切なパスワードローテーションポリシーを実装する必要があります。
MariaDBのすべてのユーザーは、複数の特権を割り当てることができます。特権は、グローバルレベル、データベースレベル、テーブルレベル、さらには列レベルなど、いくつかのレベルで割り当てることができます。ベストプラクティスは、可能な限り制限された一連の特権をユーザーに付与することです。ユーザーが特定のテーブルへのアクセスのみを必要とする場合は、それを許可するだけです。他のスキーマは言うまでもなく、そのユーザーが他のテーブルにアクセスする必要はありません。ユーザーに付与できる多数の特権セットを使用して、非常に詳細なアクセス権を定義できます。これは、データベース管理特権によるデータの読み取り、更新、または削除の権限から、ユーザーがレプリケーションスレッドの管理やread_only設定のバイパスなどのアクションを実行できる「スーパー」特権までの範囲です。
さらに、MariaDBにはロールが付属しています。ユーザー管理を容易にするために、付与された特権のセットを使用してロールを定義し、それらのロールをユーザーに割り当てることができます。このようなユーザーは、割り当てられた役割に関連する付与を継承するため、大規模な付与の管理がはるかに簡単になります。複数のユーザーの付与を変更する代わりに、特定の1つの役割に割り当てて、次の方法ですべての特権を管理できます。割り当てられている役割に付与されている特権を変更する。
また、パスワードが割り当てられていない、または特権のセットが多すぎる既存のユーザーがいないことを確認する必要があります。このようなセキュリティ監査は時々実行する必要があり、潜在的なセキュリティリスクを認識し、それらに対処する計画を立てることができます。
MariaDBと同様に、データベースに監査ログが付属している場合は、データベースで発生しているアクションを追跡するためにそれを使用することを検討する必要があります。監査ログは、それを達成するのに役立ちます。これを有効にすると、どのユーザーがどのクエリを実行したかなどの詳細も追跡できるようになります。 ClusterControlを使用している場合は、数回クリックするだけで監査ログを有効にできます。
このブログを要約すると、ハイブリッドクラウド環境でMariaDBデプロイメントを設計する際に考慮すべきことがいくつかあります。それらの中には、環境の設計方法に厳密に関連しているものもあれば、使用しているデータベースタイプにかなり関連しているものもあり、ハイブリッドクラウドを使用しているという事実はそれほど変わりません。本当に重要なのは、データベースが適切に保護されていることを確認することです。これは、環境がどのようなものであっても、最終的な目標です。