SQL Server とデータベースの暗号化キー (データベース エンジン)

適用対象:SQL Server

SQL Server では、暗号化キーを使用して、サーバーのデータベースに格納されているデータ、資格情報、接続情報がセキュリティ保護されます。 SQL Server には、対称非対称の 2 種類のキーがあります。 対称キーでは、データの暗号化と暗号化解除に同じパスワードが使用されます。 非対称キーでは、データを暗号化するパスワード ( 公開 キー) とデータの暗号化を解除するパスワード ( 秘密 キー) が使い分けられます。

SQL Server の暗号化キーでは、公開キー、秘密キー、対称キーを組み合わせて機密データの保護に使用します。 対称キーは、SQL Server インスタンスを最初に起動するときの SQL Server 初期化時に作成されます。 SQL Server は、このキーを使用して SQL Server に格納されている機密データを暗号化します。 公開キーと秘密キーはオペレーティング システムによって作成され、これらのキーを使用して対称キーが保護されます。 公開キーと秘密キーのペアは、データベースに機密データを格納する SQL Server インスタンスごとに作成されます。

SQL Server およびデータベース キーの用途

SQL Server では、キーに 2 つの主要な用途があります。1 つは SQL Server インスタンス上で生成され、使用されるサービス マスター キー (SMK)、もう 1 つはデータベースに使用されるデータベース マスター キー (DMK) です。

サービス マスター キー

サービス マスター キーは、SQL Server 暗号化階層のルートになります。 SMK は、SQL Server インスタンスの初回起動時に自動的に生成され、それぞれのデータベースにおいて、リンク サーバーのパスワード、資格情報、およびデータベース マスター キーの暗号化に使用されます。 SMK は、Windows データ保護 API (DPAPI) を使用するローカル コンピューター キーを使用して暗号化されます。 DPAPI では、 SQL Server サービス アカウントの Windows 資格情報およびコンピューターの資格情報から派生するキーが使用されます。 サービス マスター キーの暗号化を解除できるのは、作成元のサービス アカウント、またはコンピューターの資格情報にアクセスできるプリンシパルに限られています。

サービス マスター キーを作成した Windows サービス アカウント、またはサービス アカウント名とサービス アカウントのパスワードの両方にアクセスできるプリンシパルだけが、サービス マスター キーを開くことができます。

SQL Server は AES 暗号化アルゴリズムを使用してサービス マスター キー (SMK) とデータベース マスター キー (DMK) を保護します。 AES は、以前のバージョンで使用されていた 3DES よりも新しい暗号化アルゴリズムです。 データベース エンジン のインスタンスを SQL Server にアップグレードした後には、マスター キーを AES にアップグレードするために SMK と DMK を再生成する必要があります。 SMK の再生成の詳細については、「ALTER SERVICE MASTER KEY (Transact-SQL)」および「ALTER MASTER KEY (Transact-SQL)」を参照してください。

データベース マスター キー

データベース マスター キーは対称キーで、証明書の秘密キーやデータベース内にある非対称キーを保護するときに使用されます。 このキーはデータの暗号化にも使用できますが、長さに制限があるため、対称キーに比べるとデータに対する実用性は低くなります。 データベース マスター キーの暗号化を自動的に解除できるように、SMK を使用してこのキーのコピーが暗号化されます。 暗号化されたコピーは、使用先のデータベースおよび マスター システム データベースの両方に格納されます。

マスター システム データベースに格納された DMK のコピーは、DMK が変更されるたびに自動的に更新されます。 ただし、この既定の設定は、 ALTER MASTER KEY ステートメントの DROP ENCRYPTION BY SERVICE MASTER KEY オプションを使用して変更できます。 サービス マスター キーによって暗号化されていない DMK は、 OPEN MASTER KEY ステートメントとパスワードを使用して開かれている必要があります。

SQL Server およびデータベースのキーの管理

暗号化キーの管理は、新しいデータベース キーの作成、サーバーおよびデータベースのキーのバックアップ作成、およびキーの復元、削除、変更のタイミングと方法を把握することによって行われます。

対称キーを管理するには、SQL Server 付属のツールを使用して以下の作業を行います。

  • サーバーを復旧させるため、または計画的な移行の一環として使用できるように、サーバーおよびデータベースのキーのコピーをバックアップします。

  • 以前に保存したキーをデータベースに復元します。 これにより、新しいサーバー インスタンスは、そのインスタンスで暗号化していない既存のデータにアクセスできるようになります。

  • 暗号化されたデータにアクセスできなくなった場合は、データベース内の暗号化されたデータを削除します。

  • キーに障害が起きた場合は、そのキーを再作成し、データを再暗号化します。 セキュリティを高めるには、キーを定期的 (たとえば数か月ごと) に再作成して、キーを解読しようとする攻撃からサーバーを保護する必要があります。

  • 複数のサーバーが 1 つのデータベースとそのデータベースの暗号化を解除するキーの両方を共有する場合は、サーバー スケールアウト配置に対してサーバー インスタンスを追加または削除します。

重要なセキュリティ情報

サービス マスター キーで保護されているオブジェクトにアクセスするには、そのキーの作成に使用されたSQL Server サービス アカウント、またはコンピューター アカウントのいずれかが必要です。 つまり、キーが作成されたシステムに関連付けられているコンピューター アカウントです。 SQL Server サービス アカウント または コンピューター アカウントを変更しても、キーにアクセスできなくなることはありません。 ただし、両方を変更するとサービス マスター キーにはアクセスできなくなります。 この 2 つのアカウントが一方しかない状態でサービス マスター キーにアクセスできなくなると、元のキーで暗号化されたデータとオブジェクトは暗号化解除できなくなります。

サービス マスター キーで保護されている接続は、サービス マスター キーがないと復元できません。

データベース マスター キーで保護されたオブジェクトとデータにアクセスする場合は、そのキーを保護する際に使用されたパスワードのみが必要です。

注意

上記のキーすべてにアクセスできなくなると、それらのキーで保護されているオブジェクト、接続、およびデータにもアクセスできなくなります。 ここで示したリンクの説明に従ってサービス マスター キーを復元するか、または元の暗号化システムに戻ってアクセスを復旧します。 アクセスを復旧するための "抜け道" はありません。

このセクションの内容

サービス マスター キー
サービス マスター キーとその推奨事項について簡単に説明します。

拡張キー管理 (EKM)
SQL Serverでサード パーティのキー管理システムを使用する方法について説明します。

サービス マスター キーのバックアップ

サービス マスター キーの復元

データベース マスター キーの作成

データベース マスター キーのバックアップ

データベース マスター キーの復元

2 台のサーバーでの同じ対称キーの作成

EKM の使用による TDE の有効化

Azure Key Vault を使用する拡張キー管理 (SQL Server)

データの列の暗号化

CREATE MASTER KEY (Transact-SQL)

ALTER SERVICE MASTER KEY (Transact-SQL)

データベース マスター キーの復元

参照

Reporting Services の暗号化キーのバックアップと復元
暗号化キーの削除と再作成 (SSRS 構成マネージャー)
スケールアウト配置に関する暗号化キーの追加と削除 (SSRS 構成マネージャー)
透過的なデータ暗号化 (TDE)