アテステーション用に AWS KMS を準備する
注記
サードパーティーのサービスに対してアテステーションを行う場合は、アテステーションドキュメントを受信、解析、検証するための独自のカスタムメカニズムを構築する必要があります。詳細については、「NitroTPM アテステーションドキュメントを検証する」を参照してください。
構成証明可能 AMI を作成したら、Amazon EC2 インスタンスからのリクエストを検証するために使用できるリファレンス測定値が必要です。AWS KMS には、NitroTPM によるアテステーションのサポートが組み込まれています。
シークレットデータの暗号化に使用した AWS KMS キーでは、構成証明可能 AMI の作成プロセス中に生成したリファレンス測定値に一致する測定値を使用するアテステーションドキュメントが API リクエストに含まれている場合にのみ、キーアクセスを許可するキーポリシーを追加します。標準ブートには PCR4 および PCR12 測定値を使用し、安全ブートには PCR7 測定値を使用します。これにより、構成証明可能 AMI を使用して起動されたインスタンスからのリクエストのみが、AWS KMS キーを使用して暗号オペレーションを実行できます。
AWS KMS には、NitroTPM KMS キーポリシーのアテステーションベースの条件を作成できる kms:RecipientAttestation:NitroTPMPCR4、kms:RecipientAttestation:NitroTPMPCR7、kms:RecipientAttestation:NitroTPMPCR12 条件キーが用意されています。詳細については、「Condition keys for NitroTPM」を参照してください。
例えば、次の AWS KMS キーポリシーでは、MyEC2InstanceRole インスタンスプロファイルがアタッチされたインスタンスからリクエストが発生し、特定の PCR 4 値および PCR 12 値を含むアテステーションドキュメントがリクエストに含まれている場合にのみ、キーアクセスを許可します。
{ "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:NitroTPMPCR4":"EXAMPLE6b9b3d89a53b13f5dfd14a1049ec0b80a9ae4b159adde479e9f7f512f33e835a0b9023ca51ada02160EXAMPLE", "kms:RecipientAttestation:NitroTPMPCR12":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" } } } ] }