aws-iam

aws-iam

热门

针对AI代理经常出错的IAM行为提供已验证的修正——策略评估边界情况、信任策略陷阱、STS会话限制、Organizations细节以及SAML/MFA具体问题。同时提供IAM角色管理和最小权限策略生成的结构化工作流程。涵盖条件运算符安全性(对缺失键使用ForAnyValue/ForAllValues配合Null检查)、存储桶策略拒绝模式(VPC端点限制、组织路径条件)、基于资源的策略混淆代理保护,以及为AWS服务(Glue、CloudTrail、VPC Flow Logs、Firehose、DataSync、S3复制、Lambda、Step Functions、ECS等)创建服务角色,包括包含aws:SourceAccount/aws:SourceArn条件的信任策略。适用于创建或配置IAM角色、编写IAM或存储桶策略、使用STS、Organizations、条件运算符,或任何需要IAM服务角色或执行角色的任务。不涵盖非IAM授权,如Cognito用户池策略或应用级RBAC。

2159Star
204Fork
更新于 2026/7/28
SKILL.md
readonly只读
name
aws-iam
description

针对AI代理经常出错的IAM行为提供已验证的修正——策略评估边界情况、信任策略陷阱、STS会话限制、Organizations细节以及SAML/MFA具体问题。同时提供IAM角色管理和最小权限策略生成的结构化工作流程。涵盖条件运算符安全性(对缺失键使用ForAnyValue/ForAllValues配合Null检查)、存储桶策略拒绝模式(VPC端点限制、组织路径条件)、基于资源的策略混淆代理保护,以及为AWS服务(Glue、CloudTrail、VPC Flow Logs、Firehose、DataSync、S3复制、Lambda、Step Functions、ECS等)创建服务角色,包括包含aws:SourceAccount/aws:SourceArn条件的信任策略。适用于创建或配置IAM角色、编写IAM或存储桶策略、使用STS、Organizations、条件运算符,或任何需要IAM服务角色或执行角色的任务。不涵盖非IAM授权,如Cognito用户池策略或应用级RBAC。

version
1

AWS IAM — 常见陷阱

关于本技能

本技能包含AI代理经常在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操作,或理解操作到动作的映射,请阅读references/aws-iam-policy-generation.md关键:如果用户提供了源代码(Python、Go、TypeScript、JavaScript、Java),你必须阅读此参考——它要求使用iam-policy-autopilot而非手动构建策略。 使用程序化服务授权参考以获得准确的映射。

已验证的边界情况

CloudTrail:

  • AcceptHandshake/DeclineHandshake仅记录在ACTING账户中,而非管理账户。需要组织追踪以实现集中化。
  • ConsoleLogin区域因端点/cookie而异,并非总是us-east-1。?region=强制指定区域。

STS:

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

Organizations:

  • 暂停/关闭的账户在永久关闭(约90天)前无法移除。先移除,再关闭。
  • 策略管理委派:使用PutResourcePolicy,而非register-delegated-administrator。
  • AI opt-out策略:默认需要管理账户。
  • ListPolicies过滤器的Organizations策略类型:通过aws organizations list-available-policy-typesOrganizations 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条件以要求该键存在且非空。例如,在评估aws:TagKeys上下文键时:

    {
      "Version": "2012-10-17",
      "Statement": {
        "Effect": "Allow",
        "Action": "ec2:RunInstances",
        "Resource": "*",
        "Condition": {
          "ForAllValues:StringEquals": {
            "aws:TagKeys": ["Alpha", "Beta"]
          },
          "Null": {
            "aws:TagKeys": "false"
          }
        }
      }
    }
    
  • 授予IAM用户ARN的基于资源的策略会绕过同一账户中的权限边界。

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

  • iam:PassRoleResource: "*"结合计算服务的创建/更新操作(EC2 RunInstances、Lambda CreateFunction/UpdateFunctionConfiguration、ECS RegisterTaskDefinition、Glue、SageMaker、CloudFormation等)等于权限提升到账户中任何可传递的角色,包括管理员。将Resource限定到特定角色ARN或IAM路径;可选地使用iam:PassedToService/iam:AssociatedResourceArn进行约束。参见IAM用户指南——授予用户传递角色的权限

MFA:

  • 添加新的虚拟MFA设备时,未分配的虚拟MFA设备会自动删除。
  • MFA仅重新同步策略的NotAction需要精确包含:iam:ListMFADevices、iam:ListVirtualMFADevices、iam:ResyncMFADevice。

SigV4:

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

服务特定角色:

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

策略摘要显示:

  • 包含多服务通配符操作(例如codebuild:*codecommit:*)和服务特定资源ARN的单个语句:每个资源仅出现在其匹配服务的摘要下(CodeBuild ARN出现在CodeBuild下等)。仅当资源的服务前缀与语句中的任何操作都不匹配时,它才会出现在所有操作摘要中("不匹配的资源")。