セキュリティとアクセス制御について
ハーネスは、設定によって接続された他の AgentCore と同じセキュリティプリミティブを提供します。
-
分離された実行。すべてのセッションは、AgentCore ランタイムの独自の Firecracker microVM で実行されます。共有状態なし、共有ファイルシステムなし。
-
IAM 実行ロール。ハーネスは、所有する IAM ロールを引き受け、Bedrock、ECR、CloudWatch、およびそれがタッチする AgentCore プリミティブを含めるように設定できます。以下のサンプル実行ロールポリシーを参照してください。
-
IAM アクセス許可モデル。ハーネス APIsハーネスリソースと基盤となる AgentCore ランタイムリソースの両方に対するアクセス許可が必要です。たとえば、 を呼び出すには、ハーネス ARN に対する
bedrock-agentcore:InvokeHarnessと の両方のbedrock-agentcore:InvokeAgentRuntimeアクセス許可InvokeHarnessが必要です。コントロールプレーンオペレーションにも同じパターンが適用されます。UpdateHarnessには が必要でbedrock-agentcore:UpdateAgentRuntime、DeleteHarnessにはbedrock-agentcore:DeleteAgentRuntimeが必要です。完全なリストについては、「実行ロールポリシー」を参照してください。 -
インバウンド OAuth サポート。JWT 設定ハーネスリソースでは、発信者がハーネスを呼び出す前に、設定済み ID プロバイダーによって発行された有効な JWT を提示する必要があります。AgentCore Identity は、エンドユーザー ID をエージェントにスレッドするため、ダウンストリームツールは、共有サービスアカウントではなく、スコープ付きのユーザー認証情報を使用して APIs を呼び出すことができます。
-
VPC。ハーネスセッションを VPC に接続して、内部リソースにプライベートアクセスします。
-
Gateway のポリシー。AgentCore Gateway を介してツールが提供されると、Cedar ベースのポリシーを設定してすべての呼び出しをゲートできます。どのユーザーがどのツールを呼び出すか、どの条件で、どの引数で呼び出すか。
注記
SigV4 とユーザーごとの ID。発信者が SigV4 (AWS IAM) で認証する場合、ハーネスはユーザーごとの ID をダウンストリームツール呼び出しに伝達しません。つまり、ユーザースコープの OAuth トークンストレージやトークン交換on-behalf-ofなど、AgentCore Identity Token Vault のユーザーごとの認証情報スコープ機能は、発信者が OAuth インバウンドパスを介してベアラー JWT で認証する場合にのみ使用できます。ユースケースでダウンストリームツールのユーザーごとの認証情報スコープが必要な場合は、ハーネスでインバウンド OAuth を設定します。ユーザーごとの ID に対する SigV4 サポートは、今後のリリースが予定されています。
責任共有モデル
ハーネスは AgentCore ランタイム上に構築されています。セキュリティ境界は同じです。IAM 認証または JWT 認証と microVM 分離の組み合わせです。ハーネスは、発信者とmicroVM の間にセキュリティレイヤーを追加しません。
AWS 責任:
-
ハードウェアレベルでの安全なインフラストラクチャとmicroVM の分離
-
OS カーネルパッチ適用
-
直接コードデプロイの言語ランタイムパッチ適用
-
ネットワークインフラストラクチャのセキュリティ
-
サービスの可用性と耐障害性
お客様の責任:
-
エージェントコードのセキュリティと依存関係の管理
-
IAM アクセスコントロールとリソースポリシー
-
ランタイムセッションで実行されるコマンドのセキュリティ
-
Session-to-userマッピングの適用
-
入力の検証とプロンプトインジェクションの防止 - すべての
InvokeHarness入力の検証を含む (「」を参照信頼境界と入力の検証) -
モデル設定の検証 -
additionalParams、apiBase、modelIdフィールドなど (「」を参照モデル設定パラメータ) -
スキルと指示のソース - スキルに使用される S3 バケット、Git リポジトリ、URL URLs「」を参照スキルと手順)。
-
コンテナイメージの更新 (コンテナデプロイ用) - 最新の安全なベースイメージを使用して定期的に再構築する
-
ネットワーク設定 (セキュリティグループ、VPC エンドポイント、ルートテーブル)
AgentCore Runtime の責任共有モデルの詳細については、AgentCore Runtime のセキュリティのベストプラクティス」を参照してください。
信頼境界と入力の検証
すべての InvokeHarnessおよび InvokeAgentRuntimeCommand入力が信頼されます。IAM または JWT 認証および認可ゲートを渡すプリンシパルは、ハーネスに設定されているツールや機能を含め、完全な microVM セッションにアクセスできます。ハーネスは、入力をサニタイズしたり、コンテンツブロックをフィルタリングしたり、動作制約を適用したりしません。
完全に信頼していないエンドユーザー (従業員、外部コンシューマー、またはサードパーティーの統合) にハーネスを公開する場合は、 に渡す前に、アプリケーションレイヤー内のメッセージを検証してサニタイズしますInvokeHarness。これには、ディスパッチしないコンテンツブロックタイプまたはモデル設定フィールドの削除が含まれます。これは、Lambda、Amazon API Gateway、Amazon SQS など、承認された発信者からのペイロードを受け入れるサービスと同じパターンです。
モデル設定パラメータ
の modelフィールドは、Bedrock、OpenAI、および LiteLLM 設定InvokeHarnessを受け入れadditionalParamsます。これらのパラメータは、基盤となるモデルプロバイダーにそのまま渡されます。ハーネスは、これらのパラメータを検証、フィルタリング、または制限しません。
を設定できる発信者は、additionalParams次のことができます。
-
任意のエンドポイントにリクエストをリダイレクトする - LiteLLM の
aws_bedrock_runtime_endpointパラメータは Bedrock エンドポイント URL を上書きします。発信者は、SigV4 署名とセッション認証情報を含む署名付きリクエストを、信頼モデル設定で指定されたエンドポイントにルーティングできます。 -
HTTP ヘッダーの上書き - OpenAI の
extra_headersパラメータは、 ヘッダーを含むモデルプロバイダーへのアウトバウンドリクエストで HTTPAuthorizationヘッダーを挿入または上書きします。 -
IAM ロールの引き受けを試みる - LiteLLM の
aws_role_nameパラメータは、モデルプロバイダーを呼び出す前に、ランタイムに別の IAM ロールを引き受けるよう指示します。試行は、実行ロールのsts:AssumeRoleアクセス許可に基づいて成功または失敗します。 -
ターゲットモデルまたはリージョンを変更する -
modelIdおよびapiBaseフィールドは、推論を別のモデル、リージョン、またはプロバイダーに完全にリダイレクトできます。
アプリケーションが完全に信頼していない発信者にInvokeHarness機能を公開する場合は、アプリケーションレイヤーに入力検証を実装することを検討してください。以下に例を示します。
-
リクエストを転送する前に
modelフィールドをストライピングまたは許可リストに登録する -
additionalParams、、apiBaseおよび の検証または削除modelId -
ロールの切り替えが必要ない場合の実行ロール
sts:AssumeRoleの拒否 -
VPC セキュリティグループを使用したハーネスネットワークアクセスのスコープ
スキルと手順
スキルは、呼び出し時にハーネスが Amazon S3 または Git から取得し、エージェントのコンテキストに挿入するマークダウンとスクリプトのバンドルです。ハーネスは、すべてのスキルコンテンツを信頼できる入力として扱います。エージェントに提供する前に、コンテンツまたはスキルのソースを検証、サニタイズ、または検査しません。
以下の責任はユーザーにあります:
-
スキルソース (S3 バケット、Git リポジトリ、URLs) が信頼され、アクセスコントロールされていることを確認する
-
ハーネスで設定する前に、マークダウン手順や埋め込みスクリプトを含むスキルコンテンツを確認する
-
呼び出しごとに
skillsフィールドを上書きできるプリンシパルの制御。呼び出し元はハーネスを任意の S3 または Git ソースにポイントできるためです。
スキルはInvokeHarness呼び出しごとに上書きできます。アプリケーションが発信者提供の入力を に転送する場合InvokeHarness、発信者は任意の指示またはスクリプトを含む独自のスキルソースを提供できます。緩和策の例は次のとおりです。
-
発信者が提供するリクエストから
skillsフィールドをストライピングまたは無視する -
許可された S3 プレフィックスまたは Git リポジトリの許可リスト
オブザーバビリティとトレースの相関関係
ハーネスは相関識別子をダウンストリームの AgentCore プリミティブ (ゲートウェイ、メモリ、コードインタープリタ、ブラウザ) に自動的に伝達し、CloudWatch で統合トレースビューを有効にします。これらの識別子はオブザーバビリティにのみ使用されます。認可やデータアクセスの決定に使用されることはありません。
ネットワーク設定
デフォルトでは、ハーネスセッションはパブリックネットワークで実行されます。プライベートリソース (データベース、内部 APIs、プライベートサブネット) にアクセスするには、VPC にハーネスをデプロイします。
例
重要
ハーネスは、各セッションの開始時に Amazon ECR Public からアプリケーションコンテナをプルします。VPC モードで実行する場合、VPC は へのアウトバウンドアクセスを許可する必要がありますpublic.ecr.aws。Amazon ECR Public は VPC エンドポイントをサポートしていないため、VPC にはインターネットゲートウェイへのルートを持つ NAT ゲートウェイが必要です。この接続が利用できない場合、イメージのプルタイムアウトによりセッションは開始されません。
その他のネットワーク設定ガイダンスについては、AgentCore ランタイムの設定」および「組み込みツール VPC 設定」を参照してください。PrivateLink 経由のインバウンド API 接続については、「VPC インターフェイスエンドポイント」を参照してください。
インバウンド OAuth
発信者がハーネスを呼び出す前に、設定された ID プロバイダーによって発行された有効な JWT を提示する必要があります。AgentCore Identity は、エンドユーザー ID をエージェントにスレッドするため、ダウンストリームツールは、共有サービスアカウントではなく、スコープ付きのユーザー認証情報を使用して APIs を呼び出すことができます。
例
詳細: AgentCore Identity - インバウンド JWT オーソライザー - アウトバウンド認証情報
ゲートウェイポリシー
AgentCore Gateway を介してツールが提供されると、Cedar ベースのポリシーはすべての呼び出しをゲートします。どのユーザーがどのツールを呼び出すか、どの条件の下でどの引数で呼び出すか。
詳細: AgentCore ポリシー - 一般的なパターン
実行ロールポリシー
ハーネスは、指定した IAM 実行ロールを引き受けます。ロールの信頼ポリシーは、AgentCore サービスプリンシパルがそれを引き受けることを許可する必要があります。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "bedrock-agentcore.amazonaws.com"}, "Action": "sts:AssumeRole" }] }
発信者に必要な IAM アクセス許可
ハーネス APIsハーネスリソースと基盤となる AgentCore ランタイム、およびオプションの AgentCore メモリリソースの両方に対するアクセス許可が必要です。次の表に、各 API に必要なアクションを示します。
| API | 必須 IAM アクション |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ほとんどのアクションでは、リソーススコープとしてハーネス ARN を使用します: arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id>。エンドポイントアクションは、ハーネスエンドポイント ARN も使用します。 arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id>/harness-endpoint/<endpointName>
GetHarnessEndpoint、UpdateHarnessEndpoint、および DeleteHarnessEndpointアクションには、ハーネス ARN とエンドポイント ARN の両方が必要です。 では、ハーネス ARN のみCreateHarnessEndpointが必要です。エンドポイントはまだ存在しないため、エンドポイント ARN は必要ありません。カスタムエンドポイントを呼び出し、ハーネス ARN InvokeHarnessとエンドポイント ARN の両方InvokeAgentRuntimeCommandを必要とする場合。
サンプル実行ロールポリシー
{ "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockModelInvocation", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:*::foundation-model/*", "arn:aws:bedrock:<region>:<accountId>:*" ] }, { "Sid": "EcrPublicTokenAccess", "Effect": "Allow", "Action": [ "ecr-public:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "StsForEcrPublicPull", "Effect": "Allow", "Action": [ "sts:GetServiceBearerToken" ], "Resource": "*" }, { "Sid": "XRayTracingAccess", "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": "*" }, { "Sid": "CloudWatchLogsGroup", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*" }, { "Sid": "CloudWatchLogsDescribeGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:*" }, { "Sid": "CloudWatchLogsStream", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*" }, { "Sid": "CloudWatchMetricsPublish", "Effect": "Allow", "Resource": "*", "Action": "cloudwatch:PutMetricData", "Condition": { "StringEquals": { "cloudwatch:namespace": "bedrock-agentcore" } } }, { "Sid": "AgentCoreWorkloadIdentity", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", "bedrock-agentcore:GetWorkloadAccessTokenForJWT" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreBrowserDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:browser/*" }, { "Sid": "AgentCoreCodeInterpreterDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:code-interpreter/*" } ] }
AgentCore CLI は、ハーネスプロジェクトを足場すると、これらのアクセス許可を持つロールを自動的に作成します。上記のポリシーは、自分でロールを作成する場合を対象としています。
注記
上記のBedrockModelInvocationサンプルステートメントでは、アカウント内のすべてのリージョンとすべての Bedrock リソースにわたるすべての基盤モデルの呼び出しを許可します。これをスコープダウンするには、リソース ARNs を特定の推論プロファイルに置き換えます。これにより、モデルとリージョン間で 1 つの ARN でリクエストをルーティングできます。例: 許可されたすべてのリージョン とarn:aws:bedrock:<destination_regions>:<accountId>:inference-profile/<profileId>ペアになっていますarn:aws:bedrock:<region>:<accountId>:foundation-model/<modelId>。
本番ワークロードでは、 を使用するのではなく、ハーネスに必要な特定の ARNs にResource値を絞り込みます"*"。
オプション機能の追加アクセス許可
以下は、ハーネスが使用する機能に基づいて実行ロールに追加できるポリシーの例です。最小特権の原則に従う - 推論に必要な特定のツールと認証情報のみをハーネスエージェントに付与します。プレースホルダーの定義プレースホルダーリファレンスについては、「」を参照してください。
プライベート ECR アクセス (カスタムコンテナイメージ)
ハーネスがカスタムコンテナのプライベート ECR イメージを使用する場合に、このポリシーを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECRImageAccess", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:<ecrRegion>:<ecrAccountId>:repository/<ecrRepoName>" }, { "Sid": "ECRTokenAccess", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }
AgentCore メモリ
ハーネスが顧客所有のメモリインスタンスを使用している場合は、このポリシーを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreMemory", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:memory/<memoryId>" } ] }
AgentCore ブラウザ (カスタム)
ハーネスが顧客所有のカスタムブラウザリソースを使用する場合に、このポリシーを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreBrowserCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:browser-custom/<browserCustomId>" } ] }
AgentCore コードインタープリタ (カスタム)
ハーネスが顧客所有のカスタムコードインタプリタを使用する場合に、このポリシーを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreCodeInterpreterCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:code-interpreter-custom/<codeInterpreterCustomId>" } ] }
AgentCore ゲートウェイ
ハーネスが SigV4 インバウンド認証で設定されたゲートウェイを使用している場合は、このポリシーを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreGatewayAccess", "Effect": "Allow", "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:gateway/<gatewayId>" } ] }
Amazon S3 と Git のスキルソース
ハーネスが Amazon S3 ソースからスキルを取得するときに、このポリシーを追加します。実行ロールは、バケットプレフィックスの下にあるスキルオブジェクトを一覧表示してダウンロードします。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreSkillS3Access", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<skillBucket>", "arn:aws:s3:::<skillBucket>/*" ] } ] }
プライベート Git リポジトリからスキルを取得するために、ハーネスは API キー認証情報プロバイダーから個人用アクセストークンを読み取ります。トークンを保持する認証情報プロバイダーに、以下に示す API キー認証情報プロバイダーポリシーを付与します。
API キー認証情報プロバイダー (OpenAI、Gemini、LiteLLM、または MCP ヘッダー ARN リファレンス)
ハーネスが OpenAI、Gemini、LiteLLM などのモデルプロバイダーに API キー認証情報プロバイダーを使用している場合は、このポリシーを追加します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreApiKeyTokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreApiKeyTokenVaultPerKey", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/apikeycredentialprovider/<apiKeyName>" }, { "Sid": "AgentCoreApiKeySecret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/apikey/<apiKeyName>-*" } ] }
OAuth2 認証情報プロバイダー (OAuth で保護されたゲートウェイ)
ハーネスが OAuth で保護されたゲートウェイツールに OAuth2 認証情報プロバイダーを使用する場合に、このポリシーを追加します。 OAuth
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreOAuth2TokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreOAuth2TokenVaultPerProvider", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/oauth2credentialprovider/<oauthProviderName>" }, { "Sid": "AgentCoreOAuth2Secret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/oauth2/<oauthProviderName>-*" } ] }
プレースホルダーリファレンス
上記のポリシーの次のプレースホルダーを、環境に固有の値に置き換えます。
| Placeholder | 説明 |
|---|---|
|
|
リソースがデプロイされている AWS リージョン。 |
|
|
AWS アカウント ID。 |
|
|
ハーネスエージェントの名前。 |
|
|
AgentCore メモリリソースの ID。 |
|
|
カスタムブラウザリソースの ID。 |
|
|
カスタムコードインタープリタリソースの ID。 |
|
|
AgentCore Gateway リソースの ID。 |
|
|
API キー認証情報プロバイダーの名前。 |
|
|
スキルファイルを保持する S3 バケットの名前。 |
|
|
OAuth2 認証情報プロバイダーの名前。 |
|
|
ECR リポジトリがホストされているリージョン。 |
|
|
ECR リポジトリを所有する AWS アカウント ID。 |
|
|
ECR リポジトリの名前。 |
注記
Secrets Manager リソース-*の末尾には、Secrets Manager がシークレット ARNs に追加するランダムなサフィックスが含まれます。
関連トピック
-
ツール - ツールタイプと allowedTools パターン
-
環境とファイルシステム - カスタム環境と ECR アクセス許可
-
制限によるコストの制御 - コストを制御するための実行制限