本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用定向行动
AWS DevOps 当运营商明确要求时,代理可以对您的联网服务和 AWS 账户采取行动。例如,调查事件的操作员可以要求代理描述资源的状态。获得适当的权限和批准后,操作员还可以要求代理直接修复问题。
该代理区分了两种操作:
Read-only 操作:仅从您的关联服务和 AWS 账户读取信息的操作。默认情况下,这些都可用。
定向操作:创建、修改或以其他方式改变资源的操作。定向操作已提升:默认情况下它们处于禁用状态,需要明确的分层选择加入以及每项操作的操作员批准。
定向行动的安全模型是深度防御。默认情况下,该功能处于禁用状态。您可以通过独立层选择加入:在代理空间上启用定向操作、注册每个账户的 IAM 角色以及对每个工具进行分类。每项定向行动在执行时都需要操作员的批准。每项批准和由此产生的行动均归因于中批准的运营商 AWS CloudTrail。
对于针对 AWS 资源的操作,代理会对其调用的 AWS SDK 操作实施自己的保护措施,这与您授予的权限无关。有关这些护栏的更多信息,请参阅代理不执行的操作。
示例:执行调查中的缓解计划
此示例显示了常见场景的端到端体验。操作员审查调查的缓解计划或改进建议。操作员要求代理在不离开谈话的情况下执行此操作。
站点可靠性工程师 (SRE) 要求聊天中的代理查找任何允许通过 SSH 访问的帐户0.0.0.0/0。代理找到具有开放入口规则的安全组。它建议采取缓解措施:将规则限制在内部网络范围内。操作员告诉代理人使用它。
代理人提出变更。代理检查安全组(只读操作)。它建议删除该
0.0.0.0/0规则并添加一个范围为内部网络范围的规则。该提案确定了确切的API操作、目标安全组、风险评估、预期的爆炸半径和回滚步骤。运营商审查并批准。该操作会改变资源,因此它是一种定向操作。批准请求显示了操作及其参数。操作员可以调整参数,例如缩小范围
10.0.0.0/8或拒绝请求。10.1.0.0/16未经明确批准,任何事情都不会执行。代理在限定范围的凭据下执行。代理使用已注册的提升角色的证书。凭证的范围仅限于经批准的操作和资源,并且在限定窗口内有效。该批准不能重复用于其他操作或资源。
该操作完全可审计。该呼叫 AWS CloudTrail 以来源身份出现,该身份将其归因于批准的接线员。 CloudTrail 记录批准和执行的参数。
当您检查任何调查缓解计划或改进建议并要求代理执行步骤时,同样的流程也适用。代理商将该步骤转化为具体的拟议行动,并在采取行动之前请求批准。
同样的流程也适用于第三方工具。对警报噪音进行分类的操作员要求代理提高 Grafana 警报规则的阈值。 AWS DevOps 代理将此工具归类为变异工具,团队启用了该工具以提高集成访问权限。代理提交一份显示工具和参数的批准请求。批准后,代理通过集成调用该工具。 AWS DevOps 代理将操作归因于批准操作员。
在启用定向操作之前,或者没有注册的高级角色,代理仍会使用只读操作进行调查。它提供手动修复步骤,而不是可执行的更改。
先决条件
在使用定向操作之前,需要满足以下条件:
Agent 中的 AWS DevOps 代理空间与 AWS 帐户或支持的第三方集成有至少一个关联。
更新代理空间及其关联的权限,例如通过 AWS DevOps 代理控制台或 API。
目标账户中创建 IAM 角色并定义其信任和权限策略的权限,用于对 AWS 账户执行定向操作。
iam:PassRole允许arn:aws:iam::<account-id>:role/*在自己的账户中注册该角色aidevops.amazonaws.com,条件密钥iam:PassedToService设置为。更广泛的iam:PassRole补助金也满足了这一要求。允许批准定向操作的操作员进入代理空间。
在代理空间上启用定向操作
在任何其他提升的配置生效之前,必须在代理空间上启用定向操作。这是定向操作的主要控制。如果将其禁用,则提升的角色注册和提升的工具选择加入将不起作用。尝试注册高级配置可能会被拒绝。
在控制台中启用
打开 AWS DevOps 代理控制台。
选择您的代理空间。
导航到代理空间设置并启用定向操作。
确认更改。
通过 API 启用
您可以通过代理空间启用定向操作preferences。该字段是首选项键到布尔值的键入映射。你把它设置CreateAgentSpace成UpdateAgentSpace这样
以下示例允许使用 AWS CLI 进行定向操作。
aws devops-agent update-agent-space \ --agent-space-id <your-agent-space-id> \ --preferences elevatedActionsEnabled=true
该preferences字段具有以下行为:
提供
preferencesonUpdateAgentSpace会替换全部设置,因此省略的首选项将恢复为其默认值。省略该
preferences字段会使当前值保持不变。设置
elevatedActionsEnabled是可选的,因为首选项默认为false。提供未知的首选项密钥失败
ValidationException。更改首选项会立即生效,等同于控制台切换。
调用
GetAgentSpace返回当前preferences地图,从而确认设置。
为某注册提升的角色 AWS 账户
对于每个关联 AWS 账户,您可以选择注册一个提升的角色。监控账户和任何来源账户均支持提升的角色注册。提升的角色是您账户中的 IAM 角色, AWS DevOps 代理会代为代表您执行定向操作。您可以通过设置协会agentElevatedRoleArn的 AWS 配置来注册角色。
注册提升的角色时,请记住以下几点:
每个账户的注册是可选的。如果您没有为某个账户注册高级角色,则该账户只能执行只读操作。
我们建议采用可识别的命名规范,例如
DevOpsAgent-ElevatedAction-*,提升的角色便于审计。该服务不需要特定的名称。该角色的权限策略由客户管理。将其范围限定为您希望代理能够采取的操作。该角色定义了代理在您的账户中可以做的事情的上限。这不是一项长期补助金。此外,每项定向操作在执行时都需要操作员的批准,并且代理的会话范围进一步限定为经批准的特定操作。
撰写信托政策
提升的角色必须信任 AWS DevOps 代理服务主体。验证遵循假设角色路径。 AWS DevOps 代理在担任角色时使用三个 STS 操作。信任策略必须允许所有三个:sts:AssumeRolests:SetSourceIdentity、和sts:TagSession。如果省略sts:SetSourceIdentity或sts:TagSession,则即使验证状态为,定向操作在凭证时也会失败。valid
以下示例显示了提升角色的信任策略。111122223333替换为您的 AWS 账户 ID us-east-1 和代理空间的 AWS 区域。
{ "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 代理可以通过定向操作在您的账户中执行的操作的上限。代理从来没有在这个上限内运作。每项定向行动都需要操作员的批准。为批准的操作颁发的证书带有会话策略。会话策略将其范围限制为运营商批准的特定操作和资源。代理仅根据代理维护的支持 AWS IAM 操作的精选列表来制定会话策略。 AWS DevOps 该列表之外的操作永远不能成为会话策略的一部分。要浏览该列表,请在 AWS DevOps 代理控制台中打开配置页面。在 “代理操作” 部分中选择 “查看支持的操作”。权限策略有两种选择。
选项 1:附加 AWS 托管策略。 AWS DevOps 代理提供AIDevOpsAgentActionsPolicy托管策略。其 ARN 为 arn:aws:iam::aws:policy/AIDevOpsAgentActionsPolicy。有关代码格式的策略文档,请参阅 AWS 托管策略参考指南。
托管策略具有以下特征:
它授予广泛的权限:对所有资源执行所有操作。它不包括身份、凭证和组织管理服务。不包括的服务是
account:*cognito-identity:*iam:*、identitystore:*、organizations:*、ram:*、rolesanywhere:*、sso:*、和sts:*。因此,该角色无法管理身份或获得更多访问权限。它允许从这些服务返回一小部分只读操作:
account:GetAccountInformationaccount:GetGovCloudAccountInformation、account:GetPrimaryEmail、account:ListRegions、iam:ListRoles、organizations:DescribeEffectivePolicy、organizations:DescribeOrganization、和sts:DecodeAuthorizationMessage。它确实包括上限中的删除类操作。无论角色的权限如何,代理本身都会拒绝删除类操作。有关代理拒绝的操作的更多信息,请参阅代理不执行的操作。
该政策仅定义了上限。任何单个操作的有效权限在执行时都会缩小到批准的操作。
选项 2:编写客户管理的政策。如果您想要比托管策略规定的更严格的上限,请编写自己的政策。将其范围限定为您希望代理人触摸的操作和资源,并将其附加到该角色。遵循最小权限原则:从您期望运营商批准的操作开始,并仅在需要时进行扩展。即使获得批准,角色不允许的定向操作在执行时也会失败。
使用任一选项,您都可以使用服务控制策略 (SCP) 和权限边界进一步限制代理可以执行的操作。这些控制措施适用于提升的角色,就像您账户中的任何其他角色一样。有关设定代理访问范围的更多信息,请参阅在... 中限制代理访问 AWS Account。
验证生命周期
信任政策验证的运行方式取决于账户类型。
监控(主要)账户。验证是同步的。 AWS DevOps 代理会在您保存角色时对其进行验证。在页面重新加载或 API 调用返回时,结果可用。
agentElevatedRoleArnStatus反映valid或invalid立即。来源(次要)账户。验证是异步的。注册提升的角色后,会发生以下情况:
该协会立即接受注册并报告
agentElevatedRoleArnStatus为pending-confirmation.AWS DevOps 代理通过使用假设角色路径来验证角色。
valid如果验证成功或invalid失败,状态将转换为。
该角色仅在其状态为后才用于定向操作valid。
对于来源账户,使用GetAssociation或对关联进行轮询ListAssociations并选中该agentElevatedRoleArnStatus字段。验证通常在几分钟内完成。
代理无法执行的操作
与您授予的权限无关,代理会对其作为定向操作调用的 AWS SDK 操作实施自己的防护措施。这些防护措施仅适用于针对 AWS 资源的行动。相反,工具分类管理第三方工具。有关工具分类的更多信息,请参阅对第三方集成工具进行分类。即使提升角色的策略允许操作,这些防护措施也适用。运营商的批准并不能取代它们。
删除资源。代理拒绝删除类操作,例如删除实例、存储桶、表、函数或堆栈。操作员使用自己的证书自行删除资源。
更改权限边界。代理拒绝设置或删除 IAM 权限边界的操作:
iam:PutRolePermissionsBoundaryiam:DeleteRolePermissionsBoundary、iam:PutUserPermissionsBoundary、和iam:DeleteUserPermissionsBoundary。边界是您的组织用来限制代理的控制措施,因此代理无法对其进行更改。需要
iam:PassRole。默认情况下,该代理不支持将 IAM 角色传递给 AWS 服务的操作。示例包括使用实例配置文件启动实例或创建具有执行角色的 Lambda 函数。另一个例子是使用任务角色启动任务。传递角色可以间接扩展服务代表您执行的操作。
当被指示执行其中一项操作时,代理会拒绝并解释原因。在可能的情况下,它会改为描述手动步骤。
这些护栏补充了您拥有的控制措施:提升角色的权限政策、SCP 和提升角色的权限边界。
为第三方集成对工具进行分类
Third-party 而且 MCP 集成提供了三类工具,用于确定代理是否可以调用该工具以及需要哪些批准。 AWS DevOps 代理为原生集成分配固定分类。您可以将它们分配给客户配置的 MCP 服务器。
| 分类 | 含义 | 行为 |
|---|---|---|
READ_ONLY |
该工具仅读取信息。 | 可作为只读操作使用。 |
MUTATIVE |
该工具可以创建或修改资源。 | 需要在聊天中启用定向操作并获得每项操作操作员的批准。 |
DESTRUCTIVE |
该工具可以删除或不可逆转地更改资源。 | 代理从不调用此分类中的工具。 |
Customer-configured MCP 服务器
对于 MCP 服务器关联(包括 SigV4 变体),您可以通过每个工具的条目列表toolDetails自己对工具进行分类。每个条目都有一个name和一个toolClassification。
每个工具都
name必须与协会启用工具列表中的条目完全匹配。不匹配在注册时会被拒绝。没有存储分类的工具默认为
READ_ONLY。如果您通过 AWS SDK、C AWS LI 或直接 API 调用以编程方式注册或更新 MCP 服务器关联,并且您不提供toolDetails,则 AWS DevOps Agent 会将该关联中的所有工具视为。READ_ONLY代理无需申请批准即可运行只读工具。要在创建或修改资源的工具运行之前需要操作员的批准,请将该工具明确归类为MUTATIVE。控制台会提示您对每个发现的工具进行分类。编程调用者必须toolDetails自己设置。工具名称为 1—128 个字符。每个关联最多可以对 500 个工具进行分类。
有关连接 MCP 工具和将其列入许可名单的更多信息,请参阅。连接 MCP 服务器
原生集成(Datadog、Grafana)
对于 Datadog 和 Grafana 等原生集成,分类由代理修复。 AWS DevOps 您不提供分类。您无法改写这些分类。取而代之的是,你可以在工具条目列表中选择特定的变异工具。enabledElevatedTools
只有 AWS DevOps 代理分类为的工具
MUTATIVE才能启用。归类为
DESTRUCTIVE(例如grafana_delete_alert_rule)的工具永远无法启用。
批准定向行动
定向行动是以人为本的。当代理确定它被定向执行的操作会改变资源时,它不会直接执行该操作。相反,会发生以下情况:
代理请求批准,向操作员提供特定的工具、操作和目标资源。
运营商审查请求并批准或拒绝该请求。
如果获得批准,代理将执行操作。每项批准仅涵盖所需的特定工具、操作和资源。它在有限的时间窗口内仍然有效,不能重复用于其他操作或资源。
AWS DevOps 代理仅在聊天中提出操作员批准请求。如果代理在聊天之外调用变更工具,例如在自主调查期间,则通话将失败,而不是提交批准请求。 AWS DevOps 未经批准,代理绝不会执行变异工具。
批准和由此产生的行动应归因于中批准的运营商。 AWS CloudTrail
API 中的批准流程
SendMessage流式传输批准请求。该请求标识工具、操作和目标资源,并使用中断标识符用于恢复。举个例子,假设一个操作员在 AI 助手中工作,比如 Claude。操作员要求它清除死信队列。arn:aws:sqs:us-east-1:111122223333:my-app-dlqClaude 调用SendMessageAWS DevOps Agent,响应流中会传送一个批准请求,其中标识了工具use_awssqs:PurgeQueue、操作和队列 ARN 以及toolUseIdinterruptId、和approvalId标识符。操作员使用记录决定
UpdateApprovalAction。运营商以最终的范围批准或出于可选原因拒绝。在这里,Claude 向接线员显示请求,然后UpdateApprovalAction使用action: APPROVED和 afinalPatternf 工具进行呼叫use_aws,sqs:PurgeQueue并将请求argumentPins固定operation到队列resource_arnARN 中。最终的范围可以缩小请求的范围,但永远无法扩大请求。
运营商将批准标记为一次性使用,或将重复使用窗口设置为最多 4 小时。队列清除是一次性操作,因此操作员将此批准标记为一次性使用(
singleUse: true,否ttlSeconds)。客户通过
SendMessage再次致电并附上决定来恢复暂停的对话。在此示例中,ClaudeuserActionResponse设定APPROVAL_ACTION并approvalAction提供了toolUseId、interruptIdapprovalId、和决APPROVED策。 AWS DevOps 然后,代理会清除队列。然后
PENDING,批准生命周期为APPROVED(可兑换)或REJECTED(终端)。使用REDEEMED后即APPROVED获得批准,也可以在使用REVOKED前获得批准。这里的请求是在操作员决定PENDING时、APPROVED决策REDEEMED之后以及代理清除队列之后。
无论是Claude等人工智能助手、Slack机器人还是自定义操作客户端,任何代理消费者都可以以相同的方式推动这一流程:致电SendMessage,向操作员提交批准请求,与其记录决策并与UpdateApprovalAction之恢复对话。SendMessage
监控和审计
角色验证状态 -监控
agentElevatedRoleArnStatus您的 AWS 协会(通过GetAssociation或ListAssociations)以确认提升的角色仍处于该valid状态。AWS CloudTrail— 在您的 AWS 账户中执行的定向操作显示在 CloudTrail。假定角色的会话带有源身份,该身份将操作归因于批准操作员。您可以将每项定向操作追溯到批准该操作的人。
问题排查
注册角色将保留在pending-confirmation。这适用于源(辅助)账户,其中的验证是异步的。验证通常在几分钟内完成。如果状态未转换,请验证角色存在,然后重新注册角色 ARN 以再次触发验证。
角色状态为invalid。信任策略验证失败。检查一下:
信任策略指定 AWS DevOps 代理服务主体。
信任策略允许所有必需的 STS 操作(
sts:AssumeRolests:SetSourceIdentity、和sts:TagSession),而不仅仅是sts:AssumeRole。aws:SourceAccount条件与拥有代理空间的账户相匹配。aws:SourceArn条件中的区域与代理空间的区域相匹配(或使用区域通配符)。
修复信任政策并重新注册角色。
即使角色状态为,定向操作也会失败valid。该valid状态反映了注册时的验证检查。如果在验证后更改了信任策略,或者其aws:SourceArn条件固定到与代理空间不同的区域,则实时假设角色呼叫仍可能失败。根据上面的清单查看信任政策。
ValidationException注册高级角色时。必须先在代理空间上启用定向操作,然后才能注册提升的配置。首先在代理空间上启用定向操作,然后注册角色。
提供toolDetails时出现工具名称不匹配错误。中的每个名称toolDetails必须与协会启用工具列表中的工具名称(包括大小写)完全匹配。比较两个列表,更正任何不匹配的内容,然后重试。