xDBコレクションデータベースのためにSQL Always Encryptedを設定してください

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

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

適用対象

xDBコレクションデータベース(SQL)のみ。

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

「常に暗号化」はデフォルトで有効 になっていません

Azure Toolkit

「常に暗号化」はデフォルトで有効 になっていません

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

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

Sitecore 9.3以降では、xDBコレクションSQLプロバイダーはデフォルトでTVP(Table-Valued Parameters)実行戦略を使用しています。TVPとAlways Encryptedを同時に使うことはできません。したがって、Always Encryptedを有効にする前にステージングテーブル戦略に切り替える必要があります。Index Workerファイルにも同様に切り替える必要があります。

キーの設定

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

オプション1
Key Store(Windows Key Store)

Windows Key Storeを使用している場合、以下の手順が適用されます。

キーを作成する

カラムマスターキー(CMK)およびカラム暗号化キー(CEK)の作成および使用に関する情報は、MicrosoftのAlways Encryptedドキュメント を参照してください。全体の手順は以下の通りです:

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

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

  • 各ロールのユーザーがCMKへのアクセス権限を持っていることを確認してください。 ローカルマシン 証明書ストアを使用している場合、各ロールユーザーは 読み取り 権限が必要です。

    位相

    役割

    例ユーザー ()

    XPシングル

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

    IIS AppPool\AppPoolName

    xConnect Search Indexer(Windowsサービス)

    NT自治体\ローカルサービス

    XP スケールド

    xConnect コレクションSearch(w3wp)

    IIS AppPool\AppPoolName

    xConnect コレクション(w3wp)

    IIS AppPool\AppPoolName

    xConnect Search Indexer(Windowsサービス)

    NT自治体\ローカルサービス

!注Azure Web App Servicesを使っているがAzure Key Vaultは使っていない場合は、「 Azure Web App Serviceで常に暗号化されたSQLを使う」をご覧ください。

xConnectの役割を設定する

xDBコレクションデータベースにアクセスするすべてのロールインスタンスに対して、以下の手順を完了する必要があります:

  • xConnect Search インデクサー
  • xConnect Collection Searchサービス
  • xConnect コレクションサービス

!重要Index Workerファイルの設定も変更するのを忘れないでください。

xConnectの役割をAlways Encryptedを使用するように設定するには:

  • \App_data\config\Sitecore\Collection\sc.Xdb.Collection.Data.Sql.xml設定ファイルを開いて、UseAlwaysEncrypted要素をtrueに設定します:

true

オプション2: Azure Key Vault

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

キーを作成する

MicrosoftのAzure Key Vaultの設定に関する情報は、Microsoftの「 Azure Key Vault」ドキュメント を参照してください。全体的な手順は以下の通りです:

xConnectの役割を設定する

xDBコレクションデータベースにアクセスするすべてのロールインスタンスに対して、以下の手順を完了する必要があります:

  • xConnect Search インデクサー
  • xConnect Collection Searchサービス
  • xConnect コレクションサービス

!重要Index Workerファイルの設定も変更するのを忘れないでください。

  1. \App_data\config\Sitecore\Collection\sc.Xdb.Collection.Data.Sql.xml設定ファイルを開いて、UseAlwaysEncrypted要素をtrueに設定します:

    true

  2. Sitecore 9.1 Update-1以降では、App_Data\Config\Sitecore\Collection\sc.Xdb.Collection.Data.Sql.KeyStoreProviders.xml.disabledを有効にします。Sitecore 9.1初期リリースおよびそれ以前では、\App_Data\Config\Sitecore\CoreServices\sc.Xdb.Sql.Common.Encryption.AzureKeyVault.xml.disabledを有効にします。

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

  3. \App_Config\App.configで、以下のアプリ設定を追加してください。Azure Key Vault(ClientId、SecretId)から値をコピーしてください:

すべてのシャードでAlways Encryptedを設定する

以下の手順は各シャードで完了しなければならず、CEKキーとCMKキーが作成されていると仮定しています。

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

  2. xDBコレクションデータベースからすべてのストアドプロシージャを削除してください。

  3. 以下の表で変更追跡を無効にしてください:

    • [連絡先]
    • [接触ファセット]
    • [交流]
    • [インタラクションファセット]
  4. 以下の列に対して対応する暗号化タイプでAlways Encryptedを設定してください。

    暗号化の種類

    [ContactFacets]。[FacetData]

    ランダム化

    [ContactFacets_Staging]。[FacetData]

    ランダム化

    [InteractionFacets]。[FacetData]

    ランダム化

    [InteractionFacets_Staging]。[FacetData]

    ランダム化

    [デバイスプロファイルファセット]。[ファセットデータ]

    ランダム化

    [DeviceProfileFacets_Staging]。[FacetData]

    ランダム化

    [連絡先識別子][識別子]

    決定論的

    [連絡先識別子][出典]

    決定論的

    [ContactIdentifiers_Staging]。[識別子]

    決定論的

    [ContactIdentifiers_Staging]。[出典]

    決定論的

    [連絡先識別子インデックス]。[識別子]

    決定論的

    [連絡先識別子インデックス]。[出典]

    決定論的

    [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です)

    GRANT VIEW ANY COLUMN MASTER KEY DEFINITION TO collection_user GRANT VIEW ANY COLUMN ENCRYPTION KEY DEFINITION TO collection_user

  8. 暗号化を適用する前にデータベースに連絡先が含まれていた場合は、すべてのシャードに対して以下のクエリを実行してください。

    UPDATE ContactIdentifiersIndex SET IdentifierHash = DATALENGTH(Identifier) UPDATE ContactIdentifiers SET IdentifierHash = DATALENGTH(Identifier)

この記事を改善するための提案がある場合は、 お知らせください!