SQL Server とデータベースの暗号化キー (データベース エンジン)SQL Server and Database Encryption Keys (Database Engine)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) 適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions)

SQL ServerSQL Server では、暗号化キーを使用して、サーバー データベースに格納されているデータ、資格情報、および接続情報のセキュリティを保護します。uses encryption keys to help secure data, credentials, and connection information that is stored in a server database. SQL ServerSQL Server には、 対称非対称の 2 種類のキーがあります。has two kinds of keys: symmetric and asymmetric. 対称キーでは、データの暗号化と暗号化解除に同じパスワードが使用されます。Symmetric keys use the same password to encrypt and decrypt data. 非対称キーでは、データを暗号化するパスワード ( 公開 キー) とデータの暗号化を解除するパスワード ( 秘密 キー) が使い分けられます。Asymmetric keys use one password to encrypt data (called the public key) and another to decrypt data (called the private key).

SQL ServerSQL Serverの暗号化キーでは、公開キー、秘密キー、対称キーを組み合わせて機密データの保護に使用します。In SQL ServerSQL Server, encryption keys include a combination of public, private, and symmetric keys that are used to protect sensitive data. 対称キーは、 SQL ServerSQL Server インスタンスを最初に起動するときの SQL ServerSQL Server 初期化時に作成されます。The symmetric key is created during SQL ServerSQL Server initialization when you first start the SQL ServerSQL Server instance. SQL ServerSQL Server は、このキーを使用して SQL ServerSQL Serverに格納されている機密データを暗号化します。The key is used by SQL ServerSQL Server to encrypt sensitive data that is stored in SQL ServerSQL Server. 公開キーと秘密キーはオペレーティング システムによって作成され、これらのキーを使用して対称キーが保護されます。Public and private keys are created by the operating system and they are used to protect the symmetric key. 公開キーと秘密キーのペアは、データベースに機密データを格納する SQL ServerSQL Server インスタンスごとに作成されます。A public and private key pair is created for each SQL ServerSQL Server instance that stores sensitive data in a database.

SQL Server およびデータベース キーの用途Applications for SQL Server and Database Keys

SQL ServerSQL Server では、キーに 2 つの主要な用途があります。1 つは インスタンスに対して生成される サービス マスター キー SQL ServerSQL Server (SMK)、もう 1 つはデータベースに使用される データベース マスター キー (DMK) です。has two primary applications for keys: a service master key (SMK) generated on and for a SQL ServerSQL Server instance, and a database master key (DMK) used for a database.

サービス マスター キーService master key

サービス マスター キーは、SQL Server 暗号化階層のルートになります。The Service Master Key is the root of the SQL Server encryption hierarchy. SMK は、SQL ServerSQL Server インスタンスの初回起動時に自動的に生成され、リンク サーバーのパスワード、資格情報、およびデータベース マスター キーの暗号化に使用されます。The SMK is automatically generated the first time the SQL ServerSQL Server instance is started and is used to encrypt a linked server password, credentials, and the database master key in each database. SMK は、Windows データ保護 API (DPAPI) を使用するローカル コンピューター キーを使用して暗号化されます。The SMK is encrypted by using the local machine key using the Windows Data Protection API (DPAPI). DPAPI では、 SQL ServerSQL Server サービス アカウントの Windows 資格情報およびコンピューターの資格情報から派生するキーが使用されます。The DPAPI uses a key that is derived from the Windows credentials of the SQL ServerSQL Server service account and the computer's credentials. サービス マスター キーの暗号化を解除できるのは、作成元のサービス アカウント、またはコンピューターの資格情報にアクセスできるプリンシパルに限られています。The service master key can only be decrypted by the service account under which it was created or by a principal that has access to the machine's credentials.

サービス マスター キーを作成した Windows サービス アカウント、またはサービス アカウント名とサービス アカウントのパスワードの両方にアクセスできるプリンシパルだけが、サービス マスター キーを開くことができます。The Service Master Key can only be opened by the Windows service account under which it was created or by a principal with access to both the service account name and its password.

SQL Server 2019 (15.x)SQL Server 2019 (15.x) AES 暗号化アルゴリズムを使用してサービス マスター キー (SMK) とデータベース マスター キー (DMK) を保護します。uses the AES encryption algorithm to protect the service master key (SMK) and the database master key (DMK). AES は、以前のバージョンで使用されていた 3DES よりも新しい暗号化アルゴリズムです。AES is a newer encryption algorithm than 3DES used in earlier versions. データベース エンジンDatabase Engine のインスタンスを SQL Server 2019 (15.x)SQL Server 2019 (15.x) にアップグレードした後で、マスター キーを AES にアップグレードするために SMK と DMK を再度生成する必要があります。After upgrading an instance of the データベース エンジンDatabase Engine to SQL Server 2019 (15.x)SQL Server 2019 (15.x) the SMK and DMK should be regenerated in order to upgrade the master keys to AES. SMK の再作成の詳細については、「ALTER SERVICE MASTER KEY (Transact-SQL)」および「ALTER MASTER KEY (Transact-SQL)」を参照してください。For more information about regenerating the SMK, see ALTER SERVICE MASTER KEY (Transact-SQL) and ALTER MASTER KEY (Transact-SQL).

データベース マスター キーDatabase master key

データベース マスター キーは対称キーで、証明書の秘密キーやデータベース内にある非対称キーを保護するときに使用されます。The database master key is a symmetric key that is used to protect the private keys of certificates and asymmetric keys that are present in the database. このキーはデータの暗号化にも使用できますが、長さに制限があるため、対称キーに比べるとデータに対する実用性は低くなります。It can also be used to encrypt data, but it has length limitations that make it less practical for data than using a symmetric key. データベース マスター キーの暗号化を自動的に解除できるように、SMK を使用してこのキーのコピーが暗号化されます。To enable the automatic decryption of the database master key, a copy of the key is encrypted by using the SMK. 暗号化されたコピーは、使用先のデータベースおよび マスター システム データベースの両方に格納されます。It is stored in both the database where it is used and in the master system database.

マスター システム データベースに格納された DMK のコピーは、DMK が変更されるたびに自動的に更新されます。The copy of the DMK stored in the master system database is silently updated whenever the DMK is changed. ただし、この既定の設定は、 ALTER MASTER KEY ステートメントの DROP ENCRYPTION BY SERVICE MASTER KEY オプションを使用して変更できます。However, this default can be changed by using the DROP ENCRYPTION BY SERVICE MASTER KEY option of the ALTER MASTER KEY statement. サービス マスター キーによって暗号化されていない DMK は、 OPEN MASTER KEY ステートメントとパスワードを使用して開かれている必要があります。A DMK that is not encrypted by the service master key must be opened by using the OPEN MASTER KEY statement and a password.

SQL Server およびデータベースのキーの管理Managing SQL Server and Database Keys

暗号化キーの管理は、新しいデータベース キーの作成、サーバーおよびデータベースのキーのバックアップ作成、およびキーの復元、削除、変更のタイミングと方法を把握することによって行われます。Managing encryption keys consists of creating new database keys, creating a backup of the server and database keys, and knowing when and how to restore, delete, or change the keys.

対称キーを管理するには、 SQL ServerSQL Server 付属のツールを使用して以下の作業を行います。To manage symmetric keys, you can use the tools included in SQL ServerSQL Server to do the following:

  • サーバーを復旧させるため、または計画的な移行の一環として使用できるように、サーバーおよびデータベースのキーのコピーをバックアップします。Back up a copy of the server and database keys so that you can use them to recover a server installation, or as part of a planned migration.

  • 以前に保存したキーをデータベースに復元します。Restore a previously saved key to a database. これにより、新しいサーバー インスタンスは、そのインスタンスで暗号化していない既存のデータにアクセスできるようになります。This enables a new server instance to access existing data that it did not originally encrypt.

  • 暗号化されたデータにアクセスできなくなった場合は、データベース内の暗号化されたデータを削除します。Delete the encrypted data in a database in the unlikely event that you can no longer access encrypted data.

  • キーに障害が起きた場合は、そのキーを再作成し、データを再暗号化します。Re-create keys and re-encrypt data in the unlikely event that the key is compromised. セキュリティを高めるには、キーを定期的 (たとえば数か月ごと) に再作成して、キーを解読しようとする攻撃からサーバーを保護する必要があります。As a security best practice, you should re-create the keys periodically (for example, every few months) to protect the server from attacks that try to decipher the keys.

  • 複数のサーバーが 1 つのデータベースとそのデータベースの暗号化を解除するキーの両方を共有する場合は、サーバー スケールアウト配置に対してサーバー インスタンスを追加または削除します。Add or remove a server instance from a server scale-out deployment where multiple servers share both a single database and the key that provides reversible encryption for that database.

重要なセキュリティ情報Important Security Information

サービス マスター キーで保護されているオブジェクトにアクセスするには、そのキーの作成に使用された SQL ServerSQL Server サービス アカウント、またはコンピューター アカウントのいずれかが必要です。Accessing objects secured by the service master key requires either the SQL ServerSQL Server Service account that was used to create the key or the computer (machine) account. つまり、コンピューターはキーが作成されたシステムに関連付けられています。That is, the computer is tied to the system where the key was created. SQL ServerSQL Server サービス アカウント または コンピューター アカウントを変更しても、キーにアクセスできなくなることはありません。You can change the SQL ServerSQL Server Service account or the computer account without losing access to the key. ただし、両方を変更するとサービス マスター キーにはアクセスできなくなります。However, if you change both, you will lose access to the service master key. この 2 つのアカウントが一方しかない状態でサービス マスター キーにアクセスできなくなると、元のキーで暗号化されたデータとオブジェクトは暗号化解除できなくなります。If you lose access to the service master key without one of these two elements, you be unable to decrypt data and objects encrypted by using the original key.

サービス マスター キーで保護されている接続は、サービス マスター キーがないと復元できません。Connections secured with the service master key cannot be restored without the service master key.

データベース マスター キーで保護されたオブジェクトとデータにアクセスする場合は、そのキーを保護する際に使用されたパスワードのみが必要です。Access to objects and data secured with the database master key require only the password that is used to help secure the key.

注意事項

上記のキーすべてにアクセスできなくなると、それらのキーで保護されているオブジェクト、接続、およびデータにもアクセスできなくなります。If you lose all access to the keys described earlier, you will lose access to the objects, connections, and data secured by those keys. ここで示したリンクの説明に従ってサービス マスター キーを復元するか、または元の暗号化システムに戻ってアクセスを復旧します。You can restore the service master key, as described in the links that are shown here, or you can go back to the original encrypting system to recover the access. アクセスを復旧するための "抜け道" はありません。There is no "back-door" to recover the access.

このセクションの内容In This Section

サービス マスター キーService Master Key
サービス マスター キーとその推奨事項について簡単に説明します。Provides a brief explanation for the service master key and its best practices.

拡張キー管理 (EKM)Extensible Key Management (EKM)
SQL ServerSQL Serverでサード パーティのキー管理システムを使用する方法について説明します。Explains how to use third-party key management systems with SQL ServerSQL Server.

サービス マスター キーのバックアップBack Up the Service Master Key

サービス マスター キーの復元Restore the Service Master Key

データベース マスター キーの作成Create a Database Master Key

データベース マスター キーのバックアップBack Up a Database Master Key

データベース マスター キーの復元Restore a Database Master Key

2 台のサーバーでの同じ対称キーの作成Create Identical Symmetric Keys on Two Servers

EKM の使用による TDE の有効化Enable TDE on SQL Server Using EKM

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

データの列の暗号化Encrypt a Column of Data

CREATE MASTER KEY (Transact-SQL)CREATE MASTER KEY (Transact-SQL)

ALTER SERVICE MASTER KEY (Transact-SQL)ALTER SERVICE MASTER KEY (Transact-SQL)

データベース マスター キーの復元Restore a Database Master Key

参照See Also

Reporting Services の暗号化キーのバックアップと復元 Back Up and Restore Reporting Services Encryption Keys
暗号化キーの削除と再作成 (SSRS 構成マネージャー) Delete and Re-create Encryption Keys (SSRS Configuration Manager)
スケールアウト配置に関する暗号化キーの追加と削除 (SSRS 構成マネージャー) Add and Remove Encryption Keys for Scale-Out Deployment (SSRS Configuration Manager)
透過的なデータ暗号化 (TDE)Transparent Data Encryption (TDE)