我在嘗試存取 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 主控台在許可界限內包含所有必需的動作
按照以下步驟編輯許可界限以包括使用者需要的所有動作:
- 開啟 IAM 主控台。
- 在導覽窗格中,選擇角色/使用者。
- 選擇要編輯的 IAM 實體。
- 在許可界限部分中,檢查您的設定。如果設定了許可界限,則意味着存在許可界限。本部分列出了用作 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"
]
}
}
}
建立政策並將其連接至負責建立使用者的委派管理員。將以下範例政策連接至管理員時,他們只能在將 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 設定為許可界限,請按照下列步驟操作:
- 開啟 IAM 主控台。
- 在導覽窗格中,選擇使用者,然後選擇新增使用者。
- 輸入要編輯的使用者名稱,選擇 AWS 存取類型,然後選擇下一步。
- 展開設定許可界限部分,然後選擇使用許可界限控制最大角色許可。
- 在搜尋欄位中,輸入 RestrictedRegionPermissionsBoundary,然後選擇政策的對應選項按鈕。
- 選擇下一步:標籤。
- 檢閱您的設定並建立使用者。
相關資訊
IAM 實體的許可界限
使用界限評估有效許可