外部鍵管理 (EKM)
外部鍵管理 (EKM)
外部KMSで暗号鍵を保存・管理しながらSalesforceデータを保護する
Salesforce Shield 連携はプレビュー段階であり、標準の DuoKey Cockpit テナントではまだ有効になっていません。このガイドでは仕組みと設定手順を説明します。プロジェクトでのご利用については DuoKey にお問い合わせください。
EKMとは
Shield外部鍵管理 (EKM) は、Salesforce実装を外部KMSに保存された暗号鍵に接続します。鍵をSalesforceにアップロードする従来のBYOKとは異なり、EKMは必要なときにのみ外部KMSから鍵を取得し、メモリ内に一時的にキャッシュします。
究極の鍵管理
鍵は常に外部KMS内に留まります
オンデマンド取得
鍵は操作に必要なときにのみ取得されます
永続的な保存なし
SalesforceはキャッシュしたEKM鍵を決して永続化しません
即時失効
KMSからいつでもアクセスを取り消せます
Salesforce Shield EKMがDuoKeyと連携する仕組み
EKMでは、Shield Platform EncryptionはDuoKey KMS(外部鍵管理サービス)に依存して、Shield Platform暗号化サービスが使用するデータ暗号鍵 (DEK) を生成・保護します。これらのDEKはラップされた状態でShield Platformの暗号化された鍵キャッシュとともに保持されます。暗号化または復号操作が必要になると、Shield PlatformサービスはラップされたDEKをDuoKey KMSに渡してアンラップします。
| Edition/Requirement | Details |
|---|---|
| Experience | Lightning Experience and Salesforce Classic (not available in all orgs) |
| Editions | Enterprise, Performance, Unlimited, and Developer |
| License | Salesforce Shield or Shield Platform Encryption |
| Service | EKM Service or Cache-Only Key Service |
| Permission | Manage Encryption Keys |
EKMセットアッププロセス
このプロセスは、DuoKey KMSでルート鍵を作成することから始まります。SalesforceのリージョンごとのリージョナルKMSに重要な権限を付与するポリシーを作成します。
- ルート鍵を使用してDEKを生成・ラップするようDuoKey KMSに要求する権限
- 顧客ルート鍵を使用してDEKをアンラップするようDuoKey KMSに要求する権限
EKM セットアッププロセス
DuoKey KMS と Salesforce Shield 間の初期設定
ルート鍵の作成
DuoKey KMS管理者がDuoKey KMSでルート鍵を作成します
鍵ポリシーの構成
Salesforce管理者が鍵ポリシーを作成し、DuoKey KMSにコピーします
DEKの要求
ポリシーが設定された状態で、Salesforce暗号化サービスがローカルストレージ用のDEKを要求します
DEKのラップ
DuoKey KMSがルート鍵を使用して新しいDEKを作成・ラップし、セキュアなチャネル (TLS/mTLS) 経由で返送します
ラップされたDEKの保存
暗号化サービスがラップされたDEKをTenantSecretテーブルに保存します
EKM鍵取得プロセス
Shield Platform暗号化サービスがEKM DEKを必要とする暗号化操作を検出すると、暗号化された鍵キャッシュを確認します。アンラップされたDEKがキャッシュに存在しない場合、Shield Platform暗号化サービスは鍵取得チェーン全体を通じてリクエストを開始します。
鍵取得チェーン
キー取得フロー
Salesforce が DuoKey から暗号化キーを取得しキャッシュする方法
AES-256 で暗号化 / 復号
データは Salesforce 内で暗号化されます — DuoKey からのキー失効により、アクセスは即座に無効化されます
鍵取得のステップバイステップ
- ユーザーが暗号化されたデータにアクセスまたは保存します
- Shield Platform暗号化サービスがTenantSecretテーブルからラップされたDEKを取得します
- 暗号化サービスがTenantSecretデータベースからラップされたDEKを取得します
- リクエストがExternal Key Storeで構成されたAWS KMSに送信されます
- AWS KMSがTLS 1.2以上でリクエストをXKS Proxyに転送します
- XKS ProxyがインテリジェントルーティングのためにリクエストをDuoKey Cockpitにルーティングします
- DuoKey CockpitがDuoKey MPCに転送し、しきい値暗号を使用してDEKをアンラップします
- アンラップされたDEKがセキュアなチャネルを通じてSalesforceに返送されます
- 暗号化サービスがアンラップされた鍵を鍵キャッシュに保存します(メモリのみ、決して永続化されません)
- サービスがAES-256を使用して暗号化/復号操作を実行します
アーキテクチャ概要
DuoKeyによるEKMアーキテクチャ
完全なキー取得チェーン: Salesforce → AWS KMS → XKS Proxy → DuoKey MPC
インテリジェントルーティング
DuoKey Cockpitは鍵ポリシーに基づいて適切なボールトにリクエストをルーティングします
マルチボールトサポート
HashiCorp Vault、CyberArk、DuoKey MPC、またはAWS KMSに接続します
しきい値暗号
DuoKey MPCはセキュリティ強化のためのマルチパーティ計算を提供します
統合管理
異なるバックエンド全体で鍵を管理する単一のインターフェース
EKMによる暗号化プロセス
ユーザーによるデータ送信
ユーザーがSalesforceの暗号化されたフィールドにデータを保存します
キャッシュ確認
アプリケーションサーバーがDEKが鍵キャッシュにあるかを確認します
鍵取得
キャッシュにない場合、Salesforceは外部KMSから安全に鍵を要求します
鍵のキャッシュ
鍵はメモリに一時的に保存されます(決してディスクに永続化されません)
データ暗号化
256ビットAES暗号化を使用してデータが暗号化されます
保存
暗号化されたデータがデータベースに保存されます
鍵取得フロー
| Scenario | Description | Response Time |
|---|---|---|
| キャッシュヒット(高速パス) | DEKは既にメモリキャッシュ内にあります。外部KMSへのネットワーク呼び出しは不要です。 | < 10ms |
| キャッシュミス | DEKがキャッシュに見つかりません。鍵はAWS KMS/XKS Proxyから取得され、キャッシュされます。 | 50-200ms |
応答時間は目安であり、ネットワークレイテンシとバックエンドに依存します。
舞台裏:Shield Platform Encryption
舞台裏: Shield 暗号化
テナントシークレット生成、キー導出、データ暗号化の 3 フェーズプロセス
- 各レコードは一意の IV を使用(パターン分析を防止)
- DEK は平文で保存されません
- PBKDF2 により総当たり攻撃の計算コストが高くなります
- データの再暗号化なしでキーローテーションをサポート
フェーズ1:テナントシークレットの生成
- ハードウェアセキュリティモジュール (HSM) が暗号学的に安全な256ビットのテナントシークレットを生成します
- テナントシークレットはAES-256-GCMを使用してSalesforceのマスター鍵で暗号化されます
- 暗号化されたテナントシークレットはデータベースに安全に保存されます
- これにより、テナントシークレットが保存時に保護されることが保証されます
フェーズ2:鍵導出 (PBKDF2)
- テナントシークレット + プライマリシークレット + ソルト(組織ID)を組み合わせます
- PBKDF2-HMAC-SHA256を10,000回の反復で使用します
- ブルートフォース攻撃を防ぐため計算コストが高くなっています
- 256ビットのデータ暗号鍵 (DEK) を生成します
- DEKは組織ごとに一意であり、テナントシークレットがローテーションされると変更されます
フェーズ3:データ暗号化
- 各レコードは一意のランダムな128ビットの初期化ベクトル (IV) を取得します
- 平文データ + IV + DEKがAES-256-CBCへの入力となります
- 出力:暗号文 + IV + 鍵IDがデータベースに保存されます
- IVはレコード間のパターン分析を防ぎます
- 鍵IDによりデータ移行なしで鍵のローテーションが可能になります
サポートされる外部KMS
AWS Key Management Service (AWS KMS)
AWS KMSは、暗号鍵の作成と制御を容易にするマネージドサービスです。Salesforce EKMとシームレスに統合します。
| Feature | Description |
|---|---|
| HSM検証 | FIPS 140-2 Level 2検証済みHSM |
| 鍵ローテーション | 自動鍵ローテーションのサポート |
| 監査ログ | AWS CloudTrailによる詳細なログ記録 |
| アクセス制御 | IAMポリシーによるきめ細かな制御 |
| レプリケーション | マルチリージョン鍵レプリケーション |
EKMで暗号化できるものは?
フィールドレベル暗号化
- 標準フィールド:機密性の高い標準フィールドを暗号化
- カスタムフィールド:テキスト、メール、電話、URLフィールド
- 確率的:統計分析を防止
- 決定論的:大文字小文字を区別しない検索が可能
Data Cloud暗号化
- すべてのData Cloudデータ:データリソースを暗号化
- 顧客管理鍵:EKMルート鍵を使用
- 単一鍵ポリシー:すべてのデータに1つのルート鍵
検索インデックス暗号化
- 検索インデックスファイル:EKMルート鍵で暗号化
- 個別のDEK:インデックス用に個別のDEKを生成
EKMの前提条件
前提条件
- Salesforce ShieldまたはShield Platform Encryptionライセンス
- 外部鍵管理サービスのアドオン
- Manage Encryption Keysユーザー権限
- Platform Encryption for Consumptionライセンス(Data Cloud用)
- AWS KMS対称暗号鍵(256ビット)
- 適切に構成されたAWS IAMポリシー
- SalesforceからAWS KMSエンドポイントへのネットワークアクセス
- AWS認証用に構成されたSalesforce Named Credential
鍵強度要件
| Requirement | Specification |
|---|---|
| 最小鍵サイズ | 256ビット対称鍵 |
| アルゴリズムサポート | AES-256暗号化 |
| 鍵生成 | 暗号学的に安全な乱数生成器 |
EKMのセットアップ
AWS KMS鍵の作成
- AWS Management Consoleにログインします
- AWS Key Management Serviceに移動します
- 新しい対称暗号鍵(256ビット)を作成します
- Salesforceのアクセスを許可するように鍵ポリシーを構成します
- 鍵IDとAWSリージョンをメモします
Named Credentialの構成
AWSで認証するためのNamed Credentialを作成します。
- SalesforceのセットアップでNamed Credentialsに移動します
- AWS Signature Version 4認証を使用する新しいNamed Credentialを作成します
- 次を構成します:AWS Access Key ID、AWS Secret Access Key、AWSリージョン、AWSサービス(
kms)
鍵連携ポリシーの設定
- Setup → Platform Encryption → Key Managementに移動します
- External Key Managementを選択します
- New EKM Keyをクリックします
- 次を指定します:鍵識別子 (ARN)、AWSリージョン、Named Credential、説明
データ暗号鍵の生成
- EKMルート鍵を作成した後、データ暗号鍵 (DEK) を生成します
- DEKはSalesforceで作成され、EKMルート鍵で暗号化されます
- 暗号化されたDEKはSalesforceに保存されますが、外部鍵を使用してのみ復号できます
有効化とテスト
- SalesforceでEKM鍵を有効化します
- Salesforceが鍵を取得できることを確認するために接続をテストします
- 鍵を暗号化ポリシーに適用します
- テストフィールドを暗号化してセットアップを検証します
鍵管理操作
EKM鍵のローテーション
ローテーションはダウンタイムなしで実行できます。古い鍵はアーカイブされ、既存データの復号のために保持されます。新しいデータは新しい鍵で暗号化され、バックグラウンドプロセスが既存データを再暗号化します。
EKM鍵接続の確認
- Setup → Platform Encryption → Key Managementに移動します
- EKM鍵を選択します
- Check Connectionをクリックします
- 接続ステータスとエラーメッセージを確認します
EKM鍵使用状況の監査
| Source | Events Tracked |
|---|---|
| Salesforce Setup Audit Trail | 鍵の作成、有効化/無効化、ローテーション、接続確認 |
| AWS CloudTrail | 鍵アクセス要求、復号操作、ポリシー変更、認証試行 |
EKM鍵の無効化
鍵を無効化すると、直ちにSalesforceのキャッシュから削除され、新しい暗号化操作が防止されます。既存の暗号化されたデータは暗号化されたままで、鍵が外部KMSで利用可能であれば引き続き復号できます。
- EKM鍵の設定に移動します
- Deactivateをクリックします
- 操作を確認します
サンドボックス環境でのEKM
本番鍵はサンドボックスでは復号にのみ使用できます。サンドボックス環境専用の別のルート鍵を常に作成してください。
サンドボックスのベストプラクティス
- サンドボックス環境用に別のAWS KMS鍵を作成します
- サンドボックス用に別のNamed Credentialを構成します
- サンドボックスの更新後、サンドボックス用に新しいEKMルート鍵を作成します
- サンドボックス内のすべてのDEKをローテーションして新しいルート鍵を使用します
- サンドボックスの暗号化操作に本番鍵を決して使用しないでください
重要な考慮事項
鍵の可用性:Salesforceアプリケーションは外部鍵に依存します。鍵が利用不可になると、ユーザーは暗号化されたデータへのアクセスを永久に失う可能性があります。
鍵損失の防止:計画外の鍵損失に対する保護策として、堅牢な鍵ローテーションおよび鍵バックアップ戦略を実装してください。
鍵無効化の影響:鍵が利用できない場合、暗号化も復号もできません。ユーザーにはデータの代わりに3つの疑問符 (???) が表示され、書き込み操作は失敗します。
ベストプラクティス
EKMベストプラクティスチェックリスト
Data Cloud固有の考慮事項
- 単一鍵:Data Cloudはすべてのデータに1つのルート鍵のみを使用します
- 新規データのみ:顧客管理からEKMへの移行は新規データにのみ影響します
- 完全な再暗号化:顧客管理鍵への移行を戻すと、すべてのData Cloudデータの再暗号化がトリガーされます
- ライセンス必須:Platform Encryption for Consumptionライセンスが必要です
EKMのトラブルシューティング
サポートの利用
- 最近の構成変更についてSalesforce Setup Audit Trailを確認します
- KMSアクセス試行とエラーについてAWS CloudTrailログを確認します
- 接続の問題を診断するためにSalesforceのCheck Connection機能を使用します
- 次の情報を添えてSalesforceサポートに連絡します:組織ID、EKM鍵識別子、エラーメッセージ、タイムスタンプ、監査証跡の抜粋
比較:EKM vs. BYOK vs. Cache-Only Keys
| Feature | EKM | BYOK | Cache-Only Keys |
|---|---|---|---|
| 鍵の場所 | 外部KMS | Salesforceにアップロード | 顧客のサービス |
| 鍵の保存 | SFに保存されない | SFに暗号化して保存 | SFに保存されない |
| 鍵のキャッシュ | メモリ内に一時的 | 保存されたシークレットから導出 | メモリ内に一時的 |
| 失効 | 即時(KMSで無効化) | 鍵ローテーションが必要 | 即時 |
| ネットワーク依存 | 取得に必要 | アップロード後は不要 | 取得に必要 |
| 複雑さ | 高 | 中 | 高 |
| 最適な用途 | 厳格なコンプライアンス | 制御と簡便性のバランス | 最大限の制御 |