web-dev-qa-db-ja.com

暗号化された接続を使用するAlways On可用性グループ

2ノードのSQL Server 2016 AOAG、TestA、TestB、リスナーTestLがあります。アプリサーバー/クライアントとデータベースサーバー間の暗号化された接続の使用を開始したいと思います。

以下のセクションは、接続の暗号化の実装に関する2つのMSドキュメントで見つかりました。これがAOAGに当てはまるかどうか知りたいだけですか? AOAGはフェールオーバークラスターの使用を必要とするため、そうではないかと思いますが、確認を求めています。

クラスターの暗号化

フェールオーバークラスターで暗号化を使用する場合は、フェールオーバークラスター内のすべてのノードに、フェールオーバークラスター化インスタンスの完全修飾DNS名でサーバー証明書をインストールする必要があります。たとえば、test1.your company.comおよびtest2という名前の2ノードのクラスターがある場合です。 company.comと、fcisqlという名前のSQL Serverのフェイルオーバークラスターインスタンスでは、fcisql.your company.comの証明書を取得し、両方のノードに証明書をインストールする必要があります。フェールオーバークラスターを暗号化用に構成するには、SQL Serverネットワーク構成の[Protocols for]プロパティボックスで[ForceEncryption]チェックボックスをオンにします。

4
Jim Sleeman

最初に、AGに参加する各インスタンスでプロトコル暗号化を強制する必要があります。 FCIでは、インスタンスは1つしかありません。

AGクライアントを使用すると、AGリスナーに接続でき、インスタンスに直接接続できます。したがって、それに応じて証明書を設定する必要があります。 https://docs.Microsoft.com/en-us/sql/database-engine/availability-groups/windows/listeners-client-connectivity-application-failover#SSLcertificates を参照してください

この構成は、プロトコル暗号化を行うために必須ではないことに注意してください。 SQL Serverをクライアントに対して認証する必要があります。プロトコルの暗号化だけが必要な場合は、クライアントが常にそれを要求するか、自己署名証明書を使用してサーバーで強制的に暗号化できます。

(データのサブセットを暗号化することだけを目的としている場合)調べたい別のアプローチは Always Encrypted です。 SQL Server 2016 SP1以降のすべてのエディション(またはSP1以前のSQL 2016のEnterprise Edition)が付属しており、列レベルでエンドツーエンドの暗号化を提供します。他の 注意すべき制限事項 もありますが、可用性グループとも互換性があります。

SSLは転送中のデータを暗号化しますが、保存されているデータは暗号化しません。 SSL接続を強制して 透過的データ暗号化 を有効にすると、Always Encryptedと同様のセキュリティレベルをエミュレートできますが、代わりにデータベースレベルでエミュレートできます。ただし、これらの2つの機能はメモリ内のデータを暗号化しませんが、データはクライアントで復号化されるため、Always Encryptedはこれを行います。最後に、TDEはEnterprise Edition専用の機能であるため、暗号化のうさぎの穴をさらに掘り下げる場合は、ライセンス要件に注意してください。

2
John Eisbrener