mcpField
A
aws-iam

aws-iam

github.com/aws安全3.3k10.4k 次安装1 天前更新
代码仓库

关于 aws-iam

aws-iam 是面向回答 AWS IAM 问题的 AI Agent 参考技能,汇集常见错误的已核实修正,并要求精确信息以 AWS 官方文档为准。

主要功能

  1. 01已核实的 IAM 边缘情况
  2. 02角色管理参考资料
  3. 03IAM 策略生成指导
  4. 04依据 AWS 文档核对说法

适用场景

  1. 01检查 IAM 角色信任关系与权限
  2. 02根据源代码或 Terraform 计划生成策略
  3. 03核查 STS、Organizations 或 MFA 相关行为

MCP 相关

该技能建议使用 AWS MCP 服务执行 AWS 操作,也支持改用 AWS CLI 或 SDK。

安装

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

$npx skills add https://github.com/aws/agent-toolkit-for-aws --skill aws-iam

安装后在 Claude Code 中输入/aws-iam确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
aws-iam-policy-generation.md
aws-iam-role-management.md
common-pitfalls.md
service-authorization.md

详细介绍

AWS IAM — 常见陷阱

关于此技能

此技能包含经过验证的更正内容,针对 AI Agent 经常弄错的 IAM 事项。它并非全面的 IAM 指南;如需完整的 IAM 指导,请搜索 AWS 文档。回答 IAM 问题时,请对照 AWS 官方文档核实具体内容(限制、配额、确切的 API 名称、边缘情况行为),而不要依赖预训练知识。优先获取已知文档 URL,而不是进行广泛搜索。如官方文档与记忆中的内容冲突,请以官方文档为准。

常见工作流

对 AWS 操作使用最合适的工具;推荐使用 AWS MCP 服务,但并非必需,也可使用 AWS CLI 或 SDK 作为替代方案。只有在对话需要更深入的细节时,才阅读参考文件。

  • 如果用户需要在预置或更新 AWS 资源时创建、限定范围或维护 IAM 角色,请阅读 references/aws-iam-role-management.md。内容涵盖服务角色、执行角色、信任策略、混淆代理防护和权限卫生。

  • 如果用户需要生成 IAM 策略、确定 API 调用所需的 IAM 操作,或了解操作与 API 调用之间的映射,请阅读 references/aws-iam-policy-generation.md。重要:如果用户提供应用程序源代码(任何语言)或 Terraform 计划 JSON 文件(terraform show -json 输出),你必须阅读此参考文件;该文件要求使用 iam-policy-autopilot,而非手动构建策略。 使用程序化服务授权参考来确保映射准确。

已验证的边缘情况

CloudTrail:

  • AcceptHandshake/DeclineHandshake 仅记录在执行操作的账户中,而非管理账户中。要集中记录,必须使用组织跟踪。
  • ConsoleLogin 所在区域因端点/ Cookie 而异,并非总是 us-east-1。?region= 可强制指定区域。

STS:

  • GetSessionToken 的限制:(1)除非包含 MFA,否则不能调用 IAM API;(2)除了 AssumeRole 和 GetCallerIdentity 外,不能调用其他 STS API。
  • 跨账户 AssumeRole 到选择加入区域:必须由目标账户启用该区域,而非调用方账户。
  • 角色链式调用:会话最长 1 小时。

Organizations:

  • 已暂停/已关闭的账户在永久关闭之前(约 90 天)无法移除。应先移除,再关闭。
  • 策略管理委派:使用 PutResourcePolicy,而非 register-delegated-administrator。
  • AI 选择退出策略:默认需要管理账户。
  • ListPolicies 筛选所用的 Organizations 策略类型:通过 aws organizations list-available-policy-types 或 Organizations API 参考 获取当前列表。

SDK 特定事项:

  • Organizations:使用 DuplicatePolicyAttachmentException(而非 PolicyAlreadyAttachedException)。
  • Boto3 IAM AccessKey:方法为 activate()、deactivate()、delete();没有 update()。
  • 实例配置文件:使用 waiter + time.sleep(10) 模式。
  • 托管策略版本数上限:5。

SAML:

  • 加密断言 URL:https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID。
  • 从 IdP 获取的私钥必须以 .pem 格式上传到 IAM。

策略评估:

  • 对空/缺失键使用 ForAllValues 时,评估结果为 true(空真)。为避免这种情况,除了在 同一个上下文键 上使用 ForAllValues,还应使用 Null 条件,以要求该键存在且非 null。例如,评估 aws:TagKeys 上下文键时:

    {
      "Version": "2012-10-17",
      "Statement": {
        "Effect": "Allow",
        "Action": "ec2:RunInstances",
        "Resource": "*",
        "Condition": {
          "ForAllValues:StringEquals": {
            "aws:TagKeys": ["Alpha", "Beta"]
          },
          "Null": {
            "aws:TagKeys": "false"
          }
        }
      }
    }
    
  • aws:TagKeys 的值区分大小写,但 aws:PrincipalTag/<key>、aws:ResourceTag/<key> 和 aws:RequestTag/<key> 中的标签键不区分大小写。上面的 Allow 允许列表不受影响(大小写变更后的键不在列表中),但使用 ForAnyValue:StringEquals 对 aws:TagKeys 进行判断、以保护某个标签键的 Deny 会被大小写变更后的键(PROTECTED-TAG)绕过——请使用 ForAnyValue:StringEqualsIgnoreCase。参见 references/common-pitfalls.md。

  • 基于资源的策略授予同一账户中的 IAM 用户 ARN 权限时,会绕过权限边界。

  • 通过直接操纵 IAM 策略实现权限提升的 8 个操作:PutGroupPolicy、PutRolePolicy、PutUserPolicy、CreatePolicy、CreatePolicyVersion、AttachGroupPolicy、AttachRolePolicy、AttachUserPolicy。

  • iam:PassRole 的 Resource: "*" 加上计算服务的创建/更新操作(EC2 RunInstances、Lambda CreateFunction/UpdateFunctionConfiguration、ECS RegisterTaskDefinition、Glue、SageMaker、CloudFormation 等),会导致权限提升,可使用账户中任何可传递的角色,包括 Administrator。请将 Resource 限定为特定角色 ARN 或 IAM 路径;也可使用 iam:PassedToService / iam:AssociatedResourceArn 进行限制。参见 IAM 用户指南 — 授予用户传递角色的权限。

MFA:

  • 添加新设备时,未分配的虚拟 MFA 设备会被自动删除。
  • 仅用于 MFA 重新同步的策略中,NotAction 必须恰好包含:iam:ListMFADevices、iam:ListVirtualMFADevices、iam:ResyncMFADevice。

SigV4:

  • IncompleteSignatureException 包含 Authorization 标头的 SHA-256 哈希,可用于诊断传输过程中的修改。

特定服务的角色:

  • Redshift Serverless 信任策略:将 redshift-serverless.amazonaws.com 和 redshift.amazonaws.com BOTH 作为服务主体包含在内(根据 AWS 文档;省略 serverless 会导致 COPY 时出现 Not authorized to get credentials of role)。
  • IAM OIDC 提供商:大多数提供商不需要指纹(AWS 会通过受信任的 CA 进行验证)。

策略摘要显示:

  • 单个语句包含多个服务的通配符操作(例如 codebuild:*、codecommit:*),并搭配特定于服务的资源 ARN 时,每个资源只会出现在其匹配服务的摘要中(CodeBuild ARN 显示在 CodeBuild 下,依此类推)。资源的服务前缀与语句中的任何操作都不匹配时,它才会出现在所有操作摘要中(“不匹配的资源”)。

评论

支持 Markdown