View a markdown version of this page

カスタマーマネージド KMS キーを使用して AgentCore ゲートウェイを暗号化する - Amazon Bedrock AgentCore

カスタマーマネージド KMS キーを使用して AgentCore ゲートウェイを暗号化する

デフォルトでは、Gateway はサービス管理の AWS Key Management Service キーを使用して保管中のデータを暗号化します。ただし、必要に応じて、以下の場合に保管中のデータを暗号化するための独自のカスタマーマネージド KMS キーを指定できます。

  • ゲートウェイを作成します。

  • ゲートウェイの設定を更新します。

カスタマーマネージドキーを使用すると、次の機能を含め、暗号化プロセスをより詳細に制御できます。

  • 独自のスケジュールでキーをローテーションする

  • IAM ポリシーを使用してキーへのアクセスを制御する

  • 不要になったキーを無効化または削除します。

  • CloudWatch ログと AWS CloudTrail によるキー使用状況の監査

詳細については、AWS 「 Key Management Service デベロッパーガイド」を参照してください。

注記

カスタマーマネージドキーを使用する場合は、キーとそのアクセス許可を管理する責任があります。キーが無効または削除された場合、または Gateway がキーを使用するアクセス許可を失った場合、暗号化されたデータにアクセスできなくなります。

AgentCore ゲートウェイを暗号化するための前提条件

ゲートウェイを暗号化する前に、次の前提条件を満たしていることを確認してください。

  • KMS キーにアクセスできます。KMS キーの作成については、「KMS キーの作成」を参照してください。

  • KMS キーには、次のアクセス許可を許可するキーポリシーがアタッチされています。

    • ゲートウェイサービスロールが次のアクションを実行できるようにするアクセス許可。

      • kms:CreateGrant

      • kms:DescribeKey

      • kms:Decrypt

      • kms:GenerateDataKey

    • (ゲートウェイの CloudWatch Logs を有効にする場合) CloudWatch Logs サービスがキーを復号できるようにするアクセス許可。

      KMS キーの IAM アクセス許可の制御の詳細については、「 Key Management Service デベロッパーガイド」の「KMS キーのアクセスとアクセス許可」を参照してください。 AWS

キーポリシーの例

次のポリシー例では、ゲートウェイを暗号化し、暗号化されたゲートウェイを使用するために必要なアクセス許可を提供します。4 番目のステートメントでは、暗号化されたゲートウェイのキー使用状況の CloudWatch Logs ログ記録も許可します。このポリシーには、セキュリティのベストプラクティスに準拠するための条件キーが含まれています。

{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowServiceRoleDescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/GatewayServiceRole" }, "Action": [ "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "bedrock-agentcore.us-east-1.amazonaws.com" ] } } }, { "Sid": "AllowServiceRoleDecryptKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/GatewayServiceRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "bedrock-agentcore.us-east-1.amazonaws.com" ] }, "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore-gateway:arn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/GatewayId" } } }, { "Sid": "AllowServiceRoleCreateGrant", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/GatewayServiceRole" }, "Action": "kms:CreateGrant", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": [ "bedrock-agentcore.us-east-1.amazonaws.com" ], "kms:GrantConstraintType": "EncryptionContextSubset" }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt", "GenerateDataKey" ] }, "StringLike": { "kms:EncryptionContext:aws:bedrock-agentcore-gateway:arn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/GatewayId" } } }, { "Sid": "AllowKMSDecryptionLogging", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:SourceArn": "arn:aws:logs:us-east-1:123456789012:*" } } } ] }

ポリシーには、次のステートメントが含まれています。

  • AllowServiceRoleDescribeKKey – AgentCore サービスを介してリクエストが行われた場合に、指定されたプリンシパルがキーを記述できるようにします。次のフィールドの値を置き換えます。

    • PrincipalAWS値をゲートウェイサービスロールの実際の ARN に置き換えます。

    • Conditionkms:ViaService配列で、us-east-1 を、キーの説明を許可する実際の AWS リージョンに置き換えます。

  • AllowServiceRoleDecryptKey – リクエストが AgentCore サービスを介して行われ、リクエストが行われたゲートウェイの ARN が kmsEncryptionContext:aws:bedrock-agentcore-gateway-arnフィールドの ARN と一致する場合、指定されたプリンシパルがキーを復号できるようにします。以下の値を置き換えます:

    • PrincipalAWS値をゲートウェイサービスロールの実際の ARN に置き換えます。

    • Condition – 以下を実行します。

      • kms:ViaService 配列で、us-east-1 をキーの復号を許可する実際の AWS リージョンに置き換えます。

      • kmsEncryptionContext:aws:bedrock-agentcore-gateway-arn 値をゲートウェイの実際の ARN に置き換えます。

  • AllowServiceRoleCreateGrant – リクエストが AgentCore サービスを介して行われ、リクエストが行われたゲートウェイの ARN が kmsEncryptionContext:aws:bedrock-agentcore-gateway-arnフィールドの ARN と一致する場合、指定されたプリンシパルがキーの許可を作成できるようにします。以下の値を置き換えます:

    • PrincipalAWS値をゲートウェイサービスロールの実際の ARN に置き換えます。

    • Condition – 以下を実行します。

      • kms:ViaService 配列で、us-east-1 をキーの復号を許可する実際の AWS リージョンに置き換えます。

      • kmsEncryptionContext:aws:bedrock-agentcore-gateway-arn 値をゲートウェイの実際の ARN に置き換えます (許可する場合)。

  • AllowKMSDecryptionLogging – 指定されたプリンシパルが CloudWatch Logs を通じてキーの使用状況を監査するために、カスタマーマネージド KMS キーを復号できるようにします。kms:EncryptionContext:SourceArn 値で、us-east-1 および 123456789012 の値を実際の AWS リージョンとアカウント ID に置き換えます。

Console
  1. ======= カスタマー管理の KMS キーを使用してゲートウェイを暗号化するには

  2. 「Amazon Bedrock AgentCore ゲートウェイの作成」のコンソールステップに従い、KMS キー - オプションセクションを展開します。

  3. 暗号化設定をカスタマイズ (詳細) を選択します。

  4. KMS キーを選択し、その詳細を確認します。

    注記

    KMS キーが表示されない場合は、AgentCore ゲートウェイを暗号化するための前提条件を確認し、アクセス許可が正しく設定されていることを確認します。

  5. 残りのコンソールステップを続行します。

CLI
  1. CLI を使用してゲートウェイを暗号化するには、AgentCore コントロールプレーンクライアントを介して次のいずれかのリクエストを送信するkms-key-arnときに、 AWS を含めます。

    • create-gateway

    • update-gateway

      次の例は、 kms-key-arn引数を使用して指定された KMS AWS キーを使用してゲートウェイを作成する CLI リクエストの例を示しています。

      aws bedrock-agentcore-control create-gateway \ --name "MyGateway" \ --role-arn "arn:aws:iam::123456789012:role/GatewayRole" \ --protocol-type "MCP" \ --kms-key-arn "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" \ --authorizer-type "CUSTOM_JWT" \ --authorizer-configuration '{ "customJWTAuthorizer": { "allowedAudience": ["myAudience"], "discoveryUrl": "https://example.com/.well-known/openid-configuration" } }'
Python (Boto3)
  1. Python SDK (Boto3) AWS を使用してゲートウェイを暗号化するには、AgentCore コントロールプレーンクライアントを介して次のいずれかのリクエストを送信するkms-key-arnときに を含めます。

    • create_gateway

    • update_gateway

      次の例は、 kmsKeyArn引数を使用して指定された KMS AWS キーを使用してゲートウェイを作成する Boto3 リクエストの例を示しています。

      import boto3 # Create client agentcore_client = boto3.client('bedrock-agentcore-control') # Create gateway and specify gateway = agentcore_client.create_gateway( name="MyGateway", roleArn="arn:aws:iam::123456789012:role/GatewayRole", protocolType="MCP", kmsKeyArn="arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" authorizerType="CUSTOM_JWT", authorizerConfiguration= { "customJWTAuthorizer": { "allowedAudience": ["myAudience"], "discoveryUrl": "https://example.com/.well-known/openid-configuration" } } )