xDB Collection databaseのSQL Always Encryptedの構成

Version: 10.1
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

適用対象

xDB Collection database (SQL) のみ。

Sitecoreインストールフレームワーク

Always Encryptedは既定では有効に なっていません

Azure ツールキット

Always Encryptedは既定では有効に なっていません

xDB Collection databaseは、機密データを含む特定の列に対してAlways Encryptedをサポートしています。このトピックでは、既存のxDB CollectionデータベースでAlways Encryptedを有効にする方法について説明します。

ステージング テーブルの実行戦略に切り替える

Sitecore 9.3以降では、xDB Collection SQLプロバイダーはデフォルトでTVP (Table-Valued Parameters) 実行戦略を使用します。TVPとAlways Encryptedを一緒に使用することはできません。そのため、Always Encryptedを有効にする前に、ステージング テーブル戦略に切り替える必要があります。これは、インデックス ワーカー ファイルに対しても行う必要があります。

キーの構成

列マスター キー (CMK) と列暗号化キー (CEK) を生成する手順は、使用しているキー ストアの種類によって異なります。

オプション1: Windowsキー ストア

次の手順は、Windowsキー ストアを使用している場合に適用されます。

キーの作成

列マスター キー (CMK) と列暗号化キー (CEK) の作成と使用については、Microsoftの Always Encryptedのドキュメント を参照してください。全体的な手順は次のとおりです。

  • 列マスター キー (CMK) と列暗号化キー (CEK) を作成します

  • CMKをエクスポートし、xDB Collectionデータベースに接続するロールの適切な証明書ストアにインポートします。

  • 各ロールのユーザーが CMKにアクセスするアクセス許可を持っていることを確認します。 ローカル コンピューターの 証明書ストアを使用している場合、各ロール ユーザーに は読み取り アクセス許可が必要です。

    位相幾何学

    役割

    ユーザー例 (<IdentityType>\<username>)

    XPシングル

    xConnect (スタンドアロン) (w3wp)

    IIS AppPool\AppPoolName

    xConnect Search Indexer (Windowsサービス)

    NT権限\LocalService

    XPスケーリング

    xConnectコレクション検索 (w3wp)

    IIS AppPool\AppPoolName

    xConnectコレクション (w3wp)

    IIS AppPool\AppPoolName

    xConnect Search Indexer (Windowsサービス)

    NT権限\LocalService

メモ

Azure Key VaultではなくAzure Web App Servicesを使用している場合は、「 Azure Web App ServiceでのSQL Always Encryptedの使用」を参照してください。

xConnectロールの構成

次の手順は、xDB Collectionデータベースにアクセスするロールのすべてのインスタンスで完了する必要があります。

  • xConnect Searchインデクサー

  • xConnect Collection Searchサービス

  • xConnect Collectionサービス

大事な

インデックスワーカーファイルの設定も忘れずに変更してください。

Always Encryptedを使用するようにxConnectロールを設定するには:

  • <role-root>\App_data\config\Sitecore\Collection\sc.Xdb.Collection.Data.Sql.xml設定ファイルを開き、UseAlwaysEncrypted要素をtrueに設定します。

RequestResponse
<UseAlwaysEncrypted>true</UseAlwaysEncrypted>

オプション2: Azure Key Vault

Azure Key Vaultを使用している場合、次の手順が適用されます。

キーの作成

Azure Key Vaultの設定については、Microsoftの Azure Key Vaultのドキュメント を参照してください。全体的な手順は次のとおりです。

xConnectロールの構成

次の手順は、xDB Collectionデータベースにアクセスするロールのすべてのインスタンスで完了する必要があります。

  • xConnect Searchインデクサー

  • xConnect Collection Searchサービス

  • xConnect Collectionサービス

大事な

インデックスワーカーファイルの設定も忘れずに変更してください。

  1. <role-root>\App_data\config\Sitecore\Collection\sc.Xdb.Collection.Data.Sql.xml設定ファイルを開き、UseAlwaysEncrypted要素をtrueに設定します。

    RequestResponse
    <UseAlwaysEncrypted>true</UseAlwaysEncrypted>
    
  2. Sitecore 9.1 Update-1以降では、App_Data\Config\Sitecore\Collection\sc.Xdb.Collection.Data.Sql.KeyStoreProviders.xml.disabledを有効にします。Sitecore 9.1初期リリース以前では、<role-root>\App_Data\Config\Sitecore\CoreServices\sc.Xdb.Sql.Common.Encryption.AzureKeyVault.xml.disabledを有効にします。

    手記

    このファイルでは、ClientIdAppSettingsKey (デボルト値: AzureKeyVaultClientId) とClientSecretAppSettingsKey (デフォルト値: AzureKeyVaultClientSecret) 設定の名前を定義します。これらの設定を変更する必要はありません。

  3. <role-root>\App_Config\App.configで、次のアプリ設定を追加します。Azure Key Vaultから値をコピーします (ClientId、SecretId)。

    RequestResponse
    <add key="AzureKeyVaultClientId" value="1fb143e0-b103-472b-a281-c8727d3dfb2f" />
    <add key="AzureKeyVaultClientSecret" value="mfCEb0z5r3UOIBMG38tpbdi1OvC9NvUSJV9u+VwpGEg=" />
    

すべてのシャードでAlways Encryptedを構成する

次の手順は、各シャードで完了する必要があり、CEKキーとCMKキーが作成されていることを前提としています。

  1. xDB Collectionデータベースからすべてのストアド プロシージャ (すべての *Tvpプロシージャを除く) を含むスクリプトを生成します。スクリプトを保存します。

  2. xDB Collectionデータベースからすべてのストアド プロシージャを削除します。

  3. 次のテーブルの変更追跡を無効にします。

    • 問い合わせ先

    • コンタクトファセット

    • インタラクション

    • インタラクションファセット

  4. 次の列に対してAlways Encryptedを構成し、対応する暗号化の種類を指定します。

    コラム

    暗号化の種類

    ContactFacets です。ファセットデータ

    無作為 化

    ContactFacets_Staging。ファセットデータ

    無作為 化

    InteractionFacets です。ファセットデータ

    無作為 化

    InteractionFacets_Staging。ファセットデータ

    無作為 化

    DeviceProfileFacets です。ファセットデータ

    無作為 化

    DeviceProfileFacets_Staging。ファセットデータ

    無作為 化

    ContactIdentifiers です。識別子

    決定的

    ContactIdentifiers です。テンプレート

    決定的

    ContactIdentifiers_Staging。識別子

    決定的

    ContactIdentifiers_Staging。テンプレート

    決定的

    ContactIdentifiersIndex です。識別子

    決定的

    ContactIdentifiersIndex です。テンプレート

    決定的

    ContactIdentifiersIndex_Staging。識別子

    決定的

    ContactIdentifiersIndex_Staging。テンプレート

    決定的

    GetContactIdsByIdentifiers_Staging。識別子

    決定的

    GetContactIdsByIdentifiers_Staging。テンプレート

    決定的

    GetContactsByIdentifiers_Staging。識別子

    決定的

    GetContactsByIdentifiers_Staging。テンプレート

    決定的

    CheckContacts_Staging。識別子

    決定的

    CheckContacts_Staging。テンプレート

    決定的

    UnlockContactIdentifiersIndex_Staging。識別子

    決定的

    UnlockContactIdentifiersIndex_Staging。テンプレート

    決定的

  5. 次のテーブルの変更追跡を再度有効にします。

    • 問い合わせ先

    • コンタクトファセット

    • インタラクション

    • インタラクションファセット

  6. ステップ1で作成したスクリプトを使用してストアド プロシージャを復元します。

  7. 制限付きユーザーに次の権限を付与します (デフォルトでは、このユーザーの名前はcollection_userです)

    RequestResponse
    GRANT VIEW ANY COLUMN MASTER KEY DEFINITION TO [collection_user]
    GRANT VIEW ANY COLUMN ENCRYPTION KEY DEFINITION TO [collection_user]
    
  8. 暗号化を適用する前にデータベースに連絡先が含まれていた場合は、すべてのシャードに対して次のクエリを実行します。

    RequestResponse
    UPDATE [ContactIdentifiersIndex] SET [IdentifierHash] = DATALENGTH([Identifier])
    UPDATE [ContactIdentifiers] SET [IdentifierHash] = DATALENGTH([Identifier])

何かフィードバックはありますか?

この記事を改善するための提案がある場合は、