保存時の暗号化の説明

完了

保存データと転送中のデータの両方の暗号化を検討することが重要です。 このユニットでは、保存データの暗号化について説明します。

保存時の暗号化

保存時の暗号化の結果について正確に理解しておくことが重要です。 保存時の暗号化では、テーブルまたは列レベルのデータは暗号化されません。 適切なアクセス許可を持つユーザーは、データの読み取り、データのコピー、データの共有を行うこともできます。 保存時の暗号化を使用すると、セキュリティで保護されていないサーバーへのバックアップの復元、またはすべてのデータベースとトランザクション ログ ファイルのコピーの作成とセキュリティで保護されていない別のサーバーへのアタッチから保護されます。

透過的なデータ暗号化

Microsoft SQL Server の Transparent Data Encryption (TDE) では、ターゲット データベース内のすべてのデータがページ レベルで暗号化されます。 データはディスク上のデータ ページに書き込まれるときに暗号化され、データ ページがメモリに読み込まれるときに解読されます。 最終的な結果として、ディスク上のすべてのデータ ページが暗号化されます。 データベース ファイルは、承認されていないユーザーが読み取ることはできません。 バックアップ操作ではデータベース ファイルからバックアップ デバイスにデータ ページがコピーされるだけなので、データベースのバックアップも暗号化されます。 バックアップ操作中に解読は行われません。

Azure SQL Database では、TDE の有効化は簡単です。 2017 年 5 月以降に Azure SQL Database で作成されたデータベースでは、TDE が自動的に有効になっています。 2017 年 5 月より前に作成されたデータベースでは、TDE は既定で無効になるので、これらのデータベース上では TDE を手動で有効にする必要があります。 Azure SQL Managed Instance を使用する場合、2019 年 2 月より後に作成されたデータベースでは、TDE が有効になります。 2019 年 2 月より前に作成されたデータベースでは、TDE が無効になります。 Azure SQL Database データベース内で TDE を有効にするには、Azure portal 内のデータベースを編集するだけです。 [Transparent Data Encryption] ペインで、データ暗号化の有効化を選択します。

Azure SQL データベースの Transparent Data Encryption の設定

既定では、Azure SQL Database 内のデータベースは、Microsoft が提供する証明書を使用して暗号化されます。 Microsoft Azure には Bring Your Own Key オプションが用意されています。これを使用すると、自分の会社で作成して Azure にアップロードした証明書を使用できます。 会社が Azure から証明書を削除すると、データベース接続が閉じられ、データベースへのアクセス権がなくなります。

Microsoft SQL Server データベース内での TDE の有効化は、いくつかの T-SQL コマンドが必要なだけなので、簡単なプロセスです。 このプロセスでは、CREATE MASTER KEY ENCRYPTION コマンドを使用して、master データベース内のマスター キーを設定します。 その後、証明書が master データベース内に作成されます。これは、CREATE CERTIFICATE コマンドを使用した暗号化に使用されます。 次に、データベース内にデータベース暗号化キーが作成されます。これにより、CREATE DATABASE ENCRYPTION KEY コマンドを使用して TDE を有効にすることができます。 暗号化キーが作成されたら、ALTER DATABASE コマンドを使用して有効にする必要があります。 コマンドのセット全体を以下に示します。

USE master;

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Pa55.w.rd';

GO

CREATE CERTIFICATE MyServerCert

 WITH SUBJECT = 'TDEDemo_Certificate';

GO


USE TDE_Demo;

GO


CREATE DATABASE ENCRYPTION KEY

 WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE MyServerCert;

GO


ALTER DATABASE TDE_Demo SET ENCRYPTION ON;

GO

TDE を有効にすると、各データベース ページを読み取り、暗号化して、ディスクに書き戻す必要があるため、データベースを暗号化するために時間がかかります。 データベースのサイズが大きいほど、この操作にかかる時間が長くなります。 このプロセスはバックグラウンド プロセスであり、システムの IO や CPU を過負荷にしないように、低優先度で実行されます。

TDE によって使用される証明書が作成されたら、手動でバックアップして安全な場所に保存する必要があります。 SQL Server は、暗号化キーを管理するためにエンタープライズ キー マネージャー (EKM) と統合されています。 EKM の例として、Azure Key Vault があります。 証明書が失われると、データベースをバックアップから復元する必要がある場合に、データベースを読み取れず復元に失敗するため、証明書の管理は重要です。 TDE を Always On 可用性グループのデータベースと共に使用するには、データベースの暗号化に使用された証明書を、データベースのコピーをホストする可用性グループ内の他のサーバーにバックアップおよび復元する必要があります。

MySQL および PostgreSQL の保存時の暗号化

Azure SQL Database for MySQL と Azure SQL Database for PostgreSQL には、TDE のようなプロセスがありません。 ただし、それらが実行されている Azure 環境では、ディスクの暗号化方法がサポートされています。 このプロセスにより、ディスクに格納されているデータベースが暗号化されるので、データベースをホストしているディスクのセキュリティが侵害された場合は、そこにあるデータを読み取れなくなります。 このサービスにより、Azure SQL Database 内の TDE とよく似た Bring Your Own Key サービスが提供されます。 このサービスを使用すると、独自の証明書をアップロードし、この証明書を暗号化に使用することができます。

Azure Disk Encryption

Azure VM には、これらの SQL Server セキュリティ機能に加えて、セキュリティの追加レイヤー、Azure Disk Encryption が含まれています。これは、データを保護および保全し、組織やコンプライアンスのコミットメントを満たすのに役立ちます。 TDE を使用している場合、データは複数の暗号化レイヤーによって保護されます。 Azure Disk Encryption と SQL Server データベース ファイルおよびバックアップの暗号化。