
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。
针对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。
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-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条件以要求该键存在且非空。例如,在评估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:PassRole与Resource: "*"结合计算服务的创建/更新操作(EC2RunInstances、LambdaCreateFunction/UpdateFunctionConfiguration、ECSRegisterTaskDefinition、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.com和redshift.amazonaws.com作为服务主体(根据AWS文档;省略serverless会导致COPY时出现Not authorized to get credentials of role)。 - IAM OIDC提供商:大多数提供商不需要指纹(AWS通过受信任的CA验证)。
策略摘要显示:
- 包含多服务通配符操作(例如
codebuild:*、codecommit:*)和服务特定资源ARN的单个语句:每个资源仅出现在其匹配服务的摘要下(CodeBuild ARN出现在CodeBuild下等)。仅当资源的服务前缀与语句中的任何操作都不匹配时,它才会出现在所有操作摘要中("不匹配的资源")。





