我該如何解決由權限界限造成的存取遭拒問題?
當我存取 AWS 服務時,我想對存取遭拒或未授權的錯誤進行疑難排解。
簡短說明
當您的政策不符合特定條件需求時,AWS Identity and Access Management (IAM) 會傳回存取遭拒或未授權錯誤。
若要解決此問題,請找出造成問題的特定 IAM 使用者或 IAM 角色。檢閱附加至該實體的權限界限。權限界限可讓您使用受管政策來設定 IAM 實體的最大權限。此功能可控制身分型政策能授與 IAM 使用者或角色的最大權限。當您為某個實體設定權限界限時,該實體只能執行兩個政策都允許的動作。
注意: 實體只能執行身分型政策與權限界限同時允許的動作。
解決方法
如果權限界限無法解決錯誤,請檢閱 AWS 帳戶中的服務控制政策 (SCP)。接著,檢查是否有任何資源型政策包含對 IAM 實體的拒絕。
檢查動作是否在 IAM 政策中允許,但在權限界限中未允許
以下範例顯示某個在 IAM 政策中允許,但在權限界限中未允許的動作。在此範例中,IAM 使用者附加了政策 USER_IAM_POLICY:
IAM policy:(USER_IAM_POLICY) “Effect”: “Allow”, “Action”: [ “ec2:*”, “s3:*” ],
此政策會授與使用者對 Amazon Elastic Compute Cloud (Amazon EC2) 與 Amazon Simple Storage Service (Amazon S3) 服務的完整存取權。該使用者同時設定了一個名為 USER_PB_POLICY 的權限界限。
Permissions Boundary:(USER_PB_POLICY) “Effect”: “Allow”, “Action”: [ “cloudwatch:*”, “s3:*” ],
此權限界限會設定使用者可執行的最大權限。在此範例中,此權限界限允許對 Amazon CloudWatch 與 Amazon S3 服務的完整存取權。但是,由於 Amazon S3 是唯一同時在 IAM 政策與權限界限中被允許的服務,因此使用者僅能存取 S3。如果使用者嘗試存取 Amazon EC2,則會收到存取遭拒錯誤。
若要解決此錯誤,請編輯權限界限並允許存取 Amazon EC2:
“Effect”: “Allow”, “Action”: [ “cloudwatch:*”, “s3:*”, “ec2:*” ],
使用 IAM 主控台在權限界限中納入所有必要的動作
若要編輯權限界限以納入使用者所需的所有動作,請完成以下步驟:
- 開啟 IAM console (IAM 主控台)。
- 在導覽窗格中,選擇 Roles/Users (角色/使用者)。
- 選擇您要編輯的 IAM 實體。
- 在 Permissions boundary (權限界限) 區段中,檢查您的設定。如果權限界限已 set (設定),表示目前已套用權限界限。此區段會列出作為您 IAM 實體權限界限之受管政策名稱。
- 展開 JSON 政策,並檢查您所需的動作是否在權限界限內。如果權限界限未允許您的動作,請編輯 JSON 政策以允許您的 IAM 實體所需的所有動作。
如需如何修改政策的詳細資訊,請參閱編輯 IAM 政策。
在 IAM 政策中使用 iam:PermissionsBoundary 條件索引鍵
將 iam:PermissionsBoundary 條件索引鍵新增至您的 IAM 政策。此條件索引鍵會檢查是否已將特定政策附加為 IAM 實體的權限界限。
以下範例顯示名為 RestrictedRegionpermissionsBoundary 的 IAM 政策:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "EC2RestrictRegion", "Effect": “Allow”, "Action": "ec2:*” "Resource": "*", "Condition": { "StringEquals": { "aws:RequestedRegion": [ "us-east-1" ] } } }
建立一個政策並將其附加至負責建立使用者的委派管理員。當您將下列範例政策附加至管理員時,管理員僅能在建立 IAM 使用者時,同時為該使用者附加 RestrictedRegionPermissionsBoundary 政策。如果管理員嘗試在未附加該政策的情況下建立 IAM 使用者,則會收到存取遭拒錯誤。
{ "Sid": "CreateUser", "Effect": "Allow", "Action": [ "iam:CreateUser" ], "Resource": "arn:aws:iam::444455556666:user/test1*", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::444455556666:policy/RestrictedRegionPermissionsBoundary" } }
若要在建立新使用者時將 IAM 政策 RestrictedRegionPermissionsBoundary 設定為權限界限,請完成以下步驟:
- 開啟 IAM console (IAM 主控台)。
- 在導覽窗格中,選擇 Users (使用者),然後選擇 Add Users (新增使用者)。
- 輸入您要編輯的使用者名稱,選擇 AWS access type (AWS 存取類型),然後選擇 next (下一步)。
- 展開 Set permissions boundary (設定權限界限) 區段,並選擇 Use a permissions boundary to control the maximum role permissions (使用權限界限來控制角色的最大權限)。
- 在搜尋欄位中,輸入 RestrictedRegionPermissionsBoundary,然後為您的政策選擇選項按鈕。
- 選擇 Next:Tags (下一步:標籤)。
- 檢查您的設定並建立使用者。
相關資訊
- 語言
- 中文 (繁體)

相關內容
已提問 3 年前
已提問 1 年前