TDE、列レベルの暗号化など
データ保護は、組織がGDPRなどの規制遵守基準に準拠していることを確認し、クライアントやビジネスパートナーの期待 データ侵害が多額の罰金を科すだけでなく、風評被害も同様に大きなものになる可能性があります。 Microsoft SQL Serverは、データを保護するための5種類の暗号化をサポートしています。 この記事では、それらのそれぞれとそれらを使用する場所について説明します。
SSL Transport Encryption
ブラウザとサーバー間のトラフィックを保護するwebサイトと同様に、Sql ServerはSecure Sockets Layer(SSL)を使用してサーバーインスタンスとクライアントアプ さらに、クライアントはサーバーの証明書を使用してサーバーのidを検証できます。 SSLは、ネットワーク上を移動するデータのみを保護しますが、他のほとんどの形式のSQL Server暗号化とは異なり、SSLはサポートされているすべてのバージョンのSQL ServerSSLを有効にする前に、SQL Serverに証明書をインストールする必要があります。 これを行う最善の方法は、独自のエンタープライズ証明機関(CA)から証明書を要求することです。 Windows ServerはCAとして構成でき、クライアントが発行する証明書を信頼するようにクライアントを設定できます。 あるいは、自己署名証明書を使用することもできますが、これはテスト環境に最適です。
SQL Serverの透過的なデータ暗号化(TDE)
SQL Serverの透過的なデータ暗号化(TDE)は、ディスク上のデータベースデータとログファイルを暗号化することによって、保存 これはクライアントの既存のアプリケーションに対して透過的に動作するため、TDEが有効になっているときに変更する必要はありません。 TDEでは、ページレベルでリアルタイム暗号化が使用されます。 ページはディスクに書き込まれる前に暗号化され、データとログファイルのサイズを増やすことなく、ページはメモリに読み込まれると復号化されます。 TDEは、Sql ServerのEnterprise editionでのみ使用できます。 また、Azure SQL Database、Azure SQL Data Warehouse、およびParallel Data Warehouseでも機能します。TDE暗号化には階層構造があり、Windows Data Protection API(DPAPI)が階層の最上位にあり、サービスマスターキー(SMK)の暗号化に使用されます。 SMKを使用すると、資格情報、リンクサーバーパスワード、および異なるデータベースにあるデータベースマスターキー(Dmk)を暗号化できます。 SQL DMKは、データベースに格納されている証明書および非対称キーの秘密キーを保護する対称キーです。SQL Serverでは、TDEで使用する自己署名証明書を生成することも、CAから証明書を要求することもできます(これはより一般的な方法です)。 TDEを有効にする場合は、証明書と証明書に関連付けられている秘密キーをバックアップする必要があります。 別のSQL Serverにデータベースを復元または接続する必要があります。 他のSQL ServerデータベースでTDEを有効にすると、tempdbシステムデータベースも暗号化されます。 TDEを無効にした場合は、完全バックアップを実行するまでトランザクションログの一部が暗号化されたままになる可能性があるため、証明書と秘密キーを保持する必要があります。これは、masterデータベースに格納されている証明書を使用して保護される対称キーか、Microsoft Azure Key Vaultなどの拡張キー管理(EKM)を使用するサービスによって保護される非対称 TDE対応データベースのバックアップファイルは、DEKを使用して暗号化されるため、復元操作中に、DEKを保護する証明書が使用可能である必要があります。
対称キーは、データの暗号化と復号化に同じパスワードを使用します。 非対称キーは、1つのパスワードを使用してデータを暗号化し(公開キー)、別のパスワードを使用してデータを復号化します(秘密キー)。 CREATE CERTIFICATEコマンドを使用して証明書を作成し、CREATE SYMMETRIC KEYおよびCREATE ASYMMETRIC KEY Transact-SQLコマンドを使用してデータベース暗号化キーを作成できます。
Backup Encryption
Backup EncryptionはTDEと同様に機能しますが、アクティブなデータとログファイルの代わりにSQLバックアップを暗号化します。 バックアップ暗号化は、SQL Server2014以降で使用できます。 AES128、AES192、AES256、またはTriple DES暗号化を指定し、EKMに保存されている証明書または非対称キーを使用できます。 また、TDEとバックアップの暗号化を同時に有効にすることもできますが、異なる証明書またはキーを使用する必要があります。TDEと同様に、バックアップ暗号化を有効にする場合は、証明書またはキーもバックアップする必要があります。 キーまたは証明書がない場合、バックアップファイルを使用してデータを復元することはできません。 SQL Server Managed Backup to Microsoft Azureを使用すると、バックアップを暗号化することもできます。バックアップを暗号化するために証明書を使用している場合は、データを復元するときに元の証明書が必要であることに注意してください。
つまり、証明書には、バックアップが作成されたときと同じ拇印が必要です。 証明書を更新したり、何らかの方法で変更したりすると、拇印が変更される可能性があります。
列/セルレベルの暗号化
SQL Serverのすべてのエディションで使用でき、機密データを含む列でセルレベルの暗号化を有効にできます。 データはディスク上で暗号化され、DECRYPTBYKEY関数を使用してデータを復号化するまで、メモリ内で暗号化されたままになります。 したがって、SQLデータは暗号化されていますが、ユーザーコンテキスト内の関数を使用して復号化するだけでは安全ではありません。 さらに、データの復号化には関数が必要なため、セルレベルの暗号化で動作するようにクライアントアプリケーションを変更する必要があります。TDEと同様に、セルレベルの暗号化を使用する前にマスターキー(DMK)を作成する必要があります。 セルレベルの暗号化を使用して情報を暗号化するには、次の4つのオプションがあります。
- パスフレーズを使用してデータを暗号化および復号化; それ以外の場合は、メタデータ内でパスフレーズにアクセスできます。
- 非対称キーは強力なセキュリティを提供しますが、パフォーマンスに影響を与える可能性があります。
- 対称キーは通常、十分に強力であり、セキュリティとパフォーマンスのバランスが良好です。
- 証明書は、セキュリティとパフォーマンスのバランスもよく、データベースユーザーに関連付けることができます。
Always Encrypted
Always Encryptedは、データベースエンジンに暗号化キーを公開せずに、クライアントアプリケーションの機密データを暗号化し、データ所有者とデータマネージャー たとえば、Always Encryptedを有効にすると、データベース管理者が機密データを読み取ることができなくなるようにすることができます。 名前が示すように、データは保存時に暗号化され、Azureなどのサードパーティのシステムで使用される場合は暗号化されます。
Always Encryptedは、個々のデータベース列に対して構成できます。 二種類のキーが使用されています: 列暗号化キーおよび列マスターキー。 列の暗号化キーは列内のデータを保護し、列マスターキーは1つ以上の列の暗号化キーを暗号化する「キー保護キー」です。 列マスターキーは、Azure Key Vaultなどの外部の信頼されたキーストアに格納されます。
暗号化プロセスはクライアントアプリケーションに対して透過的ですが、クライアントコンピュータ上に特別なドライバが必要です。 Always EncryptedはSql Server2016以降で使用できますが、Enterprise editionでのみ使用できます。 クライアント側の追加要件のため、Always Encryptedは、データ所有者と管理者の分離が主な要件である状況に最も適しています。