跳至內容

我該如何解決由權限界限造成的存取遭拒問題?

2 分的閱讀內容
0

當我存取 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 主控台在權限界限中納入所有必要的動作

若要編輯權限界限以納入使用者所需的所有動作,請完成以下步驟:

  1. 開啟 IAM console (IAM 主控台)。
  2. 在導覽窗格中,選擇 Roles/Users (角色/使用者)。
  3. 選擇您要編輯的 IAM 實體。
  4. Permissions boundary (權限界限) 區段中,檢查您的設定。如果權限界限已 set (設定),表示目前已套用權限界限。此區段會列出作為您 IAM 實體權限界限之受管政策名稱。
  5. 展開 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 設定為權限界限,請完成以下步驟:

  1. 開啟 IAM console (IAM 主控台)。
  2. 在導覽窗格中,選擇 Users (使用者),然後選擇 Add Users (新增使用者)。
  3. 輸入您要編輯的使用者名稱,選擇 AWS access type (AWS 存取類型),然後選擇 next (下一步)。
  4. 展開 Set permissions boundary (設定權限界限) 區段,並選擇 Use a permissions boundary to control the maximum role permissions (使用權限界限來控制角色的最大權限)。
  5. 在搜尋欄位中,輸入 RestrictedRegionPermissionsBoundary,然後為您的政策選擇選項按鈕。
  6. 選擇 Next:Tags (下一步:標籤)。
  7. 檢查您的設定並建立使用者。

相關資訊

使用權限界限評估有效權限

AWSSupport-TroubleshootIAMAccessDeniedEvents

AWS 官方已更新 10 個月前