
aws-iam
熱門針對 AI 代理經常搞錯的 IAM 行為提供驗證修正——政策評估邊界案例、信任政策陷阱、STS 工作階段限制、Organizations 細節以及 SAML/MFA 特定事項。同時提供 IAM 角色管理與最低權限政策生成的結構化工作流程。涵蓋條件運算子安全性(搭配 Null 檢查的 ForAnyValue/ForAllValues 以處理缺少的鍵值)、儲存桶政策拒絕模式(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 角色管理與最低權限政策生成的結構化工作流程。涵蓋條件運算子安全性(搭配 Null 檢查的 ForAnyValue/ForAllValues 以處理缺少的鍵值)、儲存桶政策拒絕模式(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 問題時,請針對特定聲明(限制、配額、確切 API 名稱、邊界案例行為)查閱官方 AWS 文件,而非依賴預先訓練的知識。建議優先取得已知的文件 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 到 opt-in 區域:目標帳戶必須啟用該區域,而非呼叫帳戶。
- 角色鏈結:最長 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(空真)。為避免此情況,請在同一個上下文鍵上同時使用
Null條件與ForAllValues,以要求該鍵必須存在且非空。例如,在評估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 下,以此類推)。只有當資源的服務前綴與陳述式中任何動作都不相符時,它才會出現在所有動作摘要中(「不相符的資源」)。





