

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

# IAM 中的跨帳戶資源存取
<a name="access_policies-cross-account-resource-access"></a>

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

若要直接分享資源，您要分享的資源必須支援[資源型政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_access-management.html#intro-access-resource-based-policies)。與角色的身分型政策不同，資源型政策指定誰 (主體) 可以存取該資源。

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

如需有關這些政策類型之間差異的詳細資訊，請參閱 [以身分為基礎和以資源為基礎的政策](access_policies_identity-vs-resource.md)。

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

## 使用角色進行跨帳戶存取
<a name="access_policies-cross-account-using-roles"></a>

並非所有 AWS 服務都支援以資源為基礎的政策。對於這些服務，在向多個服務提供跨帳户存取權時，可以使用跨帳戶 IAM 角色集中管理許可。跨帳戶 IAM 角色是一種 IAM 角色，其中包含[信任政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#term_trust-policy)，允許另一個 AWS 帳戶中的 IAM 主體擔任該角色。簡單來說，您可以在一個 AWS 帳戶中建立角色，將特定許可委派給另一個 AWS 帳戶。

如需有關將政策連接至 IAM 身分的資訊，請參閱 [管理 IAM 政策](access_policies_manage.md)。

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

讓我們看一下整體流程，因為其適用於需要存取客戶帳戶的 APN 合作夥伴軟體。

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

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "s3:*",
               "Resource": [
                   "arn:aws:s3:::bucket-name"
               ]
           }
       ]
   }
   ```

------

1. 然後，客戶透過在角色的[信任政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)中提供 APN 合作夥伴的 AWS 帳戶 ID，指定`APNPartner`該角色可由合作夥伴 AWS 的帳戶擔任。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::{{111122223333}}:role/{{APN-user-name}}"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. 客戶將角色的 Amazon Resource Name (ARN) 提供給 APN 合作夥伴。ARN 是角色的完整名稱。

   ```
   arn:aws:iam::{{Customer-Account-ID}}:role/{{APNPartner}}
   ```
**注意**  
建議在多租戶情況下使用外部 ID。如需詳細資訊，請參閱[存取第三方 AWS 帳戶 擁有的](id_roles_common-scenarios_third-party.md)。

1. 當 APN 合作夥伴的軟體需要存取客戶帳戶時，軟體會使用客戶帳戶中角色的 AWS Security Token Service ARN 呼叫 中的 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API。STS 會傳回暫時 AWS 登入資料，允許軟體執行其工作。

如需使用角色授予跨帳户存取權的另一個範例，請參閱 [在您擁有的另一個 IAM 使用者中 AWS 帳戶 存取](id_roles_common-scenarios_aws-accounts.md)。您也可以參照 [IAM 教學課程：使用 IAM 角色在 AWS 帳戶之間委派存取權](tutorial_cross-account-with-roles.md)。

## 使用資源型政策的跨帳户存取權
<a name="access_policies-cross-account-using-resource-based-policies"></a>

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

您可以在資源型政策中指定的委託人包括帳戶、IAM 使用者、 AWS STS 聯合身分使用者委託人、SAML 聯合身分委託人、OIDC 聯合身分委託人、IAM 角色、擔任角色工作階段 AWS 或服務。如需詳細資訊，請參閱[指定主體](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying)。

若要了解在您信任區域外帳戶 (信任組織或帳戶) 中的主體是否可擔任您的角色，請參閱[識別與外部實體共用的資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html#what-is-access-analyzer-resource-identification)。

下列清單包含支援資源型政策的一些 AWS 服務。如需支援將許可政策連接至資源而非委託人之 AWS 服務數量增加的完整清單，請參閱**資源型**欄中的 [AWS 使用 IAM 的 服務](reference_aws-services-that-work-with-iam.md)和 尋找具有**是**的服務。
+ **Amazon S3 儲存貯體** – 政策連接到儲存貯體，但政策控制項同時存取儲存貯體和其中的物件。如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的 [Bucket policies for Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html)。在某些情況下，最好使用角色以跨帳戶存取 Amazon S3。如需詳細資訊，請參閱 *Amazon Simple Storage Service 使用者指南*中的[範例演練](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access.html)。
+ **Amazon Simple Notification Service (Amazon SNS) 主題** – 如需詳細資訊，請前往《Amazon Simple Notification Service 開發人員指南》**中的 [Amazon SNS 存取控制的範例案例](https://docs.aws.amazon.com//sns/latest/dg/sns-access-policy-use-cases.html)。
+ **Amazon Simple Queue Service (Amazon SQS) 佇列** – 如需詳細資訊，請前往《Amazon Simple Queue Service 開發人員指南》**中的[附錄：存取原則語言](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-creating-custom-policies.html)。

## 委派 AWS 許可的資源型政策
<a name="access_policies-cross-account-delegating-resource-based-policies"></a>

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

**重要**  
在跨帳戶存取中，主體在身分型政策**和**資源型政策中需要 `Allow`。

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

如需有關如何做出這些決策的詳細資訊，請參閱[確定帳戶內是否允許或拒絕請求](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic_policy-eval-denyallow.html)。

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

例如，假設您管理 `AccountA` 和 `AccountB`。在 AccountA 中，您具有名為 `BucketA` 的 Amazon S3 儲存貯體。

![針對 Amazon S3 儲存貯體建立的資源型政策可為 AccountA 提供 AccountB 許可。](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/access_policies-cross-account.png)


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

------
#### [ JSON ]

****  

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

------

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

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

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

------
#### [ JSON ]

****  

   ```
   {
       "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 角色的常見案例](id_roles_common-scenarios.md)。

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

如需有關許可、政策以及用於撰寫政策的許可政策語言的詳細資訊，請參閱[AWS 資源的存取管理](access.md)。