xDB Collection databaseのSQL Always Encryptedの構成
このページの翻訳は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をエクスポートし、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に設定します。
<UseAlwaysEncrypted>true</UseAlwaysEncrypted>
オプション2: Azure Key Vault
Azure Key Vaultを使用している場合、次の手順が適用されます。
キーの作成
Azure Key Vaultの設定については、Microsoftの Azure Key Vaultのドキュメント を参照してください。全体的な手順は次のとおりです。
-
Azure Active Directoryにアプリケーション (xConnectロール) を登録します。
-
キー/シークレットの使用をアプリケーションに許可します。
xConnectロールの構成
次の手順は、xDB Collectionデータベースにアクセスするロールのすべてのインスタンスで完了する必要があります。
-
xConnect Searchインデクサー
-
xConnect Collection Searchサービス
-
xConnect Collectionサービス
インデックスワーカーファイルの設定も忘れずに変更してください。
-
<role-root>\App_data\config\Sitecore\Collection\sc.Xdb.Collection.Data.Sql.xml設定ファイルを開き、UseAlwaysEncrypted要素をtrueに設定します。
RequestResponse<UseAlwaysEncrypted>true</UseAlwaysEncrypted>
-
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) 設定の名前を定義します。これらの設定を変更する必要はありません。
-
<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キーが作成されていることを前提としています。
-
xDB Collectionデータベースからすべてのストアド プロシージャ (すべての *Tvpプロシージャを除く) を含むスクリプトを生成します。スクリプトを保存します。
-
xDB Collectionデータベースからすべてのストアド プロシージャを削除します。
-
次のテーブルの変更追跡を無効にします。
-
問い合わせ先
-
コンタクトファセット
-
インタラクション
-
インタラクションファセット
-
-
次の列に対して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。テンプレート
決定的
-
次のテーブルの変更追跡を再度有効にします。
-
問い合わせ先
-
コンタクトファセット
-
インタラクション
-
インタラクションファセット
-
-
ステップ1で作成したスクリプトを使用してストアド プロシージャを復元します。
-
制限付きユーザーに次の権限を付与します (デフォルトでは、このユーザーの名前はcollection_userです)
RequestResponseGRANT VIEW ANY COLUMN MASTER KEY DEFINITION TO [collection_user] GRANT VIEW ANY COLUMN ENCRYPTION KEY DEFINITION TO [collection_user]
-
暗号化を適用する前にデータベースに連絡先が含まれていた場合は、すべてのシャードに対して次のクエリを実行します。
RequestResponseUPDATE [ContactIdentifiersIndex] SET [IdentifierHash] = DATALENGTH([Identifier]) UPDATE [ContactIdentifiers] SET [IdentifierHash] = DATALENGTH([Identifier])