データベース内の回復データを暗号化する
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暗号化証明書
サイト データベース内の BitLocker 回復データを暗号化するには、このSQL Server証明書を使用してConfiguration Managerします。 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管理する
サイト データベースが 2014 以前SQL Serverにある場合は、SQL Serverをバージョン 2016 以降にアップグレードする前に、次の手順に従って証明書をサポートされているバージョンにローテーションします。
使用可能な最新バージョン (少なくともバージョン 2016) を実行しているSQL Serverのインスタンスでは、次の手順を実行します。
アップグレードする予定の暗号化されたサイト データベースを持つSQL Server インスタンスで、次の操作を行います。
サイト データベース サーバー上の既存の証明書SQL Serverインスタンスを別の名前に移動します。
既存の証明書の で新しい証明書をローテーションします。 指定された 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 Serverによってチェックまたは適用されません。この場合も同様です。
ビジネス要件でこの証明書を定期的に更新することを指定している場合は、同じプロセスを使用して、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
値を返します。
関連項目
これらの SQL コマンドの詳細については、次の記事を参照してください。