aws-iam

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。

2159星標
204分支
更新於 2026/7/28
SKILL.md
唯讀
名稱
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。

版本
1

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-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(空真)。為避免此情況,請在同一個上下文鍵上同時使用 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: "*" 加上對運算服務(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 下,以此類推)。只有當資源的服務前綴與陳述式中任何動作都不相符時,它才會出現在所有動作摘要中(「不相符的資源」)。