受管政策與內嵌政策 - AWS Identity and Access Management

受管政策與內嵌政策

如果您需要在 IAM 中為身分設定許可,您必須決定要使用 AWS 受管政策、客戶管理政策還是內嵌政策。以下幾個部分提供了有關每個類型的身分型政策以及使用時機的更多資訊。

AWS 受管政策

「AWS 受管政策」為獨立的政策,由 AWS 建立並管理。獨立政策表示政策有自己的 Amazon Resource Name (ARN),其中包含政策名稱。例如,arn:aws:iam::aws:policy/IAMReadOnlyAccess 是一種 AWS 受管政策。如需有關 ARN 的詳細資訊,請參閱 IAM ARN

AWS 受管政策可用於為許多常用案例提供許可。AmazonDynamoDBFullAccessIAMFullAccess 之類的完整存取 AWS 受管政策透過將完整存取授予服務來定義服務管理員的許可。AWSCodeCommitPowerUserAWSKeyManagementServicePowerUser 之類的進階 AWS 受管政策專為高階使用者設計。AmazonMobileAnalyticsWriteOnlyAccessAmazonEC2ReadOnlyAccess 這類部分存取 AWS 受管政策提供 AWS 服務的特定存取層級,而不提供許可管理存取層級的許可。AWS 受管政策可讓您更輕鬆地將適當許可指派給使用者、群組和角色,而不需自行撰寫政策。

那些專為工作職能設計的政策是一個特別有用的 AWS 受管政策類別。這些政策與 IT 業界的常用工作職能緊密貼合。目的是讓為這些常見工作職能授予許可變得簡單。使用工作職能政策的一個重要優勢是,在推出新的服務和 API 操作時,AWS 可對這些政策進行維護和更新。例如,AdministratorAccess 工作職能提供對 AWS 中的每個服務和資源的完整存取權和許可委派。我們建議此政策僅可用於帳戶管理員。對於高階使用者 (除了 IAM 與 Organizations 的有限存取權以外,需要所有服務的完整存取權),請使用 PowerUserAccess 任務角色。如需有關工作職能政策的清單和說明,請參閱任務函数的 AWS 受管政策

您無法更改 AWS 受管政策中定義的許可。AWS 有時會更新 AWS 受管政策中定義的許可。當 AWS 執行此操作時,更新會影響政策連接的所有主體實體 (使用者、群組和角色)。在推出新的 AWS 服務或為現有服務提供新的 API 呼叫時,AWS 很可能會更新 AWS 受管政策。例如,名為 ReadOnlyAccess 的 AWS 受管政策提供針對所有 AWS 服務和資源的唯讀存取許可。在 AWS 推出新的服務時,AWS 將更新 ReadOnlyAccess 政策,以便為新服務加入唯讀許可。更新的許可會套用於政策連接到的所有主體實體。

下圖說明 AWS 受管政策。該圖顯示三個 AWS 受管政策:AdministratorAccessPowerUserAccess 以及 AWS CloudTrailReadOnlyAccess。請注意,單一 AWS 受管政策可以連接到不同 AWS 帳戶中的主體實體,也可以連接到單一 AWS 帳戶中的不同主體實體。


        AWS 受管政策示意圖

客戶管理政策

您可以建立獨立政策並在自己的 AWS 帳戶中管理,就是我們所謂的客戶管理政策。接著可以將這些政策連接到您 AWS 帳戶中的多個主體實體。將政策連接到主體實體時,便向實體授予了政策中定義的許可。

建立客戶管理政策的理想方式是從複製一個現有 AWS 受管政策開始。這樣從一開始您就可以確信政策是正確的,只需根據您的環境進行自訂即可。

下圖說明客戶管理政策。每個政策都是 IAM 中的一個實體,有自己的 Amazon Resource Name (ARN),其中包含政策名稱。請注意,同一政策可以連接到多個主體實體,例如,同一個 DynamoDB-books-app 政策可連接到兩個不同的 IAM 角色。


        客戶管理政策示意圖

開始使用許可搭配 AWS 受管政策

我們建議使用授予最低權限的政策,或僅授予執行任務所需的許可。授予最低權限的最安全方式是撰寫僅具有團隊所需許可的客戶管理政策。您必須建立程序,以允許您的團隊在必要時要求更多許可。建立 IAM 客戶管理政策需要時間和專業知識,而受管政策可為您的團隊提供其所需的許可。

若要開始為 IAM 身分 (使用者、使用者群組和角色) 新增許可,您可以使用 AWS 受管政策。AWS 受管政策不會授予最低權限的許可。若授予主體的許可超出執行任務所需的許可,您必須考量其相關的安全性風險。

您可以將 AWS 受管政策 (包括任務角色) 連接至任何 IAM 身分。若要切換至最低權限許可,您可執行 AWS Identity and Access Management Access Analyzer 以使用 AWS 受管政策來監控主體。了解他們正在使用哪些許可後,您可以撰寫自訂政策或產生僅具有團隊所需許可的政策。這不太安全,但可在您了解團隊如何使用 AWS 時提供更大的靈活性。

AWS 受管政策可用於為許多常用案例提供許可。如需有關專為特定任務角色設計的 AWS 受管理政策的詳細資訊,請參閱 任務函数的 AWS 受管政策

內嵌政策

內嵌政策是內嵌在 IAM 身分 (使用者、群組或角色) 中的政策。也就是說,政策是身分的固有部分。在建立身分時或在建立之後,您可以建立政策並將其嵌入身分。

下圖說明內嵌政策。每個政策都是使用者、組或角色的固有部分。請注意,兩個角色包含同一政策 (DynamoDB-books-app 政策),但是它們不共享單一政策;每個角色都有自己的政策副本。


        內嵌政策示意圖

在受管政策與內嵌政策之間進行選擇

不同類型的政策適用於不同的使用案例。在大多數情況下,我們建議使用受管政策而非內嵌政策。

受管政策具備以下功能:

可重複使用性

單一受管政策可以連接到多個主體實體 (使用者、群組和角色)。實際上,您可以建立政策庫,在政策庫中定義對您 AWS 帳戶有幫助的許可,然後根據需要將這些政策連接到主體實體。

集中變更管理

更改受管政策時,更改會套用於政策連接到的所有主體實體。例如,如果要針對新 AWS API 新增許可,則可以更新受管政策以新增許可。(如果使用 AWS 受管政策,AWS 會更新為該政策。) 更新政策時,更改會套用於政策連接到的所有主體實體。反之,若要更改內嵌政策,您必須分別編輯包含該政策的每個身分。例如,如果一個群組和一個角色都包含同一內嵌政策,則您必須分別編輯這兩個主體實體以便更改該政策。

版本控制和還原

在更改客戶管理政策時,更改的政策不會覆蓋現有的政策。IAM 反而會建立新版本的受管政策。IAM 最多可以儲存五個版本的客戶管理政策。如果需要,可以使用政策版本將政策還原為較早版本。

注意

政策版本與 Version 政策元素不同。Version 政策元素是在政策內使用,並定義政策語言的版本。若要進一步了解政策版本,請參閱 版本控制 IAM 政策。若要進一步了解 Version 政策元素,請參閱 IAM JSON 政策元素:Version

委派許可管理

您可以允許您 AWS 帳戶中的使用者連接和分開政策,同時保持對這些政策中定義的許可的控制。實際上,您可以將一些使用者指定為完全管理員,也就是建立、更新和刪除政策的管理員。隨後可以將其使用者指定為受限管理員。也就是,可以將政策 (限於您允許連接的政策) 連接到其他主體實體的管理員。

如需有關委派許可管理的詳細資訊,請參閱 控制對政策的存取

AWS 受管政策的自動更新

AWS 會維護 AWS 受管政策並在需要時更新它們 (例如,針對新 AWS 服務新增許可),而您不必進行更改。更新會自動套用到已連接了 AWS 受管政策的主體實體。

使用內嵌政策

如果您要在政策與套用它的身分之間維持嚴格的一對一關聯性,則內嵌政策十分有用。例如,您要確保政策中的許可不會無意中分配給預期身分之外的身分。使用內嵌政策時,政策中的許可不能意外分配給錯誤的身分。此外,使用 AWS Management Console刪除身分時,也會刪除嵌入在身分中的政策。因為它們是主體實體的一部分。

將內嵌政策轉換為受管政策

如果您在您的帳戶中擁有內嵌政策,您可以將它們轉換為受管政策。若要執行此操作,請將該政策複製到新的受管政策。接下來,將新政策連接到具有內嵌政策的身分,然後刪除內嵌政策。您可使用下列指示來執行此作業:

將內嵌政策轉換為受管政策

  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在服務導覽窗格中,選擇 User groups (使用者群組)、Users (使用者) 或者 Roles (角色)。

  3. 在清單中,選擇包含要刪除的政策的使用者群組、使用者、或角色的名稱。

  4. 選擇 Permissions (許可) 標籤。

  5. 針對使用者群組,選取要移除之內嵌政策的名稱。針對使用者和角色,選擇 Show n more (顯示更多項目),並在必要時選擇您想要移除之內嵌政策旁邊的箭頭。

  6. 複製該政策的 JSON 政策文件。

  7. 在導覽窗格中,選擇 Policies (政策)。

  8. 選擇 Create policy (建立政策),然後選擇 JSON 標籤。

  9. 將現有的文字取代為您的 JSON 政策文字,然後選擇 Review policy (檢視政策)。

  10. 輸入您政策的名稱,然後選擇 Create policy (建立政策)。

  11. 在導覽窗格中選擇 User groups (使用者群組)、Users (使用者) 或 Roles (角色),並再次選擇擁有您想要移除之政策的使用者群組、使用者或角色的名稱。

  12. 針對使用者群組,請選擇 Permissions (許可) 索引標籤。針對使用者和角色,選擇 Add permissions (新增許可)。

  13. 針對使用者群組,選取新政策名稱旁的核取方塊,然後依序選擇 Add permissions (新增許可)、Attach policy (連接政策)。針對使用者或角色,選擇 Add permissions (新增許可)。在下一頁面上,選擇 Attach existing policies directly (直接連接現有政策),選取新政策名稱旁的核取方塊,選擇 Next: Review (下一步:檢閱),然後選擇 Add permissions (新增許可)。

    系統會將您傳回到使用者群組、使用者或角色的 Summary (摘要) 頁面。

  14. 針對使用者群組,選取您要移除之內嵌政策旁的核取方塊,然後選擇 Remove (移除)。針對使用者或角色,選擇您要移除之內嵌政策旁的 X