IAM 角色與基於資源的政策有何差異 - AWS Identity and Access Management

IAM 角色與基於資源的政策有何差異

對於某些 AWS 服務,您可以授予跨帳戶存取資源的許可。若要執行此操作,您可將直接將政策連接到您要分享的資源,而不是以代理方式使用角色。您要分享的資源必須支援以資源為基礎的政策。與以身分識別為基礎的政策不同,以資源為基礎的政策指定誰 (主體) 可以存取該資源。

注意

IAM 角色和以資源為基礎的政策只會在單一分割內跨帳戶委派存取權。例如,假設您在標準 aws 分割區的美國西部 (加利佛尼亞北部) 中有一個帳戶。您在 aws-cn 分割區的中國 (北京) 中也有一個帳戶。您不能使用中國 (北京) 中帳戶的 Amazon S3 以資源為基礎的政策,對標準 aws 帳戶中的使用者允許存取權。

使用以資源為基礎的政策來跨帳戶存取,比使用角色來跨帳戶存取更具有優勢。若是透過以資源為基礎的政策來存取資源,主體仍可在受信任帳戶中運作,不需為了接受角色許可而放棄其許可。換言之,主體在存取信任帳戶中的資源之際,仍可繼續存取受信任帳戶中的資源。這對於像複製資訊到其他帳戶中的共同資源,或從其複製而來的任務,非常受用。若要了解在您信任區域 (受信任組織或帳戶) 外帳戶中的主體是否具有擔任您角色的許可,請參閱什麼是 IAM Access Analyzer?

在以資源為基礎的政策中,您可以指定的主體包括帳戶、IAM 使用者、聯合身分使用者、IAM 角色、擔任的角色工作階段或 AWS 服務。如需詳細資訊,請參閱 指定主體

下列清單包含的一些 AWS 服務支援以資源為基礎的政策。如需不斷增長的 AWS 服務 (支援連接許可政策至資源而非主體) 數量的完整清單,請參閱可搭配 IAM 運作的 AWS 服務,並且尋找Resource Based (資源基礎) 欄中為 Yes (是) 的服務。

  • Amazon S3 儲存貯體 – 政策連接到儲存貯體,但政策控制項同時存取儲存貯體和其中的物件。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的存取控制

    在某些情況下,最好使用角色以跨帳戶存取 Amazon S3。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的範例演練

  • Amazon Simple Notification Service (Amazon SNS) 主題 – 如需詳細資訊,請前往《Amazon Simple Notification Service 開發人員指南》中的管理 Amazon SNS 主題的存取

  • Amazon Simple Queue Service (Amazon SQS) 佇列 – 如需詳細資訊,請前往《Amazon Simple Queue Service 開發人員指南》中的附錄:存取原則語言

關於以資源為基礎的政策委派 – AWS許可

如果資源將許可授予您帳戶中的主體,您可以將這些許可委派給特定的 IAM 身分。身分是您帳戶中的使用者、使用者群組或角色。您可以將政策連接至身分以委派許可。您授予的許可上限為擁有資源的帳戶所允許的最大許可。

假設以資源為基礎的政策允許您帳戶中的所有主體具有資源的完整管理存取權。然後,您可以將完整存取、唯讀存取或任何其他局部存取,委派給 AWS 帳戶 中的主體。或者,如果以資源為基礎的政策只允許列出許可,則您只能委派列出存取權。如果您嘗試委派比您的帳戶還多的許可,則您的主體仍然只有列出存取權。如需有關將政策連接至 IAM 身分的資訊,請參閱 管理 IAM 政策

注意

IAM 角色和以資源為基礎的政策只會在單一分割內跨帳戶委派存取權。例如,您無法在標準 aws 分割區的帳戶和 aws-cn 分割區的帳戶之間,新增跨帳戶存取權。

例如,假設您管理 AccountAAccountB。在 AccountA 中,您具有名為 BucketA 的 Amazon S3 儲存貯體。您可以將以資源為基礎的政策連接至 BucketA,以允許所有 AccountB 主體完整存取儲存貯體中的物件。他們可以建立、讀取或刪除該儲存貯體中的任何物件。在 AccountB 中,您可以將政策連接至名為 User2 的 IAM 使用者。該政策允許使用者唯讀存取 BucketA 中的物件。這表示 User2 可以檢視物件,但無法建立、編輯或刪除物件。


        將存取權委派給 AWS 帳戶
  1. AccountA 在以資源為基礎的政策中將 AccountB 指名為主體,以允許BucketA 完整存取 AccountB。因此,AccountB 獲授權在 BucketA 上執行任何動作,AccountB 管理員可以在 AccountB 中將存取權委派給其使用者。

  2. AccountB 根使用者具有授予帳戶的所有許可。因此,根使用者具有 BucketA 的完整存取權。

  3. AccountB 管理員不授予存取權給 User1。根據預設,除了明確授予的許可,使用者沒有任何許可。因此,User1 沒有 BucketA 的存取權。

  4. AccountB 管理員允許 User2 唯讀存取 BucketAUser2 可以檢視儲存貯體中的物件。AccountB 可委派的最大存取層級是授予帳戶的存取層級。在此情況下,以資源為基礎的政策將完整存取授予 AccountB,但只將唯讀存取授予 User2

IAM 會在主體提出請求時評估主體的許可。因此,如果您使用萬用字元 (*) 來允許使用者完整存取您的資源,則主體可以存取您的 AWS 帳戶 所能存取的任何資源。即使對於您在建立使用者政策後新增或取得存取權的資源,也是如此。

在上述範例中,如果 AccountB 已將政策連接至 User2,而此政策允許完整存取所有帳戶中的所有資源,則 User2 可自動存取 AccountB 能夠存取的任何資源。這包括 BucketA 存取,以及 AccountA 中以資源為基礎的政策所授予對任何其他資源的存取。

重要

只將存取權給予您信任的實體,並提供最低必要存取權。每當信任的實體成為另一個 AWS 帳戶 時,該帳戶就可以輪流將存取權委派給其任何 IAM 使用者。信任的 AWS 帳戶 只能委派存取權至已獲授權的範圍,它無法委派比帳戶本身被授予的更多存取權。

如需有關許可、政策以及用於撰寫政策的許可政策語言的詳細資訊,請參閱AWS 資源的存取管理