確定的暗号化を使用する場合の考慮事項
これらの考慮事項は、Shield Platform Encryption の確定的暗号化スキームで暗号化されたデータに適用されます。確定的暗号化スキームでデータを暗号化するときに大文字と小文字を区別するかどうかによって、示される考慮事項が異なる場合があります。
必要なエディション
| Salesforce Classic (使用できない組織もあります) および Lightning Experience の両方で使用できます。 |
| 使用可能なエディション: Salesforce Shield または Shield Platform Encryption ライセンスが付属する Enterprise Edition、Performance Edition、および Unlimited Edition。 |
| Developer Edition で無料で使用できます。 |
絞り込み可能な項目を識別する API オプション
確定的暗号化スキームを使用して暗号化された項目は絞り込み可能です。isFilterable() メソッドを使用すると、暗号化された特定の項目の暗号化スキームを判断できます。項目が絞り込み可能であれば、メソッドは true を返します。
ただし、API を使用して確定的暗号化スキームを明示的に検出または設定することはできません。
使用可能な項目およびその他のデータ
確定的暗号化は、カスタム URL、メール、電話、テキスト、テキストエリアのデータ型で使用できます。次のような他のデータ型では使用できません。
- カスタム日付、日付/時刻、ロングテキストエリア、リッチテキストエリア、説明のデータ型
- Chatter
- ファイルと添付ファイル
大文字と小文字の区別
大文字と小文字を区別する確定的暗号化を使用する場合、大文字と小文字の区別が重要になります。暗号化された項目のレポート、リストビュー、SOQL クエリの結果では大文字と小文字は区別されます。したがって、取引先責任者オブジェクトに対する SOQL クエリで LastName = Jones とすると、Jones のみが返され、jones や JONES は返されません。同様に、大文字と小文字を区別する確定的スキームで一意性をテストする場合、「Jones」の各バージョンがすべて一意になります。
チャット
最大限の推奨結果を得るには、発言の提案オブジェクトの [発言] 項目で大文字と小文字を区別する確定的暗号化スキームを使用します。この項目では、現在、他の暗号化スキームはサポートされていません。
会話エントリオブジェクトの [アクター名] 項目では、大文字と小文字が区別される確定的暗号化はサポートされますが、大文字と小文字が区別されない確定的暗号化はサポートされません。
複合項目
確定的暗号化を使用していても、一部の種類の検索は、データが大文字と小文字を区別する確定的暗号化で暗号化されている場合には機能しません。複合名などの連結された値は、個別の値と同じではありません。たとえば、複合名「William Jones」の暗号文は、「William」と「Jones」の暗号文を連結したものと同じではありません。
そのため、取引先責任者オブジェクトの [名] 項目と [姓] 項目が暗号化されている場合、このクエリは機能しません。
Select Id from Contact Where Name = 'William Jones'ただし、このクエリは機能します。
Select Id from Contact Where FirstName = 'William’ And LastName ='Jones'
大文字と小文字を区別するまたは区別しない確定的暗号化スキームでは複合項目がサポートされますが、個別の列クエリのみでサポートされます。
取引先および取引先責任者レコードの個人取引先への変換
取引先および取引先責任者レコードを個人取引先に変換する場合は、データを同期します。同期すると、大文字と小文字を区別しない絞り込みを許可するインデックスがリセットされます。
取引先のマージツールを使用して検索できない
[取引先名] または [取引先責任者名] 項目が確率的または確定的暗号化で暗号化されている場合、マージする重複する取引先または取引先責任者を検索しても結果は返されません。
カスタム項目の割当
大文字と小文字を区別しないクエリをサポートするために、Salesforce ではデータの小文字の複製をカスタム項目としてデータベースに保存します。これらの重複は、大文字と小文字を区別しないクエリで必要ですが、カスタム項目の合計数に含まれます。たとえば、組織に 200 個のカスタム項目があり、大文字と小文字を区別しない確定的暗号化を使用してカスタム項目を暗号化する場合、カスタム項目の合計は 201 になります。
外部 ID
大文字と小文字を区別しない確定的暗号化では、テキストとメールの外部 ID カスタム項目をサポートしますが、その他の外部 ID カスタム項目はサポートしません。これらの項目を作成または編集するときは、推奨される項目設定の組み合わせのいずれかを使用します。
| 外部 ID データ型 | 一意の属性 | 暗号化 |
|---|---|---|
| Text | なし | 大文字と小文字を区別しない確定的暗号化を使用します。 |
| Text | 一意かつ大文字と小文字を区別する | 大文字と小文字を区別する確定的暗号化を使用します。 |
| Text | 一意かつ大文字と小文字を区別しない | 大文字と小文字を区別しない確定的暗号化を使用します。 |
| なし | 大文字と小文字を区別しない確定的暗号化を使用します。 | |
| 一意 | 大文字と小文字を区別する確定的暗号化を使用します。 |
[ユニーク - 大文字と小文字を区別する] オプションと [暗号化] オプションへの変更を同時に保存することはできません。1 つの設定を変更して保存し、次の設定を変更します。
検索条件の演算子
レポートとリストビューでは、演算子「次の文字列と一致する」および「次の文字列と一致しない」は、大文字と小文字を区別する確定的暗号化でサポートされています。「次の文字列を含む」や「次の文字列で始まる」などのその他の演算子は、完全一致を返さず、サポートされません。絞り込み項目検索条件など、サポートされていない演算子に依存する機能もサポートされません。
大文字と小文字を区別しない確定的暗号化では、リストビューとレポートをサポートします。ただしユーザーインターフェースには、暗号化データをサポートしない演算子を含め、すべての演算子が表示されます。Salesforce Classic で使用できるサポートされる演算子のリストを確認するには、「Use Encrypted Data in Formulas (数式での暗号化データの使用)」を参照してください。
文字列のよるレコードの絞り込み
文字列を使用してレコードを検索できます。ただし、文字列内のカンマは OR ステートメントとして動作します。文字列にカンマが含まれる場合は、文字列を引用符で囲みます。たとえば、「“Universal Containers, Inc, Berlin”」を検索すると、カンマも含めた文字列全体を含むレコードが返されます。「Universal Containers, Inc, Berlin」を検索すると、「Universal Containers」、「Inc」、または「Berlin」を含むレコードが返されます。
数式
確率的暗号化スキームで暗号化された項目を SOQL WHERE クエリで参照することはできません。ただし、確定的暗号化スキームで暗号化された数式以外の項目では SOQL WHERE クエリを使用できます。[名前] は数式以外の項目の例です。
インデックス
暗号化スキームにインデックスで使用される項目の暗号化が含まれている場合、それらの項目に確定的暗号化を使用する必要があります。
インデックスに含まれる項目や一意性の要件がある項目を暗号化する場合、重大な影響があります。このセクションをよく読んで、問題を理解してください。
大文字と小文字を区別しない確定的暗号化の両方がサポートされます。
- 大文字と小文字を区別する確定的暗号化では、標準項目およびカスタム項目の単一列インデックス、単一列の一意のインデックス (大文字と小文字を区別)、2 列インデックス、カスタムインデックスがサポートされています。
- 大文字と小文字を区別しない確定的暗号化では、次の標準項目の標準インデックスが限定的にサポートされます。
- 取引先責任者 — メール
- メールメッセージ — リレーション
- リード — メール
- 名前
インデックス項目を暗号化する前に、次のパフォーマンスに関する考慮事項に留意してください。
- クエリのパフォーマンスが低い: 大文字と小文字を区別しない確定的暗号化で暗号化された項目に対するクエリは、大きなテーブルではパフォーマンスが低い可能性があります。クエリの最適なパフォーマンスを確保するには、標準インデックスの代わりにカスタムインデックスを使用します。カスタムインデックスを設定する場合は、Salesforce カスタマーサポートにお問い合わせください。
- 参照項目の絞り込み: [名前] 項目を参照する参照項目もインデックスに依存します。リストビューとレポートの [名前] 項目で絞り込むには、参照項目ではなく、標準の [名前] 項目で絞り込みます。
- 長い有効化プロセス: 多数のレコードがある項目に確定的暗号化を適用する場合、有効化プロセスに時間がかかることが予想されます。有効化プロセスでは、項目インデックスも再構築されます。
インデックス項目を暗号化する場合は、次のベストプラクティスを使用してください。
- 一貫性のある暗号化: インデックス付けされた項目または一意性の要件がある項目で確定的暗号化を使用する場合、すべての値が同じ確定的鍵で暗号化されていることを確認します。これにより、レコード間の重複を確実に識別できます。
- Perform Encryption Sync (暗号化同期を実行): 暗号化スキームの変更や確定的暗号化テナントの秘密の循環など、インデックスの一意性に影響する可能性のある変更を加えたら、すぐに暗号化同期を実行することをお勧めします。
- ダウンタイムの計画: 中断を最小限に抑えるために、これらの変更はピーク時間外に計画します。暗号化同期はバッチで実行され、時間はエンティティの構造、レコード量、関連する項目によって異なります。サポートチームと協力して、必要なダウンタイムを計画します。
鍵の循環と絞り込みの可用性
確定的暗号化スキームを追加、削除、または変更すると、インデックスが再構築されます。暗号化された項目のユーザーアクティビティにより、インデックスのデータが重複し、同期操作が妨げられる可能性があります。確定的鍵素材を循環するか、項目の暗号化スキームを大文字と小文字を区別する確定的暗号化または大文字と小文字を区別しない確定的暗号化に変更したら、できるだけ早くデータを有効な鍵に同期します。同期すると、有効な鍵素材が既存および新規データに適用されます。データを同期しない場合、一意の属性を持つ項目を絞り込み、クエリを実行しても、正しい結果が返されません。
[設定] の [暗号化統計およびデータ同期] ページで、標準項目とカスタム項目のデータを自分で同期できます。他のすべてのデータや大量のデータを同期する場合は、Salesforce カスタマーサポートにお問い合わせください。データ同期についての詳細は、「バックグラウンド暗号化サービスを使用したデータ暗号化の同期」を参照してください。
Next Best Action Recommendations
確定的暗号化を使用する場合、暗号化項目は、「次の文字列と一致する」または「次の文字列と一致しない」演算子を使用する読み込み条件でのみ使用できます。
項目からの確定的暗号化の削除
確定的暗号化で暗号化された項目から暗号化を削除した場合、Shield Platform Encryption では組織全体でその項目を復号化するのにしばらく時間がかかります。組織のサイズによってこのプロセスにかかる時間が決まるため、更新が完了するまで、暗号化されていない項目の絞り込みと並び替えの特性は持ちません。
SOQL の GROUP BY ステートメント
「SOQL/SOSL 参照ページ比較演算子」のルールに従って where 句を組み立てる
確定的暗号化では、GROUP BY 句はサポートされません。確定的項目を使用して [グループ化] を指定すると、グルーピングが正確で一貫性がありません。
SOQL の LIKE および STARTS WITH ステートメント
確定的暗号化では、大文字小文字を含めた完全一致のみがサポートされます。部分一致を返す比較演算子はサポートされていません。たとえば、LIKE ステートメントと STARTS WITH ステートメントはサポートされません。
SOQL の ORDER BY ステートメント
確定的暗号化では、データベース内の暗号化されたデータの並び替え順が維持されないため、ORDER BY はサポートされていません。

