AWS 強制執行程式碼邏輯如何評估請求以允許或拒絕存取 - AWS Identity and Access Management

AWS 強制執行程式碼邏輯如何評估請求以允許或拒絕存取

AWS 強制執行程式碼會決定是否應允許或拒絕傳送至 AWS 的請求。AWS 會評估適用於請求內容的所有政策。以下是 AWS 政策評估邏輯的摘要。

  • 根據預設,所有的要求會一律拒絕 (AWS 帳戶根使用者 提出的要求例外,該使用者具有完整存取權)。

  • 允許以下評估邏輯後,請求必須得到某個政策或一組政策的明確允許。

  • 明確拒絕會覆寫明確允許。

下列流程圖提供有關如何針對單一帳戶和跨帳戶存取做出決策的詳細資訊。

評估流程圖
  • 拒絕評估 – 根據預設,所有的請求一律拒絕。這稱為隱含拒絕。AWS 強制執行程式碼會在帳戶內評估所有套用到請求的政策。這包括 AWS Organizations SCP 和 RCP、資源型政策、身分型政策、IAM 許可界限和工作階段政策。在所有這些政策中,強制執行程式碼會尋找套用到請求的 Deny 陳述式。此稱為明確拒絕。如果強制執行程式碼找到一個適用的明確拒絕,則強制執行程式碼會傳回拒絕這一最後決定。如果沒有明確拒絕,該強制執行程式碼評估會持續執行。

  • Organizations SCP:強制執行程式碼會評估套用到該請求的 AWS Organizations 資源制政策 (RCP)。RCP 適用於 RCP 所連接的帳戶資源。如果強制執行程式碼在 RCP 中找不到任何適用的 Allow 陳述式,則強制執行程式碼會傳回拒絕這一最終決定。請注意,啟用 RCP 時,會自動建立名為 AWS 的 RCPFullAWSAccess 受管政策並連接到組織中的每個實體,包括根實體、每個 OU 以及 AWS 帳戶。RCPFullAWSAccess 無法分離,因此始終會有 Allow 陳述式。如果 RCP 不存在,或 RCP 允許請求的動作,強制執行程式碼評估就會繼續執行。

  • Organizations SCP:強制執行程式碼會評估套用到該請求的 AWS Organizations 服務控制政策 (SCP)。SCP 會套用至連接 SCP 的帳戶之主體。如果強制執行程式碼在 SCP 中找不到任何適用的 Allow 陳述式,則強制執行程式碼會傳回拒絕這一最終決定。如果 SCP 不存在,或是 SCP 允許請求動作,強制執行程式碼評估就會繼續執行。

  • 資源型政策 – 在同一帳戶內,資源型政策會根據存取資源的主體類型以及資源型政策中允許的主體,以不同的方式影響政策評估。根據主體類型,資源型政策中的 Allow 可能會導致 Allow 的最終決定,即使身分型識別政策、許可界限或工作階段政策中有隱含拒絕。

    針對大部分資源,您只需要在身分型政策或資源型政策中對主體提供明確 Allow,即可授予存取權。IAM 角色信任政策KMS 金鑰政策是此邏輯的例外,因為這些政策必須明確允許存取主體

    如果指定的主體是 IAM 使用者、IAM 角色或工作階段主體,資源型政策的邏輯就會與其他政策類型有所不同。工作階段主體包括 IAM角色工作階段IAM 聯合身分使用者工作階段。如果資源型政策直接將許可授予 IAM 使用者或提出要求的工作階段主體,則身分識別型政策、許可界限或工作階段政策中的隱含拒絕不會影響最終決定。

    • IAM 角色 – 將許可授予 IAM 角色 ARN 的資源型政策受限於許可界限或工作階段政策中隱含拒絕的限制。您可以在主體元素或 aws:PrincipalArn 條件索引鍵中指定角色 ARN。在這兩種情況下,發出請求的主體是 IAM 角色工作階段

      許可界限和工作階段政策不會限制在主體元素中使用 aws:PrincipalArn 條件索引鍵與萬用字元 (*) 所授予的許可,除非身分型政策包含明確拒絕。如需詳細資訊,請參閱IAM 角色主體

      角色 ARN 範例

      arn:aws:iam::111122223333:role/examplerole
    • IAM 角色工作階段 – 在同一帳戶內,將許可授予 IAM 角色工作階段 ARN 的資源型政策直接授予許可給擔任的角色工作階段。直接授予工作階段的許可不會受到身分識別型政策、許可界限或工作階段政策中隱含拒絕的限制。當您擔任角色並提出要求時,提出要求的主體是 IAM 角色工作階段 ARN,而不是角色本身的 ARN。如需詳細資訊,請參閱角色工作階段主體

      角色工作階段 ARN 範例

      arn:aws:sts::111122223333:assumed-role/examplerole/examplerolesessionname
    • IAM 使用者 – 在同一帳戶內,將許可授予 IAM 使用者 ARN (非聯合身分使用者工作階段) 的資源型政策不受身分識別型政策或許可界限中隱含拒絕的限制。

      IAM 使用者 ARN 範例

      arn:aws:iam::111122223333:user/exampleuser
    • IAM 聯合身分使用者工作階段 – IAM 聯合身分使用者工作階段是透過呼叫 GetFederationToken 建立的工作階段。當聯合身分使用者提出要求時,提出要求的主體是聯合身分使用者 ARN,而不是聯合身分 IAM 使用者的 ARN。在相同的帳戶中,授予許可給聯合身分使用者 ARN 的資源型政策會直接將許可授予工作階段。直接授予工作階段的許可不會受到身分識別型政策、許可界限或工作階段政策中隱含拒絕的限制。

      但是,如果資源型政策將許可授予聯合身分 IAM 使用者的 ARN,則聯合身分使用者在工作階段期間提出的要求會受到許可界限或工作階段政策中隱含拒絕的限制。

      IAM 聯合身分使用者工作階段 ARN 範例

      arn:aws:sts::111122223333:federated-user/exampleuser
  • 身分型政策:強制執行程式碼會檢查主體的身分型政策。若為 IAM 使用者,這些政策會包含使用者政策,以及使用者所屬群組的政策。如果沒有任何身分型政策或其中的任何陳述式允許請求的動作,則表示請求已遭隱含拒絕,且強制執行程式碼會傳回拒絕這一最終決定。如果任何適用的身分型政策中有任一陳述式允許請求的動作,則程式碼評估會繼續執行。

  • IAM 許可界限:強制執行程式碼會檢查主體所使用的 IAM 實體是否有許可界限。如果用來設定許可界限的政策不允許該請求動作,則表示請求已遭隱含拒絕。強制執行程式碼傳回拒絕的最後決定。如果許可界限不存在,或是許可界限允許請求的動作,程式碼評估就會繼續執行。

  • 工作階段政策:強制執行程式碼會檢查主體是否為工作階段主體。工作階段主體包括 IAM 角色工作階段或 IAM 聯合身分使用者工作階段。如果主體不是工作階段主體,則強制執行程式碼會傳回允許的最終決定。

    對於工作階段主體,強制執行程式碼會檢查工作階段政策是否已在請求中傳遞。您可以在使用 AWS CLI 或 AWS API 取得角色或 IAM 聯合身分使用者的暫時憑證時,同時傳遞工作階段政策。如果未傳遞工作階段政策,則會建立預設工作階段政策,且強制執行程式碼會傳回允許這一最終決定。

    • 如果工作階段政策存在,且不允許該要求動作,則表示要求已遭隱含拒絕。強制執行程式碼傳回拒絕的最後決定。

    • 強制執行程式碼會檢查主體是否為角色工作階段。如果主體是角色工作階段,則要求為已允許。否則,會隱含拒絕請求,強制執行程式碼會傳回拒絕這一最終決定。

    • 如果有工作階段政策,且政策允許該要求動作,則強制執行程式碼會傳回允許的最終決定。