アテステーション用に AWS KMS を準備する
注記
サードパーティーのサービスに対してアテステーションを行う場合は、アテステーションドキュメントを受信、解析、検証するための独自のカスタムメカニズムを構築する必要があります。詳細については、「NitroTPM アテステーションドキュメントを検証する」を参照してください。
Attestable AMI を作成したら、Amazon EC2 インスタンスからのリクエストを検証するために使用できるリファレンス測定値が必要です。AWS KMS には、NitroTPM によるアテステーションのサポートが組み込まれています。
シークレットデータの暗号化に使用した AWS KMS キーには、Attestable AMI の作成プロセス中に生成したリファレンス測定値と一致する PCR4 または PCR7 測定値を含むアテステーションドキュメントが API リクエストに含まれている場合にのみ、キーアクセスを許可するキーポリシーを追加します。これにより、Attestable AMI を使用して起動されたインスタンスからのリクエストのみが、AWS KMS キーを使用して暗号オペレーションを実行できます。
AWS KMS には、KMS キーポリシーのアテステーションベースの条件を作成できる kms:RecipientAttestation:PCR4 および kms:RecipientAttestation:PCR7 条件キーが用意されています。詳細については、「AWS Nitro Enclaves および NitroTPM の AWS KMS 条件キー」を参照してください。
例えば、次の AWS KMS キーポリシーでは、MyEC2InstanceRole インスタンスプロファイルがアタッチされたインスタンスからリクエストが発生し、特定の PCR 4 値および PCR 7 値を含むアテステーションドキュメントがリクエストに含まれている場合にのみ、キーアクセスを許可します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow requests from instances with attested AMI only", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyEC2InstanceRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:GenerateRandom" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "kms:RecipientAttestation:PCR4":"EXAMPLE6b9b3d89a53b13f5dfd14a1049ec0b80a9ae4b159adde479e9f7f512f33e835a0b9023ca51ada02160EXAMPLE", "kms:RecipientAttestation:PCR7":"EXAMPLE34a884328944cd806127c7784677ab60a154249fd21546a217299ccfa1ebfe4fa96a163bf41d3bcfaeEXAMPLE" } } } ] }
詳細については、「NitroTPM の AWS KMS 条件キー」を参照してください。