

# SEC03-BP02 授予最低權限存取權
<a name="sec_permissions_least_privileges"></a>

 最佳實務是僅授與身分在特定情況下對特定資源執行特定動作所需的存取權。使用群組和身分屬性大規模動態設定許可，而不是定義個別使用者的許可。例如，您可以允許一組開發人員的存取權，以只管理其專案的資源。如此，當開發人員退出專案時，其存取權將自動被撤銷，而無須變更基礎存取政策。 

**預期成果：**使用者應該只擁有完成其工作所需的許可。使用者只應獲得在有限時間內執行特定任務的生產環境存取權，且任務完成後，存取權就應該被撤銷。許可不再需要時就應撤銷，包括當使用者移至不同的專案或工作性質。管理員特權只應授予給一小部分受信任的管理員。並應定期檢查許可，避免許可滲透的問題。電腦或系統帳戶應被授予完成其任務所需的最小許可集。

**常見的反模式：**
+  預設授予使用者管理員許可。
+  使用根使用者來處理每日活動。
+  建立過於寬鬆的政策，但不具完整的管理員權限。
+  不檢閱許可，無法確定是否符合最低權限存取權。 

 **未建立此最佳實務時的風險暴露等級：**高 

## 實作指引
<a name="implementation-guidance"></a>

 [最低權限](https://docs.aws.amazon.com/latest/UserGuide/best-practices.html#grant-least-privilege)原則指出，只應允許身分執行完成特定任務所需的最小動作集。這平衡了可用性、效率和安全性。根據此原則運作有助於限制意外存取，也有助於追蹤誰有權存取哪些資源。IAM 使用者和角色在預設情況下沒有任何許可。根使用者預設擁有完整存取權，應該受到嚴格監控，並僅用於[需要根存取權的任務](https://docs.aws.amazon.com/accounts/latest/reference/root-user-tasks.html)。 

 IAM 政策用於明確授予許可給 IAM 角色或特定資源。例如，以身分為基礎的政策可以連接到 IAM 群組，而 S3 儲存貯體可由以資源為基礎的政策控制。 

 建立 IAM 政策時，您可以指定必須為 true 的服務動作、資源和條件，以便 AWS 允許或拒絕存取。AWS 支援各種條件，以協助您縮減存取權範圍。例如，透過使用 `PrincipalOrgID` [條件鍵](https://docs.aws.amazon.com/latest/UserGuide/reference_policies_condition-keys.html)，如果請求者不屬於您的 AWS 組織，您可以拒絕動作。 

 此外，您還可以使用 `CalledVia` 條件金鑰控制 AWS 服務代您發出的請求，例如建立 AWS Lambda 函數的 AWS CloudFormation。您應該將不同的政策類型分層，以便建立深度防禦並限制使用者的整體許可。您還可以限制在什麼條件下，可以授予哪些許可。例如，您可以允許應用程式團隊為他們建置的系統建立自己的 IAM 政策，但也必須同時套用[許可界限](https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/)來限制系統可以接受的最大許可。 

 **實作步驟** 
+  **實作最低權限政策**：將具有最低權限的存取政策指派給 IAM 群組和角色，以反映您已定義的使用者角色或職能。 
  +  **API 使用方式的基本政策**：決定所需許可的一個方法是檢查 AWS CloudTrail 日誌。這種檢查可讓您根據使用者在 AWS 中實際執行的動作，建立適合的許可。[IAM Access Analyzer 可根據[活動](https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/)自動產生 IAM 政策](https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/)。您可以在組織或帳戶層級使用 IAM Access Advisor 來[追蹤](https://docs.aws.amazon.com/latest/UserGuide/access_policies_access-advisor.html)[特定政策的最後存取資訊](https://docs.aws.amazon.com/latest/UserGuide/access_policies_access-advisor.html)。 
+  **考慮使用適用於各工作性質的 [AWS 受管政策](https://docs.aws.amazon.com/latest/UserGuide/access_policies_job-functions.html)。** 開始建立精細的許可政策時，可能不知道從何處開始。AWS 提供常見職務的受管政策，例如帳單、資料庫管理員和資料科學家。這些政策可協助縮小使用者的存取權，同時決定如何實施最低權限政策。 
+  **移除不需要的許可：**移除不需要的許可，並削減過於寬鬆的政策。[IAM Access Analyzer 政策產生](https://docs.aws.amazon.com/latest/UserGuide/access-analyzer-policy-generation.html)可協助微調許可政策。
+  **確保使用者對生產環境具有有限的存取權：**使用者應該只能存取具有有效使用案例的生產環境。在使用者執行完需要生產存取權的特定任務後，就應撤銷存取權。限制對生產環境的存取，有助於防止發生會影響生產的意外事件，也能降低意外存取的影響範圍。
+ **考慮使用許可界限：**許可界限是使用受管政策的功能，可設定以身分為基礎的政策可授與 IAM 實體的最大許可。實體的許可界限只允許執行其以身分為基礎的政策和許可界限同時允許的動作。 
+  **考慮許可的[資源標籤](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)：**使用資源標籤的屬性型存取控制模型，可讓您根據資源用途、擁有者、環境或其他條件來授予存取許可。例如，您可以使用資源標籤來區分開發環境和生產環境。使用這些標籤，您可以將開發人員限制在開發環境中。結合標記和許可政策，您可以實現精細的資源存取，無需為每個工作性質定義複雜的自訂政策。
+  **使用 [AWS Organizations 的服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。** 服務控制政策可集中控制組織中成員帳戶的最大可用許可。重要的是，服務控制政策還能讓您限制成員帳戶中的根使用者許可。此外，還可以考慮使用 AWS Control Tower，它提供規範性受管控制，可以豐富 AWS Organizations。您也可以在 Control Tower 中定義自己的控制項。 
+  **為您的組織制定使用者生命週期政策：**使用者生命週期政策定義了當使用者上線至 AWS、變更職務或範圍或不再需要存取 AWS 時要執行的任務。應在使用者生命週期的每個步驟中進行許可審查，以驗證許可是否受到適當限制並避免許可滲透的問題。 
+  **建立定期檢查許可的排程，並移除任何不需要的許可：**您應該定期檢查使用者存取權，確認使用者沒有過度寬鬆的存取權。[AWS Config](https://aws.amazon.com/config/) 和 IAM Access Analyzer 可以在稽核使用者許可時提供幫助。
+ **建立職務矩陣：**職務矩陣會以視覺化的方式顯示您 AWS 據點內所需的各種角色和存取層級。使用職務矩陣，您可以根據組織內的使用者職責定義和區分許可。使用群組，而不是將許可直接套用至個別使用者或角色。**  **

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [授予最低權限](https://docs.aws.amazon.com/latest/UserGuide/best-practices.html?ref=wellarchitected#grant-least-privilege) 
+  [IAM 實體的許可界限](https://docs.aws.amazon.com/latest/UserGuide/access_policies_boundaries.html) 
+  [寫入最低權限 IAM 政策的技巧](https://aws.amazon.com/blogs/security/techniques-for-writing-least-privilege-iam-policies/) 
+  [IAM Access Analyzer 透過根據存取活動產生 IAM](https://aws.amazon.com/blogs/security/iam-access-analyzer-makes-it-easier-to-implement-least-privilege-permissions-by-generating-iam-policies-based-on-access-activity/) [政策](https://aws.amazon.com/blogs/security/iam-access-analyzer-makes-it-easier-to-implement-least-privilege-permissions-by-generating-iam-policies-based-on-access-activity/)，來輕鬆實作最低權限許可 
+  [使用 IAM 許可界限，將許可管理委託給開發人員](https://aws.amazon.com/blogs/security/delegate-permission-management-to-developers-using-iam-permissions-boundaries/) 
+  [使用上次存取的資訊以精簡許可](https://docs.aws.amazon.com/latest/UserGuide/access_policies_access-advisor.html) 
+  [IAM 政策類型以及何時使用這些政策](https://docs.aws.amazon.com/latest/UserGuide/access_policies.html) 
+  [使用 IAM 政策模擬器測試 IAM 政策](https://docs.aws.amazon.com/latest/UserGuide/access_policies_testing-policies.html) 
+  [AWS Control Tower 中的防護機制](https://docs.aws.amazon.com/controltower/latest/userguide/guardrails.html) 
+  [零信任架構：AWS 觀點](https://aws.amazon.com/blogs/security/zero-trust-architectures-an-aws-perspective/) 
+  [如何使用 CloudFormation StackSets 實作最低權限原則](https://aws.amazon.com/blogs/security/how-to-implement-the-principle-of-least-privilege-with-cloudformation-stacksets/) 
+  [屬性型存取控制 (ABAC)](https://docs.aws.amazon.com/latest/UserGuide/introduction_attribute-based-access-control.html?ref=wellarchitected) 
+ [透過查看使用者活動來縮小政策範圍](https://docs.aws.amazon.com/latest/UserGuide/access_policies_access-advisor.html?ref=wellarchitected) 
+  [檢視角色存取](https://docs.aws.amazon.com/latest/UserGuide/id_roles_manage_delete.html?ref=wellarchitected#roles-delete_prerequisites) 
+  [使用標記來組織環境並提高責任心](https://docs.aws.amazon.com/aws-technical-content/latest/cost-optimization-laying-the-foundation/tagging.html?ref=wellarchitected) 
+  [AWS 標記策略](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/?ref=wellarchitected) 
+  [標記 AWS 資源](https://aws.amazon.com/premiumsupport/knowledge-center/quicksight-iam-identity-center/) 

 **相關影片：** 
+  [下一代許可管理](https://www.youtube.com/watch?v=8vsD_aTtuTo) 
+  [零信任：AWS 觀點](https://www.youtube.com/watch?v=1p5G1-4s1r0) 
+  [我如何使用許可界限，來限制使用者和角色避免權限升級？](https://www.youtube.com/watch?v=omwq3r7poek) 

 **相關範例：** 
+  [實驗室：IAM 許可界限委派角色建立](https://wellarchitectedlabs.com/Security/300__Permission_Boundaries_Delegating_Role_Creation/README.html) 
+  [實驗室：EC2 的 IAM 標籤型存取控制](https://wellarchitectedlabs.com/Security/300__Tag_Based_Access_Control_for_EC2/README.html?ref=wellarchitected) 