本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
疑難排解拒絕存取錯誤訊
下列資訊可協助您識別、診斷及解決存取遭拒的錯誤 AWS Identity and Access Management。當 AWS 明確或隱含拒絕授權要求時,會出現拒絕存取錯誤。
-
當政策包含特定 AWS 動作的
Deny
陳述式時,就會發生明確拒絕。 -
如果沒有適用的
Deny
陳述式,也沒有適用的Allow
陳述式,則會發生隱含拒絕。由於IAM原則預設會拒絕IAM主參與者,因此原則必須明確允許主參與者執行動作。否則,政策會隱含拒絕存取。如需詳細資訊,請參閱明確和隱含拒絕之間的差異。
當您向服務或資源發出要求時,多個策略可能會套用至該請求。檢閱錯誤訊息中指定的策略以外的所有適用策略。
-
如果相同原則類型的多個原則拒絕要求,則拒絕存取錯誤訊息不會指定評估的原則數目。
-
如果有多個原則類型拒絕授權要求,則只會在錯誤訊息中 AWS 包含其中一種原則類型。
重要
當我向 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 SNS、Amazon 或 AmazonSQS? 若是如此,確認政策將您指定為主體,並授與您存取權。如果您要對在您的帳戶中的服務發出請求,則您的以身分為基礎的政策或以資源為基礎的政策中之一可為您授與許可。如果您要對不同帳戶中的服務發出請求,則您的以身分為基礎的政策或以資源為基礎的政策都必須為您授與許可。若要檢視支援以資源為基礎的政策之服務,請參閱 AWS 與之合作的服務 IAM。
-
如果您的政策包含搭配金鑰值組的條件,請仔細地檢閱該條件。範例包括多個服務支援的aws:RequestTag/tag-key全域
ResourceTag/
條件索引鍵 AWS KMStag-key
kms:EncryptionContext:
、和條件索引鍵。確定金鑰名稱不符合多個結果。由於條件金鑰名稱不區分大小寫,條件會檢查符合encryption_context_key
foo
、Foo
或FOO
且名為foo
的金鑰。如果您的請求包含多個鍵值組,且其中有鍵名稱只有大小寫不同,則您的存取可能會意外遭拒。如需更多詳細資訊,請參閱 IAMJSON政策元素:Condition。 -
如果您具有許可界限,請確認允許您的請求時之許可界限所使用的政策。如果您的以身分為基礎的政策允許該請求,但您的許可界限不允許,則請求會遭拒絕。權限界限可控制IAM主參與者 (使用者或角色) 可擁有的最大權限。以資源為基礎的政策不會受到許可界限所限制。許可界限不常見。如需有關如何 AWS 評估策略的詳細資訊,請參閱政策評估邏輯。
當我使用臨時安全憑證來發出請求時,出現「存取遭拒」
-
首先,確定您不是因為與臨時憑證無關的原因而遭拒絕存取。如需更多詳細資訊,請參閱 當我向 AWS 服務提出請求時,我收到「訪問被拒絕」。
-
要確認服務是否接受臨時安全憑證,請參閱 AWS 與之合作的服務 IAM。
-
確認您的請求正確簽署且請求的格式也正確。如需詳細資訊,請參閱您的工具組
文件或 搭配使用暫時憑證與 AWS 資源。 -
確認您的臨時安全憑證並未過期。如需詳細資訊,請參閱IAM 中的暫時安全憑證。
-
確認IAM使用者或角色具有正確的權限。臨時安全登入資料的權限衍生自IAM使用者或角色。因此,這些許可僅限於您所擔任臨時憑證之角色所獲得授與的許可。有關如何確定臨時安全憑證的許可的更多資訊,請參閱 控制臨時安全安全憑證的許可。
-
如果您擔任角色,您的角色工作階段可能受工作階段政策限制。當您使用程式設計方式要求臨時安全登入資料時 AWS STS,您可以選擇性地傳遞內嵌或受管理的工 工作階段政策是一種進階政策,且您會在以程式設計方式建立角色的暫時憑證工作階段時,以參數方式傳遞。您可以使用
Policy
參數傳遞單一JSON內嵌工作階段原則文件。您可以使用PolicyArns
參數,指定多達 10 個受管工作階段政策。所產生工作階段的許可會是角色的以身分為基礎的政策和工作階段政策的交集。或者,如果您的管理員或自訂程式為您提供臨時憑證,他們可能已包含限制您存取的工作階段政策。 -
如果您是聯合身分使用者,您的工作階段可能受工作階段政策限制。您會以使用者 AWS 身分登入,然後要求聯合權杖,以成為聯合IAM使用者。如需有關聯合身分使用者的詳細資訊,請參閱 GetFederationToken—透過自訂身分經紀人聯合。如果您或身分經紀人在請求聯合權杖時傳遞工作階段政策,則您的工作階段會受這些政策限制。產生的工作階段權限是以IAM使用者身分識別為基礎的原則與工作階段原則的交集。如需有關工作階段政策的詳細資訊,請參閱 工作階段政策。
-
如果您使用角色存取具有以資源為基礎之政策的資源,則請確認政策已授與該角色許可。例如,以下政策允許
MyRole
從帳戶111122223333
存取MyBucket
。{ "Version": "2012-10-17", "Statement": [{ "Sid": "S3BucketPolicy", "Effect": "Allow", "Principal": {"AWS": ["arn:aws:iam::111122223333:role/MyRole"]}, "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::MyBucket/*"] }] }
拒絕存取錯誤訊息範例
大多數拒絕存取錯誤訊息的格式為 User
。就本範例而言,user
is not authorized to perform
action
on resource
because
context
user
是 Amazon 資源名稱(ARN)不接收訪問權限,action
是政策拒絕的服務行動,以及 resource
是策ARN略所執行的資源。所以此 context
欄位代表原則類型的其他內容,說明原則拒絕存取的原因。
當原則因為原則 AWS 包含Deny
陳述式而明確拒絕存取時,請在拒絕存取錯誤訊息with an explicit deny in a
中加入該片語。當原則隱含拒絕存取時,請在「拒絕存取」錯誤訊息type
policybecause no
中加入該字句。 AWS type
policy allows the
action
action
注意
某些 AWS 服務不支援此存取遭拒的錯誤訊息格式。存取遭拒錯誤訊息的內容可能會因提出授權請求的服務而有所不同。
以下範例顯示不同類型的拒絕存取錯誤訊息的格式。
因服務控制政策而拒絕存取 – 隱含拒絕
-
檢查服務控制原則 (SCPs) 中的動作是否有遺漏的
Allow
陳述式。對於下列範例,動作是codecommit:ListRepositories
。 -
SCP通過添加
Allow
聲明來更新您的。若要取得更多資訊,請參閱《使用指南》SCP中的AWS Organizations 〈更新〉。
User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: codecommit:ListRepositories because no service control policy allows the codecommit:ListRespositories action
因服務控制政策而拒絕存取 – 明確拒絕
-
檢查您的服務控制策略(SCPs)中的操作
Deny
聲明。對於下列範例,動作是codecommit:ListRepositories
。 -
SCP通過刪除
Deny
聲明來更新您的。若要取得更多資訊,請參閱《使用指南》SCP中的AWS Organizations 〈更新〉。
User: arn:aws:iam::777788889999:user/JohnDoe is not authorized to perform: codecommit:ListRepositories with an explicit deny in a service 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
。 -
將陳述式新增至您的IAM政策,以更新您的
Allow
權限界限。如需詳細資訊,請參閱 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要求因另一個原則而失敗時,存取遭拒
-
檢查服務控制策略(SCPs)中的操作的明確
Deny
聲明。對於下列範例,動作是SNS:Publish
。 -
SCP通過刪除
Deny
聲明來更新您的。若要取得更多資訊,請參閱《使用指南》SCP中的AWS IAM Identity Center 〈更新〉。
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