翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
有向アクションの使用
AWS DevOps Agent は、オペレーターが明示的に要求したときに、接続されたサービスと AWS アカウントに対して動作できます。例えば、インシデントを調査するオペレーターは、リソースの状態を記述するようにエージェントに要求できます。適切なアクセス許可と承認があれば、オペレーターはエージェントに問題を直接修正するよう依頼することもできます。
エージェントは 2 種類のオペレーションを区別します。
読み取り専用アクション: 接続されたサービスと AWS アカウントからのみ情報を読み取るオペレーション。これらはデフォルトで使用できます。
指示されたアクション: リソースを作成、変更、またはその他の方法で変更するオペレーション。指示されたアクションは昇格されます。デフォルトでは無効になっており、明示的なレイヤードオプトインとアクションごとのオペレーターの承認が必要です。
有向アクションの安全モデルは、多層防御です。この機能はデフォルトで無効になっています。独立したレイヤーを通じてオプトインします。エージェントスペースでの有向アクションの有効化、アカウントごとの IAM ロールの登録、各ツールの分類です。すべての指示されたアクションには、実行時にオペレーターの承認が必要です。すべての承認と結果のアクションは、 AWS CloudTrail の承認演算子に起因します。
AWS リソースに対するアクションの場合、エージェントは、付与するアクセス許可に関係なく、呼び出す AWS SDK オペレーションに独自のガードレールを適用します。これらのガードレールの詳細については、「エージェントが実行しないオペレーション」を参照してください。
例: 調査から緩和計画を実行する
この例では、一般的なシナリオのend-to-endエクスペリエンスを示します。オペレーターは、調査の緩和計画、または改善の推奨事項を確認します。オペレーターは、会話を離れずにエージェントに実行するよう求めます。
サイト信頼性エンジニア (SRE) は、チャット内のエージェントに、 からの SSH アクセスを許可するアカウントを探すよう求めます0.0.0.0/0。エージェントは、オープンイングレスルールを持つセキュリティグループを見つけます。緩和策を推奨します。ルールを内部ネットワーク範囲に制限します。演算子はエージェントに適用するよう指示します。
エージェントは変更を提案します。エージェントはセキュリティグループを検査します (読み取り専用アクション)。
0.0.0.0/0ルールを削除し、内部ネットワーク範囲にスコープされたルールを追加することを提案します。この提案では、正確な API オペレーション、ターゲットセキュリティグループ、リスク評価、予想されるブラスト半径、ロールバックステップを特定します。オペレーターは確認して承認します。オペレーションはリソースをミューテーションするため、指示されたアクションです。承認リクエストには、 オペレーションとそのパラメータが表示されます。演算子は、
10.0.0.0/8に絞り込むなどのパラメータを調整したり10.1.0.0/16、リクエストを拒否したりできます。明示的な承認なしには何も実行されません。エージェントは、スコープされた認証情報で実行します。エージェントは、登録された昇格されたロールの認証情報を使用します。認証情報は、承認されたオペレーションとリソースに限定され、制限されたウィンドウに対して有効です。承認を別のオペレーションまたはリソースに再利用することはできません。
アクションは完全に監査可能です。呼び出しは、承認オペレーターに属性付けするソース ID とともに AWS CloudTrail に表示されます。CloudTrail は、承認されたパラメータと実行されたパラメータを記録します。
調査緩和計画または改善推奨事項を検査し、エージェントにステップの実行を求める場合も、同じフローが適用されます。エージェントはステップを特定の提案されたオペレーションに変換し、行動する前に承認をリクエストします。
サードパーティー製ツールにも同じフローが適用されます。オペレーターのトリアージアラートノイズは、Grafana アラートルールのしきい値を引き上げるようエージェントに求めます。 AWS DevOps Agent はこのツールをミューテーションとして分類し、チームは統合に対する昇格アクセスを有効にしました。エージェントは、ツールとパラメータを示す承認リクエストを提示します。承認後、エージェントは統合を通じてツールを呼び出します。 AWS DevOps Agent はアクションを承認演算子に属性付けします。
ダイレクトアクションが有効になる前、または昇格されたロールが登録されていない場合でも、エージェントは読み取り専用アクションで調査します。実行可能な変更の代わりに手動修復手順を提供します。
前提条件
有向アクションを使用する前に、以下が必要です。
AWS アカウントまたはサポートされているサードパーティー統合に少なくとも 1 つの関連付けがある AWS DevOps Agent のエージェントスペース。
AWS DevOps エージェントコンソールや API などを使用して、エージェントスペースとその関連付けを更新するアクセス許可。
IAM ロールを作成し、その信頼ポリシーとアクセス許可ポリシーを定義するターゲットアカウントのアクセス許可。 AWS アカウントに対する指示されたアクション。
iam:PassRole自分のアカウントのarn:aws:iam::<account-id>:role/*に対する アクセス許可。 条件キーをiam:PassedToServiceに設定してaidevops.amazonaws.com、関連付けにロールを登録します。より広範なiam:PassRoleグラントもこの要件を満たします。指示されたアクションを承認するオペレーターのエージェントスペースへのアクセス。
エージェントスペースでダイレクトアクションを有効にする
他の昇格された設定を有効にするには、エージェントスペースで指示されたアクションを有効にする必要があります。これは、指示されたアクションの主なコントロールです。無効にした場合、昇格されたロール登録と昇格されたツールオプトインは効果がありません。昇格された設定を登録しようとすると、拒否される可能性があります。
コンソールでの の有効化
AWS DevOps エージェントコンソールを開きます。
エージェントスペースを選択します。
エージェントスペース設定に移動し、指示されたアクションを有効にします。
変更を確認します。
API による の有効化
エージェントスペースの を通じてダイレクトアクションを有効にしますpreferences。このフィールドは、ブール値への設定キーのタイプマップです。これを CreateAgentSpaceと に設定しますUpdateAgentSpace。
次の例では、 CLI AWS でダイレクトアクションを有効にします。
aws devops-agent update-agent-space \ --agent-space-id <your-agent-space-id> \ --preferences elevatedActionsEnabled=true
preferences フィールドの動作は次のとおりです。
preferencesに を指定すると、完全なセットがUpdateAgentSpace置き換えられるため、省略された設定はデフォルトに戻ります。preferencesフィールドを省略すると、現在の値は変更されません。設定はデフォルトで になるため、 の設定
elevatedActionsEnabledはオプションですfalse。不明な設定キーを指定すると、 で失敗します
ValidationException。設定の変更はすぐに有効になり、コンソールの切り替えと同等です。
を呼び出すと現在の
preferencesマップGetAgentSpaceが返され、設定が確認されます。
AWS アカウントの昇格されたロールの登録
関連付けられたアカウントごとに AWS 、オプションで昇格されたロールを登録できます。モニターアカウントとソースアカウントはそれぞれ、昇格されたロール登録をサポートしています。昇格されたロールは、 AWS DevOps Agent がユーザーに代わって指示されたアクションを実行するために引き受けるアカウントの IAM ロールです。ロールを登録するには、関連付け AWS の設定agentElevatedRoleArnで を設定します。
昇格されたロールを登録するときは、次の点に注意してください。
アカウントごとの登録はオプションです。アカウントの昇格されたロールを登録しない場合、そのアカウントでは読み取り専用アクションのみを使用できます。
昇格されたロールは監査しやすい
DevOpsAgent-ElevatedAction-*ように、認識可能な命名規則をお勧めします。サービスには特定の名前は必要ありません。ロールのアクセス許可ポリシーはカスタマー管理です。エージェントが実行できるアクションの範囲を指定します。ロールは、エージェントがアカウントで実行できることの上限を定義します。これはスタンディンググラントではありません。すべての指示されたアクションでは、実行時にオペレータの承認がさらに必要になり、エージェントのセッションはさらに特定の承認されたオペレーションに限定されます。
信頼ポリシーの記述
昇格されたロールは、 AWS DevOps エージェントサービスプリンシパルを信頼する必要があります。検証では、継承ロールパスを実行します。 AWS DevOps Agent は、ロールを引き受けるときに 3 つの STS アクションを使用します。信頼ポリシーでは、sts:AssumeRole、、sts:SetSourceIdentityおよび の 3 つすべてを許可する必要がありますsts:TagSession。sts:SetSourceIdentity または を省略するとsts:TagSession、検証ステータスが であっても、指示されたアクションは認証情報の時間に失敗しますvalid。
次の例は、昇格されたロールの信頼ポリシーを示しています。を AWS アカウント ID 111122223333に、 をエージェントスペースの AWS リージョンus-east-1に置き換えます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "aidevops.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:aidevops:us-east-1:111122223333:agentspace/*" } } } ] }
aws:SourceAccount および aws:SourceArn条件は、混乱した代理問題から保護します。これにより、ロールはユーザー自身のエージェントスペースに代わってのみ引き受けることができます。aws:SourceArn 条件のリージョンは、エージェントスペースのリージョンと一致する必要があります。複数のリージョンでエージェントスペースを操作する場合は、リージョンのワイルドカード (arn:aws:aidevops:*:111122223333:agentspace/*) または特定のエージェントスペース ARN を使用します。
昇格されたロールへのアクセス許可の付与
昇格されたロールのアクセス許可ポリシーは、 AWS DevOps Agent が指示されたアクションを通じてアカウントで実行できる上限を定義します。エージェントはこの上限では動作しません。すべての指示されたアクションには、オペレーターの承認が必要です。承認されたアクションに対して発行された認証情報には、セッションポリシーが適用されます。セッションポリシーは、オペレーターが承認した特定のオペレーションとリソースに絞り込みます。エージェントは、 AWS DevOps Agent が維持するサポートされている IAM AWS アクションの厳選されたリストからのみセッションポリシーを構成します。そのリスト外のアクションをセッションポリシーの一部にすることはできません。リストを参照するには、 AWS DevOps エージェントコンソールで設定ページを開きます。エージェントアクションセクションでサポートされているアクションの表示を選択します。 アクセス許可ポリシーには 2 つのオプションがあります。
オプション 1: AWS 管理ポリシーをアタッチします。 AWS DevOps エージェントは AIDevOpsAgentActionsPolicy 管理ポリシーを提供します。その ARN は arn:aws:iam::aws:policy/AIDevOpsAgentActionsPolicy です。コード形式のポリシードキュメントについては、 AWS 「 マネージドポリシーリファレンスガイド」を参照してください。
管理ポリシーには次の特性があります。
これにより、すべてのリソースに対するすべてのアクションという広範なアクセス許可が付与されます。ID、認証情報、組織管理サービスは除外されます。除外されるサービスは、
account:*、、cognito-identity:*、iam:*、identitystore:*、organizations:*、ram:*rolesanywhere:*sso:*、、および ですsts:*。その結果、ロールは ID を管理したり、それ以上のアクセス権を取得したりすることはできません。これにより、、
account:GetAccountInformation、、account:GetGovCloudAccountInformation、、、account:GetPrimaryEmailaccount:ListRegionsiam:ListRolesorganizations:DescribeEffectivePolicyorganizations:DescribeOrganization、および のサービスから読み取り専用アクションの小さなセットを返すことができますsts:DecodeAuthorizationMessage。これには、上限に delete-class アクションが含まれます。エージェント自体は、ロールのアクセス許可に関係なく、削除クラスのオペレーションを拒否します。エージェントが拒否するオペレーションの詳細については、「エージェントが実行しないオペレーション」を参照してください。
ポリシーは上限のみを定義します。1 つのアクションに対する有効なアクセス許可は、実行時に承認されたオペレーションに絞り込まれます。
オプション 2: カスタマー管理ポリシーを記述する。管理ポリシーよりも厳しい上限が必要な場合は、独自のポリシーを作成します。エージェントがタッチするアクションとリソースを正確にスコープし、ロールにアタッチします。最小特権の原則に従います。オペレーターが承認することを期待するオペレーションから開始し、必要に応じてのみ展開します。ロールが許可しない指示されたアクションは、承認されても実行時に失敗します。
どちらのオプションでも、サービスコントロールポリシー (SCPs) とアクセス許可の境界を使用して、エージェントが実行できる操作をさらに制限できます。これらのコントロールは、アカウントの他のロールと同様に、昇格されたロールに適用されます。エージェントのアクセス範囲の詳細については、「」を参照してくださいAWS アカウントでのエージェントアクセスの制限。
検証ライフサイクル
信頼ポリシーの検証の実行方法は、アカウントタイプによって異なります。
(プライマリ) アカウントをモニタリングします。検証は同期です。 AWS DevOps エージェントは、保存時にロールを検証します。結果は、ページが再ロードされるか、API コールが返すまでに利用できます。 は
validまたは をinvalidすぐにagentElevatedRoleArnStatus反映します。ソース (セカンダリ) アカウント。検証は非同期です。昇格されたロールを登録すると、次のようになります。
関連付けはすぐに登録を受け入れ、
agentElevatedRoleArnStatusとしてレポートしますpending-confirmation。AWS DevOps エージェントは、 assume-role パスを実行してロールを検証します。
検証が成功
validした場合、または失敗invalidした場合、ステータスは に移行します。
ロールは、ステータスが の後にのみ、指示されたアクションに使用されますvalid。
ソースアカウントの場合は、 GetAssociationまたは との関連付けをポーリングListAssociationsし、 agentElevatedRoleArnStatusフィールドを確認します。通常、検証は数分以内に完了します。
エージェントが実行しないオペレーション
付与するアクセス許可に関係なく、エージェントは指示されたアクションとして呼び出す AWS SDK オペレーションに独自のガードレールを適用します。これらのガードレールは、 AWS リソースに対するアクションにのみ適用されます。ツール分類は、代わりにサードパーティーのツールを管理します。ツール分類の詳細については、「サードパーティー統合用のツールの分類」を参照してください。これらのガードレールは、昇格されたロールのポリシーで オペレーションが許可されている場合でも適用されます。オペレーターの承認はそれらを上書きしません。
リソースを削除します。エージェントは、インスタンス、バケット、テーブル、関数、スタックの削除など、削除クラスのオペレーションを拒否します。オペレーターは、独自の認証情報を使用してリソース自体を削除します。
アクセス許可の境界をミューテーションします。エージェントは、IAM アクセス許可の境界を設定または削除するオペレーションを拒否します:
iam:PutRolePermissionsBoundary、iam:DeleteRolePermissionsBoundary、iam:PutUserPermissionsBoundary、iam:DeleteUserPermissionsBoundary。境界は、組織がエージェントを制限するために使用するコントロールであるため、エージェントはそれらを変更できません。が必要です
iam:PassRole。デフォルトでは、エージェントは AWS サービスに IAM ロールを渡すオペレーションをサポートしていません。例としては、インスタンスプロファイルを使用してインスタンスを起動したり、実行ロールを使用して Lambda 関数を作成したりできます。タスクロールを使用してタスクを開始するのも別の例です。ロールを渡すと、サービスがユーザーに代わって行うことを間接的に拡張できます。
これらのオペレーションのいずれかを実行するように指示された場合、エージェントは拒否し、その理由を説明します。可能な場合は、代わりに手動ステップについて説明します。
これらのガードレールは、昇格されたロールのアクセス許可ポリシー、SCPs、昇格されたロールのアクセス許可の境界など、所有するコントロールを補完します。
サードパーティー統合用のツールの分類
サードパーティーと MCP の統合では、エージェントがツールを呼び出すことができるかどうかと、必要な承認をゲートする 3 つのカテゴリのツールが公開されます。 AWS DevOps エージェントは、ネイティブ統合に固定分類を割り当てます。お客様が設定した MCP サーバーに割り当てます。
| 分類 | 意味 | 動作 |
|---|---|---|
READ_ONLY |
ツールは情報のみを読み取ります。 | 読み取り専用アクションとして使用できます。 |
MUTATIVE |
ツールでは、 リソースを作成または変更できます。 | チャットで、指示されたアクションとアクションごとのオペレーターの承認を有効にする必要があります。 |
DESTRUCTIVE |
このツールは、リソースを削除したり、元に戻せずに変更したりできます。 | エージェントはこの分類のツールを呼び出すことはありません。 |
お客様が設定した MCP サーバー
MCP サーバーの関連付け (SigV4 バリアントを含む) ではtoolDetails、エントリのツールごとのリストである を使用してツールを自分で分類します。各エントリには nameと がありますtoolClassification。
各 は、関連付けの有効なツールリストのエントリと完全に一致
nameする必要があります。不一致は登録時に拒否されます。保存済み分類のないツールは、デフォルトで になります
READ_ONLY。MCP サーバーの関連付けを AWS SDK、 CLI、または直接 API AWS コールを介してプログラムで登録または更新し、 を指定しない場合toolDetails、 AWS DevOps エージェントはその関連付けのすべてのツールを として扱いますREAD_ONLY。エージェントは、承認をリクエストせずに読み取り専用ツールを実行します。リソースを作成または変更するツールを実行する前にオペレーターの承認を要求するには、そのツールを明示的に として分類しますMUTATIVE。コンソールでは、検出された各ツールを分類するように求められます。プログラムによる呼び出し元はtoolDetails自身を設定する必要があります。ツール名は 1~128 文字です。関連付けごとに最大 500 個のツールを分類できます。
MCP ツールの接続と許可リストの詳細については、「」を参照してくださいMCP サーバーの接続。
ネイティブ統合 (Datadog、Grafana)
Datadog や Grafana などのネイティブ統合の場合、分類は AWS DevOps エージェントによって修正されます。分類を指定しません。これらの分類を上書きすることはできません。代わりに、ツールエントリのリストenabledElevatedToolsである を通じて で特定のミューテーションツールを選択します。
AWS DevOps エージェントが として分類するツールのみを有効に
MUTATIVEできます。DESTRUCTIVE( などgrafana_delete_alert_rule) として分類されたツールは有効にできません。
指示されたアクションの承認
指示されたアクションはヒューhuman-in-the-loop。エージェントが、リソースをミューテーションするように指示されたオペレーションを決定した場合、そのオペレーションは直接実行されません。代わりに、次のことが発生します。
エージェントは承認をリクエストし、特定のツール、オペレーション、ターゲットリソースをオペレーターに提示します。
オペレーターはリクエストを確認し、承認または拒否します。
承認されると、エージェントは オペレーションを実行します。各承認は、リクエストされた特定のツール、オペレーション、リソースのみを対象としています。制限された時間枠でも有効であり、別のオペレーションやリソースに再利用することはできません。
AWS DevOps Agent は、オペレーターの承認リクエストをチャットでのみ表示します。エージェントが自動調査中などにチャット外で変更ツールを呼び出すと、承認リクエストを提示する代わりに呼び出しは失敗します。 AWS DevOps Agent は承認なしで変更ツールを実行することはありません。
承認とその結果のアクションは、 AWS CloudTrail の承認演算子に起因します。
API の承認フロー
SendMessageは承認リクエストをストリーミングします。リクエストは、再開する割り込み識別子を使用して、ツール、オペレーション、ターゲットリソースを識別します。実行中の例として、オペレーターが Claude などの AI アシスタントで作業しているとします。オペレータは、デッドレターキュー を消去するように要求しますarn:aws:sqs:us-east-1:111122223333:my-app-dlq。Claude は AWS DevOps エージェントSendMessageを呼び出し、レスポンスストリームは、ツールuse_aws、オペレーションsqs:PurgeQueue、キュー ARN、toolUseIdinterruptIdおよびapprovalId識別子を識別する承認リクエストを受け取ります。演算子は、決定を に記録します
UpdateApprovalAction。オペレーターは、確定したスコープで承認するか、オプションの理由で拒否します。ここで Claude はリクエストをオペレータに提示し、action: APPROVEDとツールfinalPatternのUpdateApprovalActionを呼び出しuse_aws、キュー ARNoperationにargumentPinsピン留めsqs:PurgeQueueresource_arnします。確定したスコープはリクエストを絞り込むことができますが、拡張することはできません。
演算子は、承認をシングルユースとしてマークするか、最大 4 時間の再利用ウィンドウを設定します。キューの消去は 1 回限りの操作であるため、オペレーターはこの承認をシングルユース (
singleUse: true、 なし) としてマークしますttlSeconds。クライアントは、決定がアタッチされた状態で
SendMessageを再度呼び出して、一時停止した会話を再開します。この例では、Claude はuserActionResponseを に設定APPROVAL_ACTIONし、toolUseId、、interruptIdapprovalId、およびapprovalActionAPPROVED決定を指定します。DevOps AWS DevOps エージェントはキューを消去します。承認ライフサイクルは、
PENDING、、APPROVED(交換可能)、またはREJECTED(ターミナル) です。APPROVED承認は、使用REDEEMED後に になり、使用REVOKED前に になる場合があります。ここでは、リクエストは、オペレーターが決定PENDINGしている間、決定APPROVED後、エージェントがキューを消去REDEEMEDした後です。
Claude、Slack ボット、カスタムオペレーションクライアントなどの AI アシスタントが を呼び出し、オペレーターに承認リクエストを表示しSendMessage、 との決定を記録しUpdateApprovalAction、 との会話を再開するかどうかにかかわらず、エージェントコンシューマーは同じ方法でこのフローを駆動できますSendMessage。
モニタリングと監査
ロールの検証ステータス –
agentElevatedRoleArnStatusAWS 関連付けを (GetAssociationまたは を介してListAssociations) モニタリングして、昇格されたロールがvalid状態のままであることを確認します。AWS CloudTrail – AWS アカウントで実行される指示されたアクションが CloudTrail に表示されます。引き受けたロールセッションは、アクションを承認演算子に属性付けるソース ID を保持します。すべての指示されたアクションは、それを承認した人間にさかのぼって追跡できます。
トラブルシューティング
登録されたロールは に残りますpending-confirmation。これは、検証が非同期であるソース (セカンダリ) アカウントに適用されます。通常、検証は数分以内に完了します。ステータスが移行しない場合は、ロールが存在することを確認し、ロール ARN を再登録して検証を再度トリガーします。
ロールのステータスは ですinvalid。信頼ポリシーの検証に失敗しました。以下を確認します。
信頼ポリシーは、 AWS DevOps エージェントサービスプリンシパルに名前を付けます。
信頼ポリシーは、 だけでなく、必要なすべての STS アクション (
sts:AssumeRole、sts:SetSourceIdentity、およびsts:TagSession) を許可しますsts:AssumeRole。aws:SourceAccount条件は、エージェントスペースを所有するアカウントと一致します。aws:SourceArn条件のリージョンは、エージェントスペースのリージョンと一致します (またはリージョンワイルドカードを使用します)。
信頼ポリシーを修正し、ロールを再登録します。
ロールのステータスが であっても、指示されたアクションは失敗しますvalid。valid ステータスには、登録時の検証チェックが反映されます。検証後に信頼ポリシーが変更された場合、またはそのaws:SourceArn条件がエージェントスペースとは異なるリージョンに固定されている場合、ライブの assume-role 呼び出しは失敗する可能性があります。上記のチェックリストに照らして信頼ポリシーを確認します。
ValidationException 昇格されたロールを登録する場合。昇格された設定を登録する前に、エージェントスペースで指示されたアクションを有効にする必要があります。エージェントスペースで有向アクションを有効にしてから、ロールを登録します。
の指定時のツール名の不一致エラーtoolDetails。の各名前は、大文字と小文字を含む、関連付けで有効なツールリストのツール名と完全に一致toolDetailsする必要があります。2 つのリストを比較し、不一致があれば修正してから再試行します。