不知道這是 Feature 或 Bug,但在 AWS 裡可以透過 IAM Role Trust Relationship 與 S3 Bucket Policy (合理推測其它 Resource Policy 也行) 中的 Principal 區段,猜測其它帳號下的 IAM ARN 是否合法。

兩者行為略不一致:

  • IAM Role: 會檢查 IAM ARN 是否合法,但授權對象被 hardcode 為對方帳號的 root。因此若寫


    "Principal": {
    "AWS": "arn:aws:iam::123412341234:user/admin"
    },

    該帳號內所有透過 IAM Policy 賦權,允許對該 role 調用 sts:AssumeRole 的 Identity,都可以 Assume 成這個 IAM Role;或曰,取得對應的 Credential。

  • S3 Bucket Policy: 會檢查 IAM ARN 是否合法,且只有對應的 Identity 會取得權限。root Account (“arn:aws:iam::*:root) 是個特例,會再轉授權給該帳號下的 IAM Identity。