本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對拒絕存取錯誤訊息進行疑難排解
以下資訊可協助您使用 AWS Identity and Access Management 來識別、診斷和解決存取遭拒錯誤。拒絕存取錯誤會在 AWS 明確或隱含拒絕授權請求時出現。
-
當政策包含特定 AWS 動作的
Deny
陳述式時,會出現明確拒絕。 -
如果沒有適用的
Deny
陳述式,也沒有適用的Allow
陳述式,則會發生隱含拒絕。由於 IAM 政策預設會拒絕 IAM 主體,因此該政策必須明確允許主體執行動作。否則,政策會隱含拒絕存取。如需詳細資訊,請參閱明確和隱含拒絕之間的差異。
向服務或資源提出請求時,多個政策可能適用於該請求。除了錯誤訊息中指定的政策之外,請檢閱所有適用政策。
-
如果相同政策類型的多個政策拒絕請求,則拒絕存取錯誤訊息不會指定政策數目。
-
如果多種政策類型拒絕授權請求,AWS 只會在錯誤訊息中包含其中一種政策類型。
重要
登入 AWS 時遇到困難? 請確定您位在使用者類型的正確 AWS 登入頁面。如果您是 AWS 帳戶根使用者 (帳戶擁有者),則可以使用建立 AWS 帳戶 時設定的憑證登入 AWS。如果您是 IAM 使用者,帳戶管理員可為您提供 AWS 登入憑證。如果需要請求支援,請勿使用此頁面中的意見回饋連結。AWS 文件團隊會收到表單,而不是 支援。請改為在 Contact Us
當我向 AWS 服務發出請求時,出現「存取遭拒」
-
檢查錯誤訊息是否包含發出拒絕存取的政策類型。例如,如果錯誤提到由於服務控制政策 (SCP) 而拒絕存取,則您可以專注於排除 SCP 問題。識別政策類型後,可以檢查這些政策類型中是否有拒絕陳述式或缺少允許動作。如果錯誤訊息未提及發出拒絕存取的政策類型,請使用本節中的其餘指導方針進一步疑難排解。
-
確任您擁有呼叫所請求之動作和資源的以身分為基礎的政策許可。如果設定了任何條件,還必須在送出請求時滿足這些條件。有關查看或修改用於 IAM 使用者、群組或角色的政策的資訊,請參閱 管理 IAM 政策。
-
若 AWS Management Console 返回訊息告知您並未獲得執行動作的授權,您必須聯絡您的管理員以取得協助。您的管理員提供您的登入憑證或登入連結。
以下範例錯誤的發生情境是
mateojackson
IAM 使用者嘗試使用主控台檢視虛構
資源的詳細資訊,但卻沒有虛構my-example-widget
widgets:
許可。GetWidget
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: widgets:
GetWidget
on resource:my-example-widget
在此情況下,Mateo 必須請求管理員更新他的政策,允許他使用
widgets:
動作存取GetWidget
資源。my-example-widget
-
您是否試著存取支援以資源為基礎的政策的服務,例如 Amazon S3,Amazon SNS 或 Amazon SQS? 若是如此,確認政策將您指定為主體,並授與您存取權。如果您要對在您的帳戶中的服務發出請求,則您的以身分為基礎的政策或以資源為基礎的政策中之一可為您授與許可。如果您要對不同帳戶中的服務發出請求,則您的以身分為基礎的政策或以資源為基礎的政策都必須為您授與許可。若要檢視支援以資源為基礎的政策之服務,請參閱 AWS 使用 IAM 的 服務。
-
如果您的政策包含搭配金鑰值組的條件,請仔細地檢閱該條件。範例包括 aws:RequestTag/tag-key 全域條件金鑰、AWS KMS
kms:EncryptionContext:
以及多個服務支援的encryption_context_key
ResourceTag/
條件金鑰。確定金鑰名稱不符合多個結果。由於條件金鑰名稱不區分大小寫,條件會檢查符合tag-key
foo
、Foo
或FOO
且名為foo
的金鑰。如果您的請求包含多個鍵值組,且其中有鍵名稱只有大小寫不同,則您的存取可能會意外遭拒。如需詳細資訊,請參閱IAM JSON 政策元素:Condition。 -
如果您具有許可界限,請確認允許您的請求時之許可界限所使用的政策。如果您的以身分為基礎的政策允許該請求,但您的許可界限不允許,則請求會遭拒絕。許可界限會控制 IAM 主體 (使用者或角色) 可以擁有的許可上限。以資源為基礎的政策不會受到許可界限所限制。許可界限不常見。如需 AWS 如何評估政策的詳細資訊,請參閱 政策評估邏輯。
當我使用臨時安全憑證來發出請求時,出現「存取遭拒」
-
首先,確定您不是因為與臨時憑證無關的原因而遭拒絕存取。如需詳細資訊,請參閱當我向 AWS 服務發出請求時,出現「存取遭拒」。
-
要確認服務是否接受臨時安全憑證,請參閱 AWS 使用 IAM 的 服務。
-
確認您的請求正確簽署且請求的格式也正確。如需詳細資訊,請參閱您的工具組
文件或 將臨時憑證與 AWS 資源搭配使用。 -
確認您的臨時安全憑證並未過期。如需詳細資訊,請參閱IAM 中的暫時安全憑證。
-
確認 IAM 使用者或角色擁有正確許可。臨時安全性憑證的許可衍生自 IAM 使用者或角色。因此,這些許可僅限於您所擔任臨時憑證之角色所獲得授與的許可。有關如何確定臨時安全憑證的許可的更多資訊,請參閱 臨時安全憑證的許可。
-
如果您擔任角色,您的角色工作階段可能受工作階段政策限制。當您使用 AWS STS 以程式設計的方式請求臨時安全憑證時,可以選擇性地傳遞內嵌或受管工作階段政策。工作階段政策是一種進階政策,且您會在以程式設計方式建立角色的暫時憑證工作階段時,以參數方式傳遞。您可以使用
Policy
參數傳遞單一 JSON 內嵌工作階段政策文件。您可以使用PolicyArns
參數,指定多達 10 個受管工作階段政策。所產生工作階段的許可會是角色的以身分為基礎的政策和工作階段政策的交集。或者,如果您的管理員或自訂程式為您提供臨時憑證,他們可能已包含限制您存取的工作階段政策。 -
如果您是聯合身分使用者,您的工作階段可能受工作階段政策限制。您透過以 IAM 使用者的身分登入 AWS,然後請求聯合權杖來成為聯合身分使用者。如需有關聯合身分使用者的詳細資訊,請參閱 透過自訂身分經紀人請求憑證。如果您或身分經紀人在請求聯合權杖時傳遞工作階段政策,則您的工作階段會受這些政策限制。所產生工作階段的許可會是 IAM 使用者的以身分為基礎的政策和工作階段政策的交集。如需有關工作階段政策的詳細資訊,請參閱 工作階段政策。
-
如果您使用角色存取具有以資源為基礎之政策的資源,則請確認政策已授與該角色許可。例如,以下政策允許
MyRole
從帳戶111122223333
存取amzn-s3-demo-bucket
。{ "Version": "2012-10-17", "Statement": [{ "Sid": "S3BucketPolicy", "Effect": "Allow", "Principal": {"AWS": ["arn:aws:iam::111122223333:role/MyRole"]}, "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/*"] }] }
拒絕存取錯誤訊息範例
大多數拒絕存取錯誤訊息的格式為 User
。在此範例中,user
is not authorized to perform
action
on resource
because
context
使用者
是未接收存取的 Amazon Resource Name (ARN),動作
是政策拒絕的服務動作,而資源
是政策對其執行動作的資源的 ARN。內容
欄位代表政策類型的其他內容,其中說明政策拒絕存取的原因。
由於政策包含 Deny
陳述式而明確拒絕存取時,AWS 在拒絕存取錯誤訊息中包括短語 with an explicit deny in a
。當政策隱含拒絕存取時,AWS 在拒絕存取錯誤訊息中包括短語 type
policybecause no
。type
policy allows the
action
action
注意
部分 AWS 服務不支援此存取遭拒的錯誤訊息格式。存取遭拒錯誤訊息的內容可能會因提出授權請求的服務而有所不同。
以下範例顯示不同類型的拒絕存取錯誤訊息的格式。
因服務控制政策而拒絕存取 – 隱含拒絕
-
在服務控制政策 (SCP) 中檢查該動作是否有缺少的
Allow
陳述式。對於下列範例,動作是codecommit:ListRepositories
。 -
透過新增
Allow
陳述式來更新您的 SCP。如需詳細資訊,請參閱《AWS Organizations 使用者指南》中的更新 SCP。
User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no service control policy allows the codecommit:ListRespositories action
因服務控制政策而拒絕存取 – 明確拒絕
-
在服務控制政策 (SCP) 中檢查該動作是否有
Deny
陳述式。對於下列範例,動作是codecommit:ListRepositories
。 -
透過移除
Deny
陳述式來更新您的 SCP。如需詳細資訊,請參閱 AWS Organizations User Guide 中的 Update a service control policy (SCP)。
User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: codecommit:ListRepositories with an explicit deny in a service control policy
因資源控制政策而拒絕存取 – 明確拒絕
-
在資源控制政策 (RCP) 中檢查該動作是否有
Deny
陳述式。對於下列範例,動作是secretsmanager:GetSecretValue
。 -
透過移除
Deny
陳述式來更新您的 RCP。如需詳細資訊,請參閱 AWS Organizations User Guide 中的 Update a resource control policy (RCP)。
User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:us-east-1:123456789012:secret:* with an explicit deny in a resource control policy
因 VPC 端點政策而拒絕存取 – 隱含拒絕
-
在您的虛擬私有雲端 (VPC) 端點政策中檢查該動作是否有遺失的
Allow
陳述式。對於下列範例,動作是codecommit:ListRepositories
。 -
透過新增
Allow
陳述式來更新 VPC 端點政策。如需詳細資訊,請參閱《AWS PrivateLink 指南》中的更新 VPC 端點政策。
User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no VPC endpoint policy allows the codecommit:ListRepositories action
因 VPC 端點政策而拒絕存取 – 明確拒絕
-
在您的虛擬私有雲端 (VPC) 端點政策中檢查該動作是否有明確的
Deny
陳述式。對於下列範例,動作是codedeploy:ListDeployments
。 -
透過移除
Deny
陳述式來更新 VPC 端點政策。如需詳細資訊,請參閱《AWS PrivateLink 指南》中的更新 VPC 端點政策。
User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in a VPC endpoint policy
因許可界限而拒絕存取 – 隱含拒絕
-
在許可界限中檢查該動作是否有遺失的
Allow
陳述式。對於下列範例,動作是codedeploy:ListDeployments
。 -
透過將
Allow
陳述式新增至您的 IAM 政策來更新您的許可界限。如需詳細資訊,請參閱 IAM 實體的許可界限 和 編輯 IAM 政策。
User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* because no permissions boundary allows the codedeploy:ListDeployments action
因許可界限而拒絕存取 – 明確拒絕
-
在許可界限中檢查該動作是否有明確的
Deny
陳述式。對於下列範例,動作是sagemaker:ListModels
。 -
透過從您的 IAM 政策中移除
Deny
陳述式來更新您的許可界限。如需詳細資訊,請參閱 IAM 實體的許可界限 和 編輯 IAM 政策。
User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: sagemaker:ListModels with an explicit deny in a permissions boundary
因工作階段政策而拒絕存取 – 隱含拒絕
User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no session policy allows the codecommit:ListRepositories action
因工作階段政策而拒絕存取 – 明確拒絕
User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in a sessions policy
因以資源為基礎的政策而拒絕存取 – 隱含拒絕
User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: secretsmanager:GetSecretValue because no resource-based policy allows the secretsmanager:GetSecretValue action
因以資源為基礎的政策而拒絕存取 – 明確拒絕
User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:us-east-1:123456789012:secret:* with an explicit deny in a resource-based policy
因角色信任政策而拒絕存取 – 隱含拒絕
User: arn:aws:iam::123456789012:user/JohnDoe is not authorized to perform: sts:AssumeRole because no role trust policy allows the sts:AssumeRole action
因角色信任政策而拒絕存取 – 明確拒絕
User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: sts:AssumeRole with an explicit deny in the role trust policy
因以身分為基礎的政策而拒絕存取 – 隱含拒絕
User: arn:aws:iam::123456789012:role/HR is not authorized to perform: codecommit:ListRepositories because no identity-based policy allows the codecommit:ListRepositories action
因身分型政策而拒絕存取 – 明確拒絕
User: arn:aws:iam::123456789012:role/HR is not authorized to perform: codedeploy:ListDeployments on resource: arn:aws:codedeploy:us-east-1:123456789012:deploymentgroup:* with an explicit deny in an identity-based policy
當 VPC 請求因其他政策而失敗時拒絕存取
-
在服務控制政策 (SCP) 中檢查該動作是否有明確的
Deny
陳述式。對於下列範例,動作是SNS:Publish
。 -
透過移除
Deny
陳述式來更新您的 SCP。如需詳細資訊,請參閱《AWS IAM Identity Center 使用者指南》中的更新 SCP。
User: arn:aws:sts::111122223333:assumed-role/
role-name
/role-session-name
is not authorized to perform: SNS:Publish on resource: arn:aws:sns:us-east-1:444455556666:role-name-2
with an explicit deny in a VPC endpoint policy transitively through a service control policy