View a markdown version of this page

データ保持サービスのカスタム KMS キー設定 - AWS Wickr

このガイドでは、2025 年 3 月 13 日にリリースされた新しい AWS Wickr 管理コンソールについて説明します。AWS Wickr 管理コンソールのクラシックバージョンのドキュメントについては、「 Classic Administration Guide」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

データ保持サービスのカスタム KMS キー設定

データ保持サービスで独自の KMS キーを使用するには、製品を起動する前に、次の設定でキーを作成します。

保持キー
  • キータイプ: 対称 (SYMMETRIC_DEFAULT)

  • キーの使用方法: 暗号化と復号

  • キーローテーション: を有効にすることをお勧めします

パスワード復旧キー
  • キータイプ: 非対称 (ECC_NIST_P384)

  • キーの使用方法: キーアグリーメント

  • キーローテーション: 非対称キーではサポートされていません

カスタム KMS キーポリシーの設定

  1. 上記の必要な設定で KMS キーを作成します。

  2. KMS コンソールから各キーのキー ID をコピーします。

  3. Service Catalog でデータ保持製品を起動し、 KmsKeyIdおよび PasswordRecoveryKeyIdフィールドにキー IDs を入力します。

  4. スタックが完了したら、出力タブに移動します。

  5. DRSCustomerCrossAccountRoleArn と の値をコピーしますDecryptionLambdaRoleArn

  6. KMS コンソールを開き、カスタム保持キーを選択します。

  7. [Key Policy] (キーポリシー) セクションで、[Switch to policy view] (ポリシービューへの切り替え) を選択します。

  8. [Edit] を選択します。

  9. 次のステートメントをキーポリシーの"Statement"配列に追加し、プレースホルダー ARNs をステップ 5 の値に置き換えます。

  10. [Save changes] (変更の保存) をクリックします。

  11. 以下のパスワード復旧ステートメントを使用して、パスワード復旧キーのステップ 6~10 を繰り返します。

保持キー — 追加するステートメント

{ "Sid": "EnclaveGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "{DRSCustomerCrossAccountRoleArn}" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": [ "aws:wickr:network:id", "aws:wickr:app:id" ] } } }, { "Sid": "EnclaveDescribeKey", "Effect": "Allow", "Principal": { "AWS": "{DRSCustomerCrossAccountRoleArn}" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "EnclaveDecryptWithAttestation", "Effect": "Allow", "Principal": { "AWS": "{DRSCustomerCrossAccountRoleArn}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:app:id" } } }, { "Sid": "DecryptLambdaDecrypt", "Effect": "Allow", "Principal": { "AWS": "{DecryptionLambdaRoleArn}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:network:id" } } }

各ステートメントの目的については、「カスタマーマネージド KMS キーを使用するためのアクセス許可の設定」セクションの保管中の暗号化「」を参照してください。

パスワード復旧キー — 追加するステートメント

{ "Sid": "EnclaveDeriveSharedSecret", "Effect": "Allow", "Principal": { "AWS": "{DRSCustomerCrossAccountRoleArn}" }, "Action": "kms:DeriveSharedSecret", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" } } }, { "Sid": "CustomerGetPublicKey", "Effect": "Allow", "Principal": { "AWS": "{DRSCustomerCrossAccountRoleArn}" }, "Action": [ "kms:DescribeKey", "kms:GetPublicKey" ], "Resource": "*" }

各ステートメントの目的:

EnclaveDeriveSharedSecret

  • kms:DeriveSharedSecret — Nitro Enclave によって呼び出され、パスワード復旧キーのプライベートキーを使用して ECDH キー契約を実行します。これにより、移行ワークフロー中にパスワードを復号するために使用される共有シークレットが取得されます。エンクレーブが有効な Nitro Enclave 認証ドキュメント (PCR0/1/2 条件) を提供する場合にのみ許可され、エンクレーブ外でキーアグリーメントが発生しないようにします。

CustomerGetPublicKey

  • kms:GetPublicKey — パスワード復旧キーの ECC P-384 パブリックキーの取得を許可します。これは、お客様のマシンで実行されているパスワード収集スクリプトがパスワードのローカル ECDH 暗号化を実行するために使用されます。

  • kms:DescribeKey — 検証用のキーメタデータ (キー仕様、使用状況、ステータス) の取得を許可します。

例 — 保持キー

変更前:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "YourExistingStatements", "Effect": "...", "...": "..." } ] }

変更後:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "YourExistingStatements", "Effect": "...", "...": "..." }, { "Sid": "EnclaveGenerateDataKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:role/DRSCustomerCrossAccountRole-{network-id}-{region}" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": [ "aws:wickr:network:id", "aws:wickr:app:id" ] } } }, { "Sid": "EnclaveDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:role/DRSCustomerCrossAccountRole-{network-id}-{region}" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "EnclaveDecryptWithAttestation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:role/DRSCustomerCrossAccountRole-{network-id}-{region}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:RecipientAttestation:PCR0": "*", "kms:RecipientAttestation:PCR1": "*", "kms:RecipientAttestation:PCR2": "*" }, "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:app:id" } } }, { "Sid": "DecryptLambdaDecrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:role/{DecryptionLambdaRoleName}" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "kms:EncryptionContextKeys": "aws:wickr:network:id" } } } ] }