mcpField
R
resilience-hub-multi-account

resilience-hub-multi-account

github.com/aws云与 DevOps3.3k4.0k 次安装1 天前更新
代码仓库

关于 resilience-hub-multi-account

指导团队在 AWS Resilience Hub v2 中配置跨账户评估,重点是通过中央账户的调用角色和成员账户角色发现服务资源,并区分组织级治理设置。

主要功能

  1. 01配置按服务的跨账户权限模型
  2. 02设置中央账户调用角色
  3. 03配置成员账户跨账户角色
  4. 04说明组织集成与评估的区别
  5. 05提供跨账户故障排查与安全建议

适用场景

  1. 01从中央账户评估成员账户中的服务
  2. 02排查跨账户访问拒绝
  3. 03区分组织级策略治理与资源评估

MCP 相关

推荐通过 AWS MCP 服务执行 AWS API 调用;也可使用 AWS CLI。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aws/agent-toolkit-for-aws --skill resilience-hub-multi-account

安装后在 Claude Code 中输入/resilience-hub-multi-account确认已加载。

附带文件references/multi-account-procedure.md

详细介绍

Multi-Account Resilience Hub v2 Setup

概述

介绍如何配置 Resilience Hub v2,以便从一个中央账户评估多个 AWS 账户中的服务。本技能中的所有 CLI 命令均使用 aws resiliencehubv2 命名空间——即 Resilience Hub v2 API 接口,与旧版 aws resiliencehub(v1)命令不同(service: [resiliencehub, ...] 元数据标签表示服务系列,而非 CLI 命名空间)。 Resilience Hub v2 支持两种互补的多账户机制:(1)AWS Organizations 集成——管理账户启用可信访问、创建服务关联角色,并指定一个委派管理员账户,以管理和查看整个组织的策略;(2)按服务划分的跨账户权限模型——中央账户中的调用角色通过承担成员账户中的跨账户角色,按服务发现资源。本技能配置的是(2);Organizations 集成(1)需另行设置(通过管理账户和控制台——见下文)。

建议使用 AWS MCP 服务执行本技能中的 AWS API 调用,但这不是必需的——也可以直接使用 AWS CLI 执行所有操作。

防护措施 — 本技能自身文件的位置(MCP 与本地安装)

读取参考文件前,请先确定本技能的加载方式:

  • **通过 AWS MCP retrieve_skill 工具加载:**本技能的参考文件不在本地文件系统中。请使用 file 参数,通过 retrieve_skill 获取每个文件(例如 file="references/multi-account-procedure.md")——不要在本地使用 file_read 读取这些路径,也不要在文件系统中搜索这些文件。
  • 本地安装(例如 .kiro/skills/resilience-hub-multi-account/ 或 ~/.claude/skills/resilience-hub-multi-account/):请使用此处所示的相对路径,从本地技能目录读取参考文件。

以上仅适用于本技能自身的参考文件;用户或会话数据始终应在工作目录中读取和写入,切勿通过 retrieve_skill 操作。

集中式多账户评估的工作方式

根据目标使用以下两种路径之一:

决策规则(请先阅读): 如果要运行跨账户韧性评估——也就是从中央账户评估位于成员账户中的工作负载/资源(这是常见需求,包括“在我的 Organization 中进行集中式韧性管理”或“中央评估账户”等说法)——请使用按服务配置的跨账户权限模型(下方的路径 2):调用方角色 + 跨账户角色 + create-service --permission-model。请勿将 aws organizations register-delegated-administrator(或任何委派管理员注册操作)用作跨账户评估的设置步骤,也不要推荐这样做。 Organizations 委派管理员集成(路径 1)是一个单独的可选功能,仅适用于组织范围的策略管理和可见性——它不是设置或运行跨账户评估的方式。只有当请求明确涉及组织范围的策略治理,而非评估时,才使用路径 1。

  • 组织范围的治理(集中式策略、跨账户可见性):使用 AWS Organizations 集成。从管理账户启用 Resilience Hub 的受信任访问权限, 创建服务关联角色,并注册一个委派管理员账户。此操作通过 Organizations 受信任访问权限和 Resilience Hub 控制台完成——没有 resiliencehubv2 register-delegated-administrator CLI 操作。随后,委派管理员会选择一个主 Region,用于汇总组织级数据。请参阅 AWS 文档页面 设置 Organizations 集成。
  • 按服务进行跨账户资源发现(评估资源分布在多个账户中的服务): 使用按服务配置的跨账户权限模型注册每项服务——在中央账户中配置一个调用方角色,并为每个成员账户配置跨账户角色 ARN。**本技能的步骤用于配置此路径。**使用以下命令格式:
aws resiliencehubv2 create-service --name {service} --regions {regions} \
  --permission-model '{"invokerRoleName":"ResilienceHubAssessmentRole","crossAccountRoles":[{"crossAccountRoleArn":"arn:aws:iam::{member_account_id}:role/ResilienceHubAccess","externalId":"{external_id}"}]}'

externalId 是一种共享密钥,可防范混淆代理攻击——请生成一个满足密码学安全要求的随机值,并将其存储在 AWS Secrets Manager 或 SSM Parameter Store(SecureString)中;切勿将其提交到源代码管理中,或在模板中直接嵌入,除非使用动态 {{resolve:secretsmanager:...}} 引用;并确保 CI/CD 日志或基础设施即代码输出不会以明文形式输出此值(使用 CloudFormation NoEcho 参数,并在流水线日志中对其进行屏蔽)。

(成员账户中的)跨账户角色信任中央账户的调用方角色。每项服务可以配置多个跨账户角色 ARN——resiliencehubv2 API 会强制执行最大数量限制(例如 5 个),因此请从 API/模型中确认允许的上限,不要假定数量固定。注意:此按服务配置的模型独立于上文的 Organizations 集成——resiliencehubv2 CLI 中没有 register-delegated-administrator 操作;组织范围的委派管理员注册通过 AWS Organizations 受信任访问权限和 Resilience Hub 控制台完成,而不是调用 resiliencehubv2 API。

配置多账户设置

请严格按照步骤配置跨账户评估。 请参阅 references/multi-account-procedure.md。

故障排查

跨账户评估失败并显示 AccessDenied

请确认:(1) 权限模型中的跨账户角色 ARN 完全匹配;(2) 跨账户角色的信任策略允许中央账户的调用方角色代入该角色;(3) 如果已配置 externalId,请确认其匹配。

未发现成员账户中的资源

请确认跨账户角色对范围内的资源类型(CloudFormation、EC2、RDS 等)具有读取权限,并且输入源指向正确区域中的有效资源。

查找委派管理员配置

Resilience Hub v2 确实支持通过 AWS Organizations 集成委派管理员,以进行组织范围的策略管理和可见性管理,但需要通过 Organizations 可信访问和 Resilience Hub 控制台从管理账户进行配置(创建服务相关角色,然后注册委派管理员),而不是通过 resiliencehubv2 CLI 操作(没有 register-delegated-administrator API)。若要评估资源分布在多个账户中的单个服务,请使用此技能中的按服务跨账户权限模型。两者互为补充。

安全注意事项

  • 最小权限和只读: 将成员账户中的跨账户角色限制为只读发现权限(cloudformation:Describe*、ec2:Describe*、rds:Describe* 等),而非写入或修改操作。
  • 严格限定跨账户信任范围: 尽可能只信任特定的中央调用方角色 ARN,而不是整个账户。
  • 启用日志记录和监控: 确保中央账户和成员账户均已启用 AWS CloudTrail,以记录跨账户 sts:AssumeRole 调用,并对针对跨账户角色失败或异常的 AssumeRole 尝试发出警报。
  • 延伸阅读: 有关跨账户加固指南,请参阅 IAM 最佳实践、混淆代理问题和 AWS Resilience Hub 中的安全性。

评论

支持 Markdown