如何解決許可界限引發的拒絕存取問題?

2 分的閱讀內容
0

我在嘗試存取 AWS 服務時收到拒絕存取或未經授權的錯誤。如何排除 AWS 賬户上的拒絕存取錯誤?

簡短描述

因為您的 AWS Identity and Access Management (IAM) 政策不符合特定條件要求,您可能會收到拒拒絕存取或未經授權的錯誤。首先,檢閱您帳户上的任何服務控制政策 (SCP),然後檢查基於資源的政策中是否沒有拒絕項。如果這不能解決錯誤,則問題可能是由許可界限的存在引起的。

許可界限功能可讓您使用受管政策設定基於身分的政策可以授予 IAM 實體 (使用者或角色) 的最大許可。為實體設定許可界限時,該實體只能執行基於身分的政策及其許可界限允許的動作。

**注意:**許可界限設定實體的最大許可,但並未授予這些許可。

若要解決授權錯誤,請按照以下步驟操作:

  • 檢查是否某個動作在您的 IAM 政策中得到允許,而在許可界限中不允許
  • 使用 IAM 主控台在許可界限內包含所有必需的動作
  • 使用 IAM 政策中的「iam:PermissionsBoundary」條件金鑰

解決方案

檢查是否某個動作在您的 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 主控台
  2. 在導覽窗格中,選擇角色/使用者
  3. 選擇要編輯的 IAM 實體。
  4. 許可界限部分中,檢查您的設定。如果設定了許可界限,則意味着存在許可界限。本部分列出了用作 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"
                   ]
                }
            }
        }

建立政策並將其連接至負責建立使用者的委派管理員。將以下範例政策連接至管理員時,他們只能在將 RestrictedRegionPermissionsBoundary 政策連接至 IAM 使用者時建立該使用者。如果管理員嘗試在未連接政策的情況下建立 IAM 使用者,則會收到拒絕存取錯誤。

{
            "Sid": "CreateUser",
            "Effect": "Allow",
            "Action": [
                "iam:CreateUser"
            ],
            "Resource": "arn:aws:iam::111222333444:user/test1*",
            "Condition": {
                "StringEquals": {
                    "iam:PermissionsBoundary": "arn:aws:iam::111222333444:policy/RestrictedRegionPermissionsBoundary"
                }
            }

若要在建立新使用者時將 RestrictedRegionPermissionsBoundary 設定為許可界限,請按照下列步驟操作:

  1. 開啟 IAM 主控台
  2. 在導覽窗格中,選擇使用者,然後選擇新增使用者
  3. 輸入要編輯的使用者名稱,選擇 AWS 存取類型,然後選擇下一步
  4. 展開設定許可界限部分,然後選擇使用許可界限控制最大角色許可
  5. 在搜尋欄位中,輸入 RestrictedRegionPermissionsBoundary,然後選擇政策的對應選項按鈕。
  6. 選擇下一步:標籤
  7. 檢閱您的設定並建立使用者。

相關資訊

IAM 實體的許可界限

使用界限評估有效許可

AWS 官方
AWS 官方已更新 2 年前