カスタマー管理の KMS キーを使用して AgentCore ポリシーエンジンを暗号化する
AgentCore のポリシーは、デフォルトで暗号化を提供し、 AWS 所有の暗号化キーを使用して保管中の顧客の機密データを保護します。追加の保護レイヤーとして、AgentCore の Policy を使用すると、 AWS Key Management Service (AWS KMS) カスタマーマネージドキー (CMK) を使用してポリシーエンジンを暗号化できます。この機能により、保管時の暗号化による機密データの保護が保証され、以下に役立ちます。
-
サービス側の運用負担を軽減して機密データを保護する
-
独自の KMS AWS カスタマーマネージドキーを介して承認ポリシーの詳細を表示できるユーザーを管理する
-
セキュリティを重視したアプリケーションを構築して、暗号化のコンプライアンスと厳格な規制要件を満たす
以下のセクションでは、新しいポリシーエンジンの暗号化を設定し、暗号化キーを管理する方法について説明します。
注記
保管時の AgentCore 暗号化のポリシーは、AgentCore のポリシーが利用可能なすべての AWS リージョンで使用できます。
AWS AgentCore の Policy の KMS キータイプ
AgentCore のポリシーは AWS KMS と統合され、顧客データの暗号化と復号に使用される暗号化キーを管理します。キーのタイプと状態の詳細については、KMS デベロッパーガイドのAWS 「 Key Management Service の概念」を参照してください。 AWS 新しいポリシーエンジンを作成するときに、次の AWS KMS キータイプから選択してデータを暗号化できます。
AWS 所有キー
デフォルトの暗号化タイプ。AgentCore のポリシーは、追加料金なしでキーを所有し、作成時に保管中のリソースデータを暗号化します。AgentCore の Policy が所有するキーを使用してデータを暗号化または復号するために、コードまたはアプリケーションに追加の設定は必要ありません。これらのキーを表示、管理、使用、または監査する必要はありません。詳細については、KMS デベロッパーガイド AWS の「 AWS 所有キー」を参照してください。
カスタマーマネージドキー
AWS アカウントでキーを作成、所有、管理します。KMS キーを完全に制御できます。カスタマーマネージドキーには AWS KMS 料金が適用されます。詳細については、AWS 「KMS 料金表」ページ
ポリシーエンジンの暗号化にカスタマーマネージドキーを指定すると、AgentCore のポリシーはそのキーを使用してポリシーエンジンとそのすべての子リソース (ポリシー、ポリシー生成) を暗号化します。カスタマーマネージドキーを使用してポリシーエンジンを暗号化するには、キーポリシーで AgentCore のポリシーへのアクセスを許可する必要があります。キーポリシーは、カスタマーマネージドキーにアタッチしてアクセスを制御するリソースベースのポリシーです。詳細については、AgentCore のポリシーの AWS KMS キーの使用を許可する」を参照してください。
さらに、カスタマーマネージドキーを使用して暗号化されたポリシーエンジンを作成したり、カスタマーマネージドキーで暗号化されたポリシーエンジンに API コールを行ったりするには、コールを行う IAM ユーザーまたはロールもキーにアクセスできる必要があります。AgentCore のポリシーがキーにアクセスできない場合、そのキーによって暗号化されたリソースを含む承認の決定は拒否されます。キーにアクセスできない場合、そのキーによって暗号化されたリソースの読み取り、更新、削除はできず、暗号化にキーを使用するための作成呼び出しは失敗します。
重要
カスタマーマネージドキーを使用してポリシーエンジンを暗号化すると、暗号化に別のキーを使用するようにリソースを更新したり、そのポリシーエンジンからキーを削除したりすることはできません。
AgentCore AWS の Policy で KMS とデータキーを使用する
保管時の AgentCore 暗号化のポリシー機能は、KMS キーとデータキーの階層を使用してリソースデータを保護します。
注記
AgentCore のポリシーは、対称 KMS AWS キーのみをサポートします。非対称 KMS キーを使用して AgentCore リソースのポリシーを暗号化することはできません。
AgentCore のポリシーは、付与ベースのモデルを使用してカスタマーマネージドキーにアクセスします。カスタマーマネージドキーを使用してポリシーエンジンを作成すると、AgentCore のポリシーは次のステップを実行します。
-
AgentCore のポリシーはキーを検証して、キー
ENCRYPT_DECRYPTの使用が対称暗号化キーであり、Enabled状態であることを確認します。 -
AgentCore のポリシーは、ユーザーに代わって 2 つの AWS KMS 許可を作成します。これらの許可を作成するには、AgentCore のポリシーは、転送アクセスセッション (FAS) を介して ID
kms:CreateGrantを使用して を呼び出します。CreateGrant呼び出しは FAS 経由で認証情報を使用して行われるため、KMS AWS キーポリシーは (サービスプリンシパルではなく) AWS アカウントプリンシパルにアクセスkms:CreateGrant許可を付与する必要があります。権限自体により、AgentCoreのポリシーは、発信者の関与をさらに必要とせずに、ユーザーに代わって暗号化オペレーションを実行できるようになります。 -
すべてのポリシーデータ (ポリシー、ポリシー生成、ポリシーエンジンの関連リソース) は、カスタマーマネージドキーを使用して暗号化されます。
2 つの権限はさまざまな目的を果たします。
- ポリシー管理権限
-
ポリシーデータの管理に使用されます。この許可により、ポリシーおよび関連リソースを作成、読み取り、更新、削除するためのデータキーオペレーションを暗号化、復号、生成できます。
- ポリシー評価付与
-
ランタイムポリシーの評価に使用されます。この許可により、ポリシーエンジンが受信承認リクエストに対して Cedar ポリシーを評価できるように、復号化および再暗号化オペレーションが可能になります。
どちらの許可も、キー aws:bedrock-agentcore-policy:policy-engine-arn を使用した暗号化コンテキストによって制約されます。これにより、許可は特定のポリシーエンジンリソースにバインドされます。
カスタマーマネージドキーを使用してポリシーエンジンを削除すると、AgentCore のポリシーは両方の許可を自動的に廃止します。
重要
手動で権限を取り消す必要がある場合は、常にポリシー管理権限とポリシー評価権限の両方を取り消します。権限を 1 つだけ取り消しても、サービスのキーへのアクセスが完全に削除されるわけではなく、動作に一貫性がない可能性があります。KMS コンソールまたは list-grants AWS CLI コマンドを使用して、キー AWS の許可を表示および管理できます。
AgentCore のポリシーに AWS KMS キーの使用を許可する
AgentCore の Policy でカスタマーマネージドキーを使用するには、KMS AWS キーポリシーが AWS アカウントに許可を付与する必要があります。ポリシーエンジンを作成する場合、AgentCore のポリシーは、転送アクセスセッション (FAS) を介して ID kms:CreateGrantを使用して を呼び出します。その結果、キーポリシーは (サービスプリンシパルではなく) アカウントプリンシパルに kms:CreateGrantおよびその他の必要なアクセス許可を付与する必要があり、 kms:ViaService条件を使用して、キーが AgentCore のポリシーを介してのみ使用されるようにします。
少なくとも、AgentCore のポリシーでは、カスタマーマネージドキーに対して次のアクセス許可が必要です。
-
kms:CreateGrant— キーオペレーションの暗号化、復号、データキーの生成、再暗号化、記述のための許可を作成する -
kms:Decrypt— キーで暗号化されたデータの復号 -
kms:GenerateDataKey— ポリシーデータを暗号化するためのデータキーを生成する -
kms:DescribeKey— キーメタデータを取得してキー設定を検証する
ソースコンテキストについて
ソースコンテキストは、特定のキーに対して KMS AWS アクションを実行しようとするソース発信者に関する情報を提供します。これにより、コンテキストをデータのソースにバインドすることで、暗号化されたデータの混乱や誤用を防ぐことができます。
AgentCore のポリシーがユーザーに代わって許可を通じて AWS KMS オペレーションを実行すると、ソースコンテキストはリクエストを開始した AgentCore リソースのポリシーを識別します。ソースコンテキストをキーポリシーのグラントベースのオペレーションの追加条件として使用して、キーの使用を特定のアカウントまたはリソースから送信されるリクエストに制限できます。
注記
ソースコンテキスト条件 ( aws:SourceAccountおよび aws:SourceArn ) は、許可ベースの AWS KMS オペレーションで使用できますが、フォワードアクセスセッションを使用するkms:CreateGrant呼び出しでは利用できません。
たとえば、キーポリシーの KMS オペレーションと検証ステートメントに aws:SourceAccount および aws:SourceArn条件を追加して、リクエストがアカウントから発信され、ポリシーエンジンリソースに対してのみこれらのオペレーションが成功するようにできます。
{ "Sid": "Allow Policy for KMS operations with source context", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "bedrock-agentcore.us-east-1.amazonaws.com", "aws:SourceAccount": "111122223333" }, "StringLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:policy-engine/*", "kms:EncryptionContext:aws:bedrock-agentcore-policy:policy-engine-arn": "arn:aws*:bedrock-agentcore:*:*:policy-engine/*" } } }
このキーポリシーは、ソースアカウントがこの AWS KMS キーが存在するアカウントと同じ場合、AgentCoreのポリシーがユーザーに代わって許可を通じて KMS 呼び出しを行うことを許可します。これらの値は、KMS キーの CloudTrail 監査ログを確認するときに検証可能である必要があります。グローバル AWS 条件キーの詳細については、KMS デベロッパーガイドの「aws:SourceArn または aws:SourceAccount 条件キーの使用」を参照してください。 AWS
kms:ViaService について
kms:ViaService 条件キーは、指定された AWS サービスからのリクエストに KMS キーの使用を制限します。この条件キーは、転送アクセスセッション (FAS) に適用されます。の詳細についてはkms:ViaService、KMS デベロッパーガイドのkms:ViaService AWS 」を参照してください。
キーポリシーでは、kms:ViaService値は bedrock-agentcore.REGION.amazonaws.com の形式に従います。REGION はポリシーエンジンが作成された AWS リージョンです (例: bedrock-agentcore.us-east-1.amazonaws.com )。
暗号化コンテキストについて
暗号化コンテキストは、暗号化整合性チェックのための追加の認証済みデータを含むキーと値のペアのセットです。データを暗号化するリクエストに暗号化コンテキストを含めると、 AWS KMS は暗号化コンテキストを暗号化されたデータに暗号化的にバインドします。データを復号するには、同じ暗号化コンテキストを渡す必要があります。詳細については、KMS デベロッパーガイド AWS の「暗号化コンテキスト」を参照してください。
AgentCore のポリシーは、すべての AWS KMS 暗号化オペレーションで次の暗号化コンテキストを使用し、AgentCore のポリシーが暗号化および復号プロセスのためにユーザーに代わって AWS KMS 呼び出しを行うときに CloudTrail ログ内で検証できます。
{ "aws:bedrock-agentcore-policy:policy-engine-arn": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:policy-engine/POLICY_ENGINE_ID" }
この暗号化コンテキストをキーポリシー条件で使用して、キーを使用できるポリシーエンジンを制限できます。たとえば、次のセクションのキーポリシーは、 kms:EncryptionContext条件を使用して、キーをポリシーエンジンリソースにのみ使用できるようにします。
KMS AWS キーポリシーを完了する
前のセクションの概念に基づいて、次のキーポリシーの例では、ポリシーエンジンを暗号化し、暗号化されたポリシーエンジンを使用するために必要なアクセス許可を提供します。このポリシーには、セキュリティのベストプラクティスに準拠するための条件キーが含まれています。
重要
キーポリシーの次の値を置き換えます: * 111122223333 — を AWS アカウント ID に置き換え * us-east-1 — を AWS リージョンに置き換えます
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Policy to create grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "bedrock-agentcore.us-east-1.amazonaws.com", "kms:GrantConstraintType": "EncryptionContextSubset" }, "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore-policy:policy-engine-arn": "arn:aws*:bedrock-agentcore:*:*:policy-engine/*" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Encrypt", "Decrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo" ] } } }, { "Sid": "Allow Policy for KMS operations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "bedrock-agentcore.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore-policy:policy-engine-arn": "arn:aws*:bedrock-agentcore:*:*:policy-engine/*" } } }, { "Sid": "Allow Policy for KMS validation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "bedrock-agentcore.us-east-1.amazonaws.com" } } } ] }
ポリシーには、次のステートメントが含まれています。
- ポリシーに許可の作成を許可する
-
ポリシーエンジンの作成時に発信者が AWS KMS 許可を作成できるようにします。この
kms:GrantConstraintType条件により、権限が暗号化コンテキストによって制約されます。ForAllValues:StringEqualsの条件は、権限を AgentCore の Policy が必要とする暗号化オペレーションのみkms:GrantOperationsに制限します。 - KMS オペレーションのポリシーを許可する
-
呼び出し元が AgentCore の Policy を使用して復号化を実行し、データキーオペレーションを生成できるようにします。暗号化コンテキスト条件により、これらのオペレーションがポリシーエンジンリソースに限定されます。
- KMS 検証のポリシーを許可する
-
呼び出し元が AgentCore の Policy を使用してキーを記述できるようにします。このアクセス許可は、ポリシーエンジンの作成時に、キーが要件を満たしていることを確認します (対称、有効、正しいキー使用状況)。
重要
AgentCore AWS の Policy で既に使用されているキーの KMS キーポリシーを変更するときは注意が必要です。キーポリシーから必要なアクセス許可を誤って削除した場合、AgentCore のポリシーはポリシーデータを復号できなくなり、すべての認可決定が拒否されます。暗号化されたデータへのアクセスを必要とするオペレーション (ポリシーの作成、読み取り、更新、削除など) も失敗します。
ポリシーエンジンを暗号化するための前提条件
ポリシーエンジンを暗号化する前に、次の前提条件を満たしていることを確認してください。
-
KMS キーにアクセスできます。KMS キーの作成については、KMS デベロッパーガイドの「KMS キーの作成」を参照してください。 AWS
-
KMS キーは、
ENCRYPT_DECRYPTキーを使用する対称暗号化キーである必要があります。 -
KMS キーは有効状態である必要があります。
-
KMS キーには、必要なアクセス許可を付与するキーポリシーがアタッチされています。必要なキーポリシーについては、「完全な AWS KMS キーポリシー」を参照してください。
KMS キーの IAM アクセス許可の制御の詳細については、KMS デベロッパーガイドの「KMS キーのアクセスとアクセス許可」を参照してください。 AWS
暗号化されたポリシーエンジンの作成
暗号化されたポリシーエンジンを作成する前に、使用しているカスタマーマネージドキーに、暗号化と復号にキーを使用するように AgentCore のポリシーに適切なキーポリシーステートメントが設定されていることを確認してください。必要なアクセス許可については、AgentCore のポリシーの AWS KMS キーの使用を許可する」を参照してください。
AWS CLI を使用してポリシーエンジンを暗号化するには、create-policy-engineリクエストの送信時に --encryption-key-arnパラメータを含めます。
aws bedrock-agentcore-control create-policy-engine \ --name "MyPolicyEngine" \ --description "Policy engine with customer-managed encryption" \ --encryption-key-arn "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
レスポンスには、ポリシーエンジンの ARN とステータスが含まれます。
{ "policyEngineId": "MyPolicyEngine-abc123", "name": "MyPolicyEngine", "description": "Policy engine with customer-managed encryption", "policyEngineArn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:policy-engine/MyPolicyEngine-abc123", "status": "CREATING", "statusReasons": [], "encryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab", "createdAt": "2026-02-24T12:00:00Z", "updatedAt": "2026-02-24T12:00:00Z" }
注記
ポリシーエンジンで使用されている KMS キーが、KMS AWS キーポリシーが正しくないために削除、無効化、またはアクセスできない場合、リソースの復号は失敗します。これにより、承認の決定が拒否される可能性があります。アクセスの喪失は、状況に応じて、一時的 (キーポリシーを修正できる) または永続的 (削除されたキーを復元できない) にすることができます。KMS キーの削除や無効化など、重要なオペレーションへのアクセスを制限することをお勧めします。また、権限のあるユーザーが AWS 、万一 AgentCore のポリシーにアクセスできなくなった場合にアクセスできるように、ブレークAWS グラスアクセス手順を設定することをお勧めします。
制限事項
ポリシーエンジンのカスタマーマネージドキー暗号化には、次の制限が適用されます。
-
一度有効にすると、ポリシーエンジンの暗号化を無効にすることはできません。
-
暗号化なしでポリシーエンジンを作成した後は、カスタマーマネージドキーで暗号化されるようにポリシーエンジンを更新することはできません。
-
カスタマーマネージドキーを使用してポリシーエンジンを作成した後は、キーを変更したり、そのポリシーエンジンから削除したりすることはできません。別のキーを使用するには、新しいポリシーエンジンを作成する必要があります。
-
カスタマーマネージドキーの暗号化は、ポリシーエンジンレベルで設定されます。ポリシーやポリシー生成など、ポリシーエンジンのすべてのリソースは、ポリシーエンジンと同じカスタマーマネージドキーを使用して暗号化されます。ポリシーエンジン内の個々のリソースに異なるキーを指定することはできません。
-
既存の暗号化されたポリシーエンジンのカスタマーマネージドキーへの AgentCore のアクセスのポリシーを取り消すと、ポリシーエンジンがポリシーデータを復号できなくなるため、すべての承認決定が拒否されます。
トラブルシューティング
このセクションでは、AgentCore で ポリシーを使用する際に発生する可能性がある一般的なカスタマーマネージドキー関連のエラーと、それらを解決するためのトラブルシューティング手順について説明します。
アクセス拒否: AWS KMS アクセス許可の問題
エラー: "指定された KMS キーのアクセスが拒否されました。キーポリシーが必要なアクセス許可を付与していることを確認します。」
これは、発信者が IAM ポリシーまたは KMS キーポリシーに必要な kms:* AWS アクションのアクセス許可を持っていないか、参照されているキーが存在しないか、存在しなくなったことを意味します。
この問題を解決するには:
-
KMS キー ARN が正しく、キーが指定されたリージョンに存在することを確認します。
-
KMS AWS キーポリシーに必要なステートメントが含まれていることを確認します。「KMS AWS キーポリシーの完了」を参照してください。
-
発信者の IAM ポリシーに必要な AWS KMS アクセス許可 (
kms:CreateGrant、、kms:Decryptkms:GenerateDataKey、)kms:DescribeKeyが含まれていることを確認します。 -
CloudTrail で
kms.amazonaws.comイベントをチェックして、拒否されたオペレーションと試行されたプリンシパルを特定します。
検証例外: AWS KMS キー設定
エラー: 「指定された KMS キーは使用可能な状態ではありません。キーが有効で、削除が保留中でないことを確認します。」
つまり、参照されているキーは、現在の設定のため、カスタマーマネージドキーの暗号化には使用できません。考えられる理由は以下のとおりです。
-
キーが無効になっているか、削除が保留中です。
-
キーは対称暗号化キーではありません。
-
キーには
ENCRYPT_DECRYPTキーの使用法がありません。
この問題を解決するには: キーがポリシーエンジンを暗号化するための前提条件で説明されている前提条件を満たしていることを確認します。