データベース内の回復データを暗号化する

Configuration Manager (現在のブランチ) に適用

BitLocker 管理ポリシーを作成すると、Configuration Manager によって回復サービスが管理ポイントに展開されます。 BitLocker 管理ポリシーの [クライアント管理] ページで、 BitLocker 管理サービスを構成すると、クライアントはキー回復情報をサイト データベースにバックアップします。 この情報には、BitLocker 回復キー、回復パッケージ、TPM パスワード ハッシュが含まれます。 ユーザーが保護されたデバイスからロックアウトされている場合は、この情報を使用してデバイスへのアクセスを回復するのに役立ちます。

この情報は機密性が高いため、保護する必要があります。 Configuration Manager では、ネットワーク内で転送されるデータを暗号化するために、クライアントと回復サービスとの間に HTTPS 接続が必要です。 詳細については、「 ネットワーク経由での回復データの暗号化」を参照してください。

また、サイト データベースに格納されている場合は、このデータを暗号化することも検討してください。 SQL Server 証明書をインストールすると、Configuration Manager によって SQL 内のデータが暗号化されます。

BitLocker 管理暗号化証明書を作成しない場合は、回復データのプレーン テキスト ストレージにオプトインします。 BitLocker 管理ポリシーを作成するときは、[ 回復情報をプレーン テキストで保存できるようにする] オプションを有効にします。

注:

もう 1 つのセキュリティ層は、サイト データベース全体を暗号化することです。 データベースで暗号化を有効にした場合、Configuration Manager に機能的な問題はありません。

特に大規模な環境では、慎重に暗号化してください。 暗号化するテーブルと SQL のバージョンによっては、最大 25% のパフォーマンス低下が発生する可能性があります。 バックアップと復旧の計画を更新して、暗号化されたデータを正常に復旧できるようにします。

注:

クライアントが非アクティブまたは削除された場合でも、Configuration Manager がデータベースからデバイスの回復情報を削除したりすることはありません。 この動作はセキュリティ上の理由によるものです。 デバイスが盗まれたが後で回収されるシナリオに役立ちます。 大規模な環境の場合、データベース サイズへの影響は、暗号化されたボリュームあたり約 9 KB のデータです。

SQL Server 暗号化証明書

Configuration Manager 用のこの SQL Server 証明書を使用して、サイト データベース内の BitLocker 回復データを暗号化します。 SQL Serverのスクリプトを使用して自己署名証明書を作成できます。

または、次の要件を満たしている限り、独自のプロセスを使用してこの証明書を作成および展開できます。

  • BitLocker 管理暗号化証明書の名前が BitLockerManagement_CERT である必要があります。

  • データベース マスター キーを使用して、この証明書を暗号化します。

  • 次の SQL Server ユーザーには、証明書に対するコントロールのアクセス許可が必要です。

    • RecoveryAndHardwareCore
    • RecoveryAndHardwareRead
    • RecoveryAndHardwareWrite
  • 階層内のすべてのサイト データベースに同じ証明書を展開します。

  • 最新バージョンの SQL Server を使用して証明書を作成します。

    重要

    • SQL Server 2016 以前で作成された証明書は、SQL Server 2014 以前と互換性があります。
    • SQL Server 2014 以前で作成された証明書は、SQL Server 2016 以降と互換性がありません。

SQL Server アップグレード時に暗号化証明書を管理する

サイト データベースが SQL Server 2014 以前にある場合は、SQL Server をバージョン 2016 以降にアップグレードする前に、次の手順に従って証明書をサポートされているバージョンにローテーションしてください。

  1. 利用可能な最新バージョン (バージョン 2016 以上) を実行している SQL Server のインスタンスでは、次の手順を実行します。

    1. 新しい証明書を作成する

    2. 新しい証明書をバックアップする

  2. アップグレードする予定の暗号化されたサイト データベースを含む SQL Server インスタンスで、次の点を実行します。

    1. サイト データベース サーバーの SQL Server インスタンス上の既存の証明書を別の名前に移動します。

    2. 新しい証明書を復元します

    3. 既存の証明書に対して新しい証明書をローテーションします。 指定された SQL 関数を使用する [RecoveryAndHardwareCore].[RecryptKey]

重要

証明書をローテーションする前に SQL Server をアップグレードする場合は、回避策について Microsoft サポートにお問い合わせください。

ビジネス要件で証明書を定期的に更新する必要がある場合にも、このプロセスを使用できます。

スクリプト例

これらの SQL スクリプトは、Configuration Manager サイト データベースで BitLocker 管理暗号化証明書を作成して展開する例です。

証明書を作成する

このサンプル スクリプトでは、次の操作が実行されます。

  • 証明書を作成します
  • アクセス許可を設定します
  • データベース マスター キーを作成します

このスクリプトを実稼働環境で使用する前に、次の値を変更してください:

  • サイト データベース名 (CM_ABC)
  • マスター キーを作成するためのパスワード (MyMasterKeyPassword)
  • 証明書の有効期限 (20391022)
USE CM_ABC
IF NOT EXISTS (SELECT name FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##')
BEGIN
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyMasterKeyPassword'
END

IF NOT EXISTS (SELECT name from sys.certificates WHERE name = 'BitLockerManagement_CERT')
BEGIN
    CREATE CERTIFICATE BitLockerManagement_CERT AUTHORIZATION RecoveryAndHardwareCore
    WITH SUBJECT = 'BitLocker Management',
    EXPIRY_DATE = '20391022'

    GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareRead
    GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareWrite
END

注:

SQL は、ここでのように、証明書がデータベースの暗号化に使用されるときに証明書の有効期限をチェックまたは適用しません。

ビジネス要件でこの証明書を定期的に更新する必要がある場合は、同じプロセスを使用して、SQL Server のアップグレード時に暗号化証明書を管理します。

証明書のバックアップ

このサンプル スクリプトでは、証明書をバックアップします。 証明書をファイルに保存すると、階層内の他のサイト データベースに 復元 できます。

このスクリプトを実稼働環境で使用する前に、次の値を変更してください:

  • サイト データベース名 (CM_ABC)
  • ファイル パスと名前 (C:\BitLockerManagement_CERT_KEY)
  • キー パスワードのエクスポート (MyExportKeyPassword)
USE CM_ABC
BACKUP CERTIFICATE BitLockerManagement_CERT TO FILE = 'C:\BitLockerManagement_CERT'
    WITH PRIVATE KEY ( FILE = 'C:\BitLockerManagement_CERT_KEY',
        ENCRYPTION BY PASSWORD = 'MyExportKeyPassword')

重要

証明書を必ずバックアップしてください。 サイト データベースを回復する必要がある場合は、証明書を復元して回復キーへのアクセスを回復する必要がある場合があります。

エクスポートした証明書ファイルと関連付けられているパスワードは、安全な場所に保存します。

証明書の復元

このサンプル スクリプトは、ファイルから証明書を復元します。 このプロセスを使用して、別のサイト データベースに作成した証明書を展開します。

このスクリプトを実稼働環境で使用する前に、次の値を変更してください:

  • サイト データベース名 (CM_ABC)
  • マスター キー パスワード (MyMasterKeyPassword)
  • ファイル パスと名前 (C:\BitLockerManagement_CERT_KEY)
  • キー パスワードのエクスポート (MyExportKeyPassword)
USE CM_ABC
IF NOT EXISTS (SELECT name FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##')
BEGIN
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyMasterKeyPassword'
END

IF NOT EXISTS (SELECT name from sys.certificates WHERE name = 'BitLockerManagement_CERT')
BEGIN

CREATE CERTIFICATE BitLockerManagement_CERT AUTHORIZATION RecoveryAndHardwareCore
FROM FILE  = 'C:\BitLockerManagement_CERT'
    WITH PRIVATE KEY ( FILE = 'C:\BitLockerManagement_CERT_KEY',
        DECRYPTION BY PASSWORD = 'MyExportKeyPassword')

GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareRead
GRANT CONTROL ON CERTIFICATE ::BitLockerManagement_CERT TO RecoveryAndHardwareWrite
END

証明書の確認

この SQL スクリプトを使用して、SQL Server が必要なアクセス許可を持つ証明書が正常に作成されたことを確認します。

USE CM_ABC
declare @count int
select @count = count(distinct u.name) from sys.database_principals u
join sys.database_permissions p on p.grantee_principal_id = u.principal_id or p.grantor_principal_id = u.principal_id
join sys.certificates c on c.certificate_id = p.major_id
where u.name in('RecoveryAndHardwareCore', 'RecoveryAndHardwareRead', 'RecoveryAndHardwareWrite') and
c.name = 'BitLockerManagement_CERT' and p.permission_name like 'CONTROL'
if(@count >= 3) select 1
else select 0

証明書が有効な場合、スクリプトは値 1 を返します。

データベースで BitLocker 回復データが暗号化されている場合、SQL AlwaysOn

SQL AlwaysOn を使用している場合、その他の重要および必要な手順と手順については、「 BitLocker 回復データがデータベースで暗号化されている場合の SQL AlwaysOn 」を参照してください。

これらの SQL コマンドの詳細については、次の記事を参照してください。

次の手順