メインコンテンツまでスキップ

アンインストール

適用対象:
SQL Server 2016+管理者権限が必要バックアップが必要

アンインストールが必要になる場合​

次のような場合に EKM プロバイダーのアンインストールが必要になることがあります。

トラブルシューティング

インストールまたは構成の問題を解決する

アップグレード

新しいバージョンのプロバイダーをインストールする

廃止

サーバーから SQL EKM を削除する

移行

別の暗号化ソリューションに移行する

警告

暗号化されたデータベースがある場合、先に復号するかキー構成を維持しない限り、EKM プロバイダーを削除するとそれらのデータベースにアクセスできなくなります。先に復号するか、プロバイダー、資格情報、マスターキーをそのまま残してください。

前提条件

  • すべての暗号化されたデータベースをバックアップする
  • 現在の構成(資格情報、キーなど)を文書化する
  • サーバーの管理者権限
  • アクティブな暗号化データベースがないことを確認する(または再暗号化を計画する)

アンインストール前の手順​

暗号化されたデータベースのインベントリ​

まず、TDE で保護されているすべてのデータベースを特定します。

暗号化されたデータベースを見つけるSQL
SELECT
  d.name AS DatabaseName,
  d.is_encrypted,
  dek.encryption_state,
  dek.encryptor_type
FROM sys.databases d
LEFT JOIN sys.dm_database_encryption_keys dek
  ON d.database_id = dek.database_id
WHERE d.is_encrypted = 1;
GO

構成の文書化​

アンインストールする前に、現在のプロバイダー、キー、資格情報の詳細を記録します。

現在の構成を文書化するSQL
-- Document cryptographic providers
SELECT
  name AS ProviderName,
  guid,
  is_enabled,
  dll_path
FROM sys.cryptographic_providers;
GO

-- Document asymmetric keys and the provider they are bound to
USE master;
SELECT
  ak.name AS KeyName,
  ak.algorithm_desc,
  ak.thumbprint,
  cp.name AS ProviderName
FROM sys.asymmetric_keys ak
LEFT JOIN sys.cryptographic_providers cp
  ON ak.cryptographic_provider_guid = cp.guid;
GO

-- Document credentials
SELECT
  name AS CredentialName,
  credential_identity
FROM sys.credentials
WHERE name LIKE '%Dke%' OR name LIKE '%EKM%';
GO

データベースのバックアップ​

重要

アンインストールを進める前に、必ずすべての暗号化されたデータベースをバックアップしてください。

暗号化されたデータベースをバックアップするSQL
BACKUP DATABASE <DatabaseName>
TO DISK = 'C:\Backups\<DatabaseName>_PreUninstall.bak'
WITH COMPRESSION, CHECKSUM;
GO

SQL Server のクリーンアップ​

SQL Server オブジェクトを次の順序で削除します。資格情報マッピング、次にログイン、次に資格情報、次に非対称キー、最後にプロバイダーです。キーまたは資格情報がまだ参照している間は、プロバイダーを削除できません。

警告

いずれかのデータベースがまだ暗号化されている場合は、先に復号してください(アンインストール前に復号するを参照)。データベースが暗号化されている間にマスターキーまたはプロバイダーを削除すると、そのデータベースは復元不能になります。

1

資格情報マッピングを削除する

資格情報がマッピングされているすべてのログインから、その資格情報を削除します。

資格情報マッピングを一覧表示して削除するSQL
-- List logins with the EKM credential mapped
SELECT
  l.name AS LoginName,
  c.name AS CredentialName
FROM sys.server_principals l
INNER JOIN sys.credentials c
  ON l.credential_id = c.credential_id
WHERE c.name LIKE '%Dke%';
GO

-- Drop the mappings
ALTER LOGIN [sa]
DROP CREDENTIAL DkeEkmCredential;
GO

ALTER LOGIN [TDE_Master_Login]
DROP CREDENTIAL DkeEkmCredential;
GO
2

キーログインを削除する

非対称キーに裏付けられたログインを削除するSQL
DROP LOGIN TDE_Master_Login;
GO
3

資格情報を削除する

資格情報を削除するSQL
DROP CREDENTIAL DkeEkmCredential;
GO
ヒント

資格情報の削除に失敗する場合は、手順 1 のすべてのログインマッピングが先に削除されていることを確認してください。

4

非対称キーを削除する

非対称キーを削除するSQL
USE master;
DROP ASYMMETRIC KEY TDE_Master;
GO
注意

これは SQL Server 側のキーへの参照のみを削除します。キー自体は DuoKey 内に残り、後で OPEN_EXISTING で再度開くことができます。

5

暗号プロバイダーを削除する

プロバイダーを削除するSQL
DROP CRYPTOGRAPHIC PROVIDER DkeEkm;
GO
注意

非対称キーまたは資格情報からまだ参照されている間は、暗号プロバイダーを削除できません。先に手順 1 から 4 を完了してください。

プロバイダーファイルの削除​

SQL オブジェクトがなくなったら、ホストから配置したファイルを削除します。

1

SQL Server を停止する(必要な場合)

プロバイダーライブラリは SQL Server により読み込まれています。ファイルがロックされている場合は、削除する前にサービスを停止してください。

SQL Server サービスを停止するPOWERSHELL
Stop-Service MSSQLSERVER
2

プロバイダーライブラリを削除する

プロバイダーフォルダーを削除するPOWERSHELL
Remove-Item "C:\Program Files\DKE\EKM\dke_ekm_provider.dll" -Force
# Optionally remove the folder if now empty
Remove-Item "C:\Program Files\DKE\EKM" -Recurse -Force
3

構成ファイルとランタイムファイルを削除する

config.toml、keystore.json、dke-ekm.log を保持する ProgramData フォルダーを削除します。

ProgramData フォルダーを削除するPOWERSHELL
Remove-Item "C:\ProgramData\DKE\EKM" -Recurse -Force
注意

データベースを暗号化したまま保持しますか? keystore.json を削除しないでください。プロバイダーは、再起動後に TDE で保護されたデータベースを再度開くためにこれを必要とします。

4

SQL Server を再起動する

SQL Server サービスを開始するPOWERSHELL
Start-Service MSSQLSERVER

アンインストール後の検証​

ファイル削除の確認​

削除を確認するファイル

dke_ekm_provider.dllC:\Program Files\DKE\EKM
config.tomlC:\ProgramData\DKE\EKM
keystore.jsonC:\ProgramData\DKE\EKM
dke-ekm.logC:\ProgramData\DKE\EKM
オプションのレジストリキー

詳細設定用にオプションの HKLM\SOFTWARE\DKE\EKM キーが作成されていた場合は、それも削除できます。標準インストールではレジストリエントリは作成されません。

SQL Server の状態の確認​

プロバイダーが削除されたことを確認するSQL
-- Should return no rows
SELECT name, guid, is_enabled
FROM sys.cryptographic_providers
WHERE name = 'DkeEkm';
GO

暗号化されたデータベースの取り扱い​

オプション 1: データベースを暗号化したまま保持する​

再インストールまたは暗号化の維持を計画している場合:

バックアップを保持する

暗号化されたデータベースのバックアップを維持する

キーストアを保持する

キーを再度開けるよう config.toml と keystore.json を保持する

再インストールを計画する

準備ができたらプロバイダーを再配置してマスターキーを再度開く

オプション 2: アンインストール前に復号する​

暗号化を完全に削除したい場合は、SQL オブジェクトを削除したりファイルを削除したりする前に、すべてのデータベースを復号してください。

TDE を無効にして復号するSQL
-- Disable TDE
ALTER DATABASE <DatabaseName>
SET ENCRYPTION OFF;
GO

-- Monitor decryption progress
SELECT
  DB_NAME(database_id) AS DatabaseName,
  encryption_state,
  percent_complete
FROM sys.dm_database_encryption_keys;
GO

-- Wait until encryption_state = 1 (Unencrypted)

-- Drop the Database Encryption Key
USE <DatabaseName>;
DROP DATABASE ENCRYPTION KEY;
GO

-- Verify decryption
SELECT
  name,
  is_encrypted
FROM sys.databases
WHERE name = '<DatabaseName>';
GO

トラブルシューティング​

緊急アンインストール​

警告

緊急アンインストールは、暗号化されたデータベースにアクセスできなくなる可能性があります。適切なバックアップがある重大な状況でのみ使用してください。

SQL オブジェクトの強制削除SQL
-- Force remove references, then the provider
USE master;
DROP ASYMMETRIC KEY TDE_Master;
GO

DROP CREDENTIAL DkeEkmCredential;
GO

DROP CRYPTOGRAPHIC PROVIDER DkeEkm;
GO

その後、上記の説明に従ってプロバイダーファイルを削除します。

次のステップ​