中的跨帳戶資源存取 IAM - AWS Identity and Access Management

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

中的跨帳戶資源存取 IAM

對於某些 AWS 服務,您可以使用 授予 資源的跨帳戶存取權IAM。若要執行此操作,您可將直接將資源政策連接到您要分享的資源,或將角色用作代理。

若要直接分享資源,您要分享的資源必須支援資源型政策。與角色的身分型政策不同,資源型政策指定誰 (主體) 可以存取該資源。

如果想要存取不支援資源型政策之其他帳戶中的資源,則請將角色用作代理。

如需有關這些政策類型之間差異的詳細資訊,請參閱 以身分為基礎和以資源為基礎的政策

注意

IAM 角色和資源型政策只會在單一分割區中委派跨帳戶的存取權。例如,您在標準 aws 分割區的美國西部 (加利佛尼亞北部) 中有一個帳戶。您在 aws-cn 分割區的中國也有一個帳戶。您無法在中國的帳戶中使用資源型政策,以允許標準 AWS 帳戶中的使用者存取 。

使用角色進行跨帳戶存取

並非所有 AWS 服務都支援資源型政策。對於這些服務,您可以在提供跨帳戶存取多個服務時,使用跨帳戶IAM角色來集中管理許可。跨帳戶IAM角色是包含信任政策IAM的角色,允許另一個 AWS 帳戶中的IAM主體擔任該角色。簡而言之,您可以在一個 AWS 帳戶中建立角色,將特定許可委派給另一個 AWS 帳戶。

如需有關將政策連接至IAM身分的資訊,請參閱 管理IAM政策

注意

當主體切換到某個角色以暫時使用角色的許可時,他們會放棄其原始許可,並接受指派給他們假設之角色的許可。

我們來看看整體程序,因為它適用於需要存取客戶帳戶的APN合作夥伴軟體。

  1. 客戶在自己的帳戶中建立IAM角色,其政策允許存取APN合作夥伴所需的 Amazon S3 資源。在此範例中,角色名稱為 APNPartner

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::bucket-name" ] } ] }
  2. 然後,客戶在角色的信任政策中提供APN合作夥伴的 AWS 帳戶 ID,指定APNPartner該角色可由合作夥伴 AWS 的帳戶擔任。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::APN-account-ID:role/APN-user-name" }, "Action": "sts:AssumeRole" } ] }
  3. 客戶將角色的 Amazon Resource Name (ARN) 提供給APN合作夥伴。ARN 是角色的完整名稱。

    arn:aws:iam::APN-ACCOUNT-ID:role/APNPartner
    注意

    建議在多租戶情況下使用外部 ID。如需詳細資訊,請參閱 訪問由第三方 AWS 帳戶 擁有

  4. 當APN合作夥伴的軟體需要存取客戶帳戶時,軟體會使用客戶帳戶中角色ARN的 AssumeRole API AWS Security Token Service 呼叫 中的 。STS 會傳回暫時 AWS 憑證,允許軟體執行其工作。

如需使用角色授予跨帳户存取權的另一個範例,請參閱 您擁有的其他IAM使用者 AWS 帳戶 的存取權。您也可以參照 IAM 教學課程:使用 IAM 角色委派跨 AWS 帳戶的存取權

使用資源型政策的跨帳户存取權

帳戶使用資源型政策透過另一個帳戶存取資源時,主體仍可在受信任帳戶中運作,不需為了接受角色許可而放棄其許可。換言之,主體在存取信任帳戶中的資源時,仍可繼續存取受信任帳戶中的資源。這對於像複製資訊到其他帳戶中的共同資源,或從其複製而來的任務,非常受用。

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

若要了解在您信任區域外帳戶 (信任組織或帳戶) 中的主體是否可擔任您的角色,請參閱識別與外部實體共用的資源

下列清單包含支援資源型政策的部分 AWS 服務。如需支援將許可政策連接至資源而非主體 AWS 之服務數量增加的完整清單,請參閱資源型欄中的 AWS 使用 IAM 的 服務和 尋找具有的服務。

  • Amazon S3 儲存貯體 – 政策連接到儲存貯體,但政策控制項同時存取儲存貯體和其中的物件。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的 Amazon S3 儲存貯體政策在某些情況下,最好使用角色以跨帳戶存取 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身分。身分是您帳戶中的使用者、使用者群組或角色。您可以將政策連接至身分以委派許可。您授予的許可上限為擁有資源的帳戶所允許的最大許可。

重要

在跨帳戶存取中,主體在身分型政策資源型政策中需要 Allow

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

如需有關如何做出這些決策的詳細資訊,請參閱確定帳戶內是否允許或拒絕請求

注意

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

例如,假設您管理 AccountAAccountB。在 AccountA 中,您具有名為 BucketA 的 Amazon S3 儲存貯體。

針對 Amazon S3 儲存貯體建立的資源型政策可為 AccountA 提供 AccountB 許可。
  1. 您可以將資源型政策連接至 BucketA,以允許 AccountB 中的所有主體完整存取儲存貯體中的物件。他們可以建立、讀取或刪除該儲存貯體中的任何物件。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "PrincipalAccess", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::AccountB:root"}, "Action": "s3:*", "Resource": "arn:aws:s3:::BucketA/*" } ] }

    透過將 AccountB 命名為資源型政策中的主體,AccountA 允許 AccountB 完整存取 BucketA。因此,AccountB 獲得授權可對 BucketA 執行任何動作,而 AccountB 管理員可以將存取權委派給它在 AccountB 的使用者。

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

  2. 在 AccountB 中,將政策連接至名為 User2 IAM的使用者。該政策允許使用者唯讀存取 BucketA 中的物件。這表示 User2 可以檢視物件,但無法建立、編輯或刪除物件。

    { "Version": "2012-10-17", "Statement": [ { "Effect" : "Allow", "Action" : [ "s3:Get*", "s3:List*" ], "Resource" : "arn:aws:s3:::BucketA/*" } ] }

    AccountB 可委派的最大存取層級是授予帳戶的存取層級。在此情況下,資源型政策將完整存取授予 AccountB,但只將唯讀存取授予 User2。

    AccountB 管理員不提供存取權給 User1。依預設,除了明確授予的許可外,使用者不具備任何許可,因此 User1 無權存取 BucketA。

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

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

如需有關角色的複雜使用詳細資訊,例如授予應用程式和服務存取權,請參閱 IAM角色的常見案例

重要

只將存取權給予您信任的實體,並提供最低必要存取權。每當受信任實體是另一個 AWS 帳戶時,任何IAM主體都可以被授予資源的存取權。受信任 AWS 帳戶只能在授予存取權的範圍內委派存取權;其授予的存取權不能超過帳戶本身。

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