View a markdown version of this page

ランタイムインスタンスのセキュリティモデルとアクセス許可 - Amazon Bedrock AgentCore

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

ランタイムインスタンスのセキュリティモデルとアクセス許可

インスタンスコンピューティングタイプでエージェントをホストすると、エージェントは自分の AWS アカウントの Amazon EC2 インスタンスで実行されます。これにより、サーバーレスmicroVM コンピューティングタイプと比較して、責任共有モデルが変更されます。インスタンスはアカウントと VPC で実行され、エージェントはランタイム実行ロールのアクセス許可を使用して実行され、そのインスタンス上のデータはアカウントに残ります。このトピックでは、インスタンスのセキュリティモデル、関連するアクセス許可、マルチテナントデプロイで従うべきプラクティスについて説明します。

このトピックでは、AgentCore Runtime のセキュリティのベストプラクティスのランタイム全体のガイダンスを補足します。IAM 最小特権、認証、暗号化、ネットワークセキュリティ、監査などのプラクティスは、インスタンスにも適用されます。セッションにアタッチされた EBS ボリュームの暗号化方法については、「ランタイムインスタンスの保管時の暗号化」を参照してください。

セキュリティモデル

  • インスタンスは アカウントにあります。キャパシティープロバイダーによって起動された EC2 インスタンスは、Amazon EC2 マネージドインスタンスとして アカウントと VPC で実行されます。アカウントの CloudTrail と VPC フローログを使用して、それらを検査したり、独自のコントロールを適用したり、アクティビティを監査したりできます。

  • インスタンス上のエージェントは互いに分離されません — 複数のエージェントを同じインスタンスで実行し、そのファイルシステムを共有できます。エージェントは、コンテナまたは直接デプロイされたエージェントでインスタンス上のプロセスとしてインスタンス上で実行されます。どちらも、同じインスタンス上のワークロード間のセキュリティ境界を提供しません。インスタンスを共有するすべてのエージェントは相互に信頼されている必要があります。

  • セッションは分離ユニット — キャパシティープロバイダーとセッション ID の組み合わせによって識別されるセッションは、1 つの EC2 インスタンス (1:1) にマッピングされます。2 つの異なるキャパシティープロバイダーの同じセッション ID は、2 つの異なるインスタンスの 2 つの異なるセッションを指します。互いに分離されたままにするエージェントは、セッションを共有しないでください。

  • 認証情報供給 — AgentCore は、インスタンスで実行されているエージェントに実行ロールの認証情報を提供し、定期的に更新します。インスタンスで実行されているコードは、使用可能な認証情報を読み取ることができます。各ランタイムの実行ロールを、エージェントが必要とする最小限の権限にスコープします。詳細については、「認証情報管理」を参照してください。

  • アカウントコントロールが適用されます — インスタンスはアカウントで実行されるため、 AWS Organizations サービスコントロールポリシー (SCPs)、アクセス許可の境界、VPC コントロールはアカウントで実行されるアクションを管理します。AgentCore は、提供または承認するインフラストラクチャロールを通じて動作し、IAM 条件 (特定の VPCs、サブネット、インスタンスタイプなど) でスコープします。ただし、リソースの削除とクリーンアップに使用される AgentCore サービスにリンクされたロールは例外であり、SCPsこれは、 がサービスにリンクされたロールを一般的に AWS 扱う方法と一致します。

  • データレジデンシー — エージェントは、指定した VPC、サブネット、アカウント、リージョンで実行され、セッションデータと EBS ボリュームはアカウントに残ります。

必要なアクセス許可

インスタンスでエージェントをホストするには、エージェントコードにランタイムアクセス許可を付与するエージェントランタイム実行ロールに加えて、次のロールが必要です。

  • インスタンスプロファイル — EC2 インスタンスにアタッチされます。AgentCore はこれを使用してインスタンスからシステムログを収集します。エージェントコードにアクセス許可を付与しません (エージェントランタイム実行ロールが付与します)。

  • インフラストラクチャロール — AgentCore はこのロールを引き受けて、ユーザーに代わってアカウントの EC2 インスタンスをプロビジョニングおよび管理します。インスタンスとそのネットワークインターフェイスのネットワークを起動、タグ付け、設定します。このロールは、アカウント内のコンピューティングを管理するアクセス許可を AgentCore に付与するため、ワークロードに必要な最小特権の範囲を設定し、IAM 条件を使用して、必要に応じて特定の VPCs、サブネット、またはインスタンスタイプに制限します。

ロールの設定手順については、「インスタンスの使用を開始する」を参照してください。

セッションルーティングとマルチテナント分離

AgentCore Runtime は、個々のセッションではなく、エージェントランタイムリソース ARN に対する呼び出しを許可します。

エージェントを呼び出すときに を指定するとruntimeSessionId、AgentCore はそのセッション ID の形式を検証しますが、呼び出し元の ID に属していることは検証しません。これは、マルチテナントデプロイにとって重要な結果です。

重要

単一の IAM プリンシパルが複数のエンドユーザーに代わって を呼び出すデプロイでは、プラットフォームは呼び出し元のユーザーに がsessionId属していることを強制しません。ユーザーsessionIdごとにバックエンドが正しい を渡すことを確認する責任があります。

複数のエンドユーザーが同じ IAM プリンシパルを共有し (たとえば、すべてのユーザーInvokeAgentRuntimeに対して を呼び出す単一のバックエンド実行ロール)、バックエンドがユーザーにセッションをバインドしない場合、認証されたユーザーは別のユーザーのセッション ID を指定し、そのユーザーのセッションにリクエストをルーティングできます。以下のプラクティスは、これを軽減します。

バックエンドでsession-to-userバインディングを適用する

アプリケーションレベルのsession-to-userバインディングをバックエンドに実装します。アプリケーション内の各エンドユーザーとそのセッション IDs 間のマッピングを維持し、あるユーザーのリクエストを別のユーザーの で発行できないようにしますruntimeSessionId。を認証されたエンドユーザーから派生したサーバー側の値runtimeSessionIdとして扱います。信頼できないクライアント入力から直接受け入れないでください。共有プリンシパル、マルチテナントデプロイの場合、バックエンドのアプリケーションレベルのバインディングは、あるユーザーがリクエストを別のユーザーのセッションにルーティングできないようにするコントロールです。

高セキュリティのマルチテナントデプロイに個別の IAM プリンシパルを使用する

高セキュリティのマルチテナントデプロイでは、単一の共有プリンシパルではなく、エンドユーザーごと (またはテナントグループごと) に個別の IAM プリンシパルを使用してエージェントを呼び出します。各ユーザーまたはテナントが独自のプリンシパルを介して を呼び出すと、IAM 自体がセッションスコープを適用します。プリンシパルはポリシーで許可されているランタイムのみを呼び出すことができ、セッションルーティングリスクの共有プリンシパルクラスが削除されます。これは最も強力なコントロールであり、デプロイがユーザーごとまたはテナントごとのプリンシパルをサポートできる場合は常に推奨されます。

監査とモニタリング

監査を使用して、セッションルーティングの偵察と異常なアクセスを検出します。

  • プリンシパルとセッション ID を関連付ける — AWS CloudTrail は、認証されたプリンシパルとターゲットの両方を同じInvokeAgentRuntimeイベントsessionIdに記録します。これを使用して、別のプリンシパルによって作成されたセッションへのプリンシパルルーティングを検出します。

  • ランタイム全体の監査プラクティスを適用する — CloudTrail と VPC フローログを有効にし、リクエスト IDs を使用してログを関連付け、監査とモニタリングの説明に従ってメトリクスフィルターとアラームを設定します。

ベストプラクティス

  • ワークロードを信頼レベル別に分離 — 相互に信頼されていないワークロードには異なるセッションを使用します。信頼できないエージェントを同じセッションに共同配置しないでください。

  • すべてのロールに最小権限を適用する — エージェントランタイム実行ロールとインフラストラクチャロールを、それぞれが必要とするアクションとリソースのみにスコープします。

  • バックエンドのユーザーにセッションをバインドする — 1 つのプリンシパルが複数のエンドユーザーにサービスを提供するデプロイでは、アプリケーションレイヤーでsession-to-userバインドを適用します。

  • ユーザーごとまたはテナントごとのプリンシパルを優先する — 可能であれば、IAM がセッションスコープを適用できるように、個別の IAM プリンシパルを通じて を呼び出します。

  • クロスプリンシパルルーティングのモニタリング — CloudTrail を使用して、別のプリンシパルによって作成されたセッションへのプリンシパルルーティングなどのルーティング異常を検出します。

インスタンスにも適用されるランタイム全体のセキュリティガイダンスについては、AgentCore ランタイムのセキュリティのベストプラクティス」を参照してください。