

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

# 在您擁有的另一個 IAM 使用者中 AWS 帳戶 存取
<a name="id_roles_common-scenarios_aws-accounts"></a>

您可以授予 IAM 使用者許可，以切換到 內的角色， AWS 帳戶 或切換到 AWS 帳戶 您擁有的其他 中定義的角色。

**注意**  
如果要授予對您未擁有或無法控制的帳戶的存取許可，請參閱本主題後面的 [存取第三方 AWS 帳戶 擁有的](id_roles_common-scenarios_third-party.md)。

假設您擁有一個對組織來說至關重要的 Amazon EC2 執行個體。您可以使用這些許可來建立角色，而非直接授予使用者終止執行個體的許可。然後，允許管理員可以在需要終止執行個體時切換為該角色。這麼做，可為執行個體加入以下幾層保護：
+ 您必須向使用者明確授予擔任該角色的許可。
+ 您的使用者必須使用 主動切換到角色， AWS 管理主控台 或使用 AWS CLI 或 AWS API 擔任角色。
+ 您可以為角色加入多重要素驗證 (MFA) 保護，僅限登入 MFA 裝置的使用者才能擔任該角色。若要了解如何配置角色以使擔任角色的使用者必須先使用多重要素驗證 (MFA) 進行身分驗證，請參閱 [透過 MFA 實現安全的 API 存取](id_credentials_mfa_configure-api-require.md)。

我們建議使用此方法強制實施*最低權限*。也就是僅限於特定任務需要時，才能使用升級的許可。藉由角色，您可以幫助防止意外更改敏感環境，如果您將它們與[審核](cloudtrail-integration.md)合併以協助確保僅在需要時才使用角色，將會有極大幫助。

在您出於此目的建立角色時，可在該角色的信任政策的 `Principal` 元素中依照 ID 指定其使用者需要存取許可的帳戶。隨後可以向這些其他帳戶中的特定使用者授予切換到角色的許可。若要了解在您信任區域 (受信任組織或帳戶) 外帳戶中的主體是否具有擔任您角色的許可，請參閱[什麼是 IAM Access Analyzer？](https://docs.aws.amazon.com/IAM/latest/UserGuide/what-is-access-analyzer.html)。

一個帳戶中的使用者可以切換為相同或不同帳戶中的角色。使用角色過程中，使用者只能執行角色允許的操作並且只能存取角色允許的資源；其原始使用者許可處於暫停狀態。使用者退出角色時，恢復原始使用者許可。

## 使用不同的開發和生產帳戶的範例方案
<a name="id_roles_common-scenarios_aws-accounts-example"></a>

假設您的組織有多個 AWS 帳戶 來隔離開發環境與生產環境。開發帳戶中的使用者有時可能需要存取生產帳戶中的資源。例如在將更新從開發環境推廣到生產環境時，可能就需要跨帳戶存取許可。儘管您可以為在兩個帳戶中工作的使用者建立單獨的身分 (和密碼)，多個帳戶的憑證管理還是會為身分管理帶來難題。在以下圖表中，所有使用者都透過開發帳戶進行管理，但部分開發人員需要對生產帳戶進行有限存取。開發帳戶有兩個群組：測試人員和開發人員，每個群組有其專屬的政策。

![使用角色將許可指派給在不同帳戶中的使用者](http://docs.aws.amazon.com/zh_tw/IAM/latest/UserGuide/images/roles-usingroletodelegate.png)


1. 生產帳戶中的一名管理員使用 IAM 在該帳戶中建立 `UpdateApp` 角色。在角色中，管理員定義信任政策，該政策將開發帳戶指定為 `Principal`，這表示開發帳戶中的授權使用者可以使用 `UpdateApp` 角色。管理員也可以為角色定義許可政策，該政策指定名為 `productionapp` 之 Amazon S3 儲存貯體的讀取和寫入許可。

   然後，管理員將與需要擔任角色的任何人共用該角色的帳號和名稱。該資訊是角色的帳號和名稱 （適用於 AWS 主控台使用者） 或 Amazon Resource Name (ARN) （適用於 AWS CLI 或 AWS API 存取）。角色 ARN 類似於 `arn:aws:iam::123456789012:role/UpdateApp`，其中角色名為 `UpdateApp`，而且角色使用帳戶號碼 123456789012 所建立。
**注意**  
管理員可以選擇是否配置角色，以便擔任角色的使用者必須先使用多重要素驗證 (MFA) 進行身分驗證。如需詳細資訊，請參閱 [透過 MFA 實現安全的 API 存取](id_credentials_mfa_configure-api-require.md)。

1. 在開發帳戶中，管理員向開發人員群組的成員授予切換為角色的許可。這是透過授予開發人員群組許可來呼叫`UpdateApp`角色的 AWS Security Token Service (AWS STS) `AssumeRole` API 來完成。開發帳戶中的開發人員群組的所有 IAM 使用者現在都可以切換為生產帳戶中的 `UpdateApp` 角色。不在開發人員群組中的其他使用者無權切換為該角色，因此無法存取生產帳戶中的 S3 儲存貯體。

1. 使用者請求切換到角色：
   + AWS 主控台：使用者選擇導覽列上的帳戶名稱，然後選擇**切換角色**。使用者指定帳戶 ID (或別名) 和角色名稱。或者，使用者可以按一下管理員在電子郵件中發送的連結。透過該連結，使用者可以前往已填寫詳細資訊的 **Switch Role (切換角色)** 頁面。
   + AWS API/AWS CLI：開發帳戶開發人員群組中的使用者呼叫 `AssumeRole`函數以取得`UpdateApp`角色的登入資料。使用者將 `UpdateApp` 角色的 ARN 指定為呼叫的一部分。如果測試人員群組中的使用者發出相同請求，請求將失敗，因為測試人員沒有針對 `AssumeRole` 角色 ARN 呼叫 `UpdateApp` 的許可。

1. AWS STS 傳回臨時登入資料：
   + AWS console：使用角色的信任政策 AWS STS 驗證請求，以確保請求來自信任的實體 （即開發帳戶）。驗證後， 會將 AWS [臨時安全登入](https://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html)資料 AWS STS 傳回至 主控台。
   + API/CLI：根據角色的信任政策 AWS STS 驗證請求，以確保請求來自信任的實體 （即開發帳戶）。驗證後， 會 AWS STS 傳回[暫時安全登入](https://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html)資料給應用程式。

1. 暫時登入資料允許存取 AWS 資源：
   + AWS 主控台： AWS 主控台會代表使用者使用暫時登入資料進行所有後續主控台動作，在此情況下，讀取和寫入儲存`productionapp`貯體。主控台無法存取生產帳戶中的任何其他資源。使用者退出角色時，使用者的許可恢復為切換為角色之前所擁有的原始許可。
   + API/CLI：應用程式使用臨時安全性憑證更新 `productionapp` 儲存貯體。應用程式只能使用臨時安全性憑證讀取和寫入 `productionapp` 儲存貯體，無法存取生產帳戶的任何其他資源。應用程式不必退出角色，只需在後續 API 呼叫中停止使用臨時憑證並使用原始憑證。

## 其他資源
<a name="id_roles_common-scenarios_more-info"></a>

如需詳細資訊，請參閱下列內容：
+ [IAM 教學課程：使用 IAM 角色在 AWS 帳戶之間委派存取權](tutorial_cross-account-with-roles.md)