建立角色以將權限委派給IAM使用者 - AWS Identity and Access Management

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

建立角色以將權限委派給IAM使用者

您可以使用IAM角色委派對 AWS 資源的存取權。使用IAM角色,您可以在信任帳戶和其他 AWS 任帳戶之間建立信任關係。信任帳戶擁有要存取的資源,而受信任帳戶包含需要存取資源的使用者。不過,可以讓另一個帳戶在您的帳戶中擁有資源。例如,信任的帳戶可能允許信任的帳戶來建立新的資源,例如在 Amazon S3 儲存貯體中建立新物件。在這種情況下,建立資源的帳戶擁有資源,並控制誰可以存取該資源。

建立信任關係之後,信任帳戶的使用IAM者或應用程式就可以使用 AWS Security Token Service (AWS STS) AssumeRoleAPI作業。此作業會提供暫時的安全性登入資料,讓您能夠存取帳戶中的 AWS 資源。

兩個帳戶可都由您控制,或者含有使用者的帳戶可由第三方進行控制。如果具有使用者的其他帳戶 AWS 帳戶 是您無法控制的帳戶,則您可以使用該externalId屬性。外部 ID 可以是您和第三方帳戶管理員之間商定的任何文字或數字。此選項會自動新增條件到信任政策,讓使用者只在請求包含正確的 sts:ExternalID 時才擔任該角色。如需詳細資訊,請參閱訪問由第三方 AWS 帳戶 擁有

如需有關如何使用角色委派許可的資訊,請參閱角色術語和概念。如需使用服務角色以允許服務存取您帳戶中的資源的資訊,請參閱建立角色以將權限委派給 AWS 服務

建立 IAM 角色 (主控台)

您可以使用 AWS Management Console 來建立使用IAM者可以承擔的角色。例如,假設您的組織有多個可 AWS 帳戶 以將開發環境與生產環境隔離開來。如需有關建立可讓開發帳戶中的使用者存取生產帳戶中資源的角色的高級別資訊,請參閱使用不同的開發和生產帳戶的範例方案

建立角色 (主控台)
  1. 登入 AWS Management Console 並開啟IAM主控台,位於https://console.aws.amazon.com/iam/

  2. 在主控台的導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

  3. 選擇 AWS 帳戶 角色類型。

  4. 若要為您的帳戶建立角色,請選取 This account (此帳號)。若要為其他帳戶建立角色,請選擇 Another AWS 帳戶 (另一個 ),然後輸入您要對其授予資源存取權的 Account ID (帳戶 ID)。

    指定帳戶的管理員可以授與該帳戶中的任何IAM使用者擔任此角色的權限。若要執行此操作,管理員要將政策連接到授予 sts:AssumeRole 動作之許可的使用者或群組。該原則必須將角色指定ARN為Resource.

  5. 如果您將許可授予您不控制之帳戶的使用者,而且使用者將以程式設計方式擔任此角色,則請選取 Require external ID (需要外部 ID)。外部 ID 可以是您和第三方帳戶管理員之間商定的任何文字或數字。此選項會自動新增條件到信任政策,讓使用者只在請求包含正確的 sts:ExternalID 時才擔任該角色。如需詳細資訊,請參閱訪問由第三方 AWS 帳戶 擁有

    重要

    選擇此選項只能透過 AWS CLI、Windows PowerShell 工具或來限制角色的存取 AWS API。這是因為您無法使用 AWS 主控台切換到信任原則中具有externalId條件的角色。但是,您可以通過編寫腳本或使用相關的應用程序以編程方式創建這種訪問SDK。如需詳細資訊和範例指令碼,請參閱如何在 AWS 安全性部落格 AWS Management Console中啟用跨帳戶存取

  6. 如果您想要將角色限制為使用多重要素驗證登入的使用者 (MFA),請選取 [需要 MFA]。這會在角色的信任原則中新增條件,以檢查MFA登入。想要擔任該角色的使用者必須使用已設定MFA裝置的臨時一次性密碼登入。沒有MFA驗證的使用者無法擔任該角色。如需有關的更多資訊MFA,請參閱 AWS 多因素身份驗證 IAM

  7. 選擇 Next (下一步)

  8. IAM包含您帳戶中受 AWS 管理和客戶管理的政策清單。選取用於許可政策的政策,或者選擇 Create policy (建立政策) 以開啟新的瀏覽器標籤,並從頭建立新的政策。如需詳細資訊,請參閱建立 IAM 政策。在您建立政策後,關閉該標籤並返回您的原始標籤。選取您要擔任角色的任何人具有之許可政策旁的核取方塊。如果您希望,您目前可以不選取政策,稍後再將政策連接到角色。角色預設沒有任何許可。

  9. (選用) 設定許可界限。這是進階功能。

    開啟 Set permissions boundary (設定許可界限) 區段,並選擇 Use a permissions boundary to control the maximum role permissions (使用許可界限來控制角色許可上限)。選取用於許可界限的政策。

  10. 選擇 Next (下一步)

  11. 針對 Role name (角色名稱),輸入您的角色名稱。角色名稱在您的 AWS 帳戶. 在策略中使用角色名稱或作為一部分時ARN,角色名稱會區分大小寫。當主控台中的客戶顯示角色名稱時 (例如在登入程序期間),角色名稱不區分大小寫。因為有各種實體可能會參考此角色,所以建立角色之後,您就無法編輯其名稱。

  12. (選用) 在 Description (說明) 中,輸入新角色的說明。

  13. Step 1: Select trusted entities (步驟 1:選取受信任的實體) 或者 Step 2: Add permissions (步驟 2:新增許可) 區段中選擇 Edit (編輯),可編輯使用案例和角色許可。您將返回之前的頁面進行編輯。

  14. (選用) 藉由連接標籤做為鍵值對,將中繼資料新增至角色。如需有關在中使用標籤的更多資訊IAM,請參閱標記 IAM 資源

  15. 檢閱角色,然後選擇 Create role (建立角色)。

    重要

    請記住,這只是所需設定的前半部。您也必須以信任的帳戶許可提供給個別使用者,以切換到主控台中的角色,或程式化方式擔任角色。如需有關此步驟的詳細資訊,請參閱 授與使用者切換角色的權限

創建IAM角色(AWS CLI)

從中建立角色 AWS CLI 需要多個步驟。當您使用主控台建立角色時,許多步驟都是為您完成的,但是 AWS CLI 您必須明確地自行執行每個步驟。您必須建立角色,然後為該角色指派許可政策。或者,您也可以設定角色的許可界限

若要為跨帳戶存取建立角色 (AWS CLI)
  1. 建立角色:aws iam create-role

  2. 將受管許可政策附加到角色:aws iam attach-role-policy

    為角色建立內嵌許可政策:aws iam put-role-policy

  3. (選用) 透過連接標籤來將自訂屬性新增至該角色:aws iam tag-role

    如需詳細資訊,請參閱管理 IAM 角色 (AWS CLI 或 AWS API) 上的標籤

  4. (可選)設置角色的許可邊界aws iam put-role-permissions-boundary

    許可界限控制角色可以擁有的許可上限。權限界限是一 AWS 項進階功能。

以下範例顯示前兩個最常見步驟,可在簡單的環境中建立一個跨帳戶角色。此範例允許 123456789012 帳戶中的任何使用者擔任角色,並檢視 example_bucket Amazon S3 儲存貯體。此範例也假定您使用執行 Windows 的用戶端電腦,並且已使用您的帳戶憑證和區域設定您的命令列界面。若要取得更多資訊,請參閱〈規劃 AWS 指令行介面〉。

當您建立角色時,這個範例在第一個命令包含下列信任政策。此信任原則允許123456789012帳戶中的使用者使用該AssumeRole作業擔任角色,但前提是使用者必須使用SerialNumberTokenCode參數提供MFA驗證。如需有關的更多資訊MFA,請參閱AWS 多因素身份驗證 IAM

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "sts:AssumeRole", "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } } } ] }
重要

如果您的Principal元素包含特定IAM角色或使用者的,則會ARN在儲存原則時將其轉換ARN為唯一的主參與者 ID。如果有人希望藉由刪除並重新建立角色或使用者來提升許可時,這麼做可有助於減少此類風險。您通常不會在主控台中看到此 ID,因為信任原則顯示ARN時也會反向轉換回。但是,如果您刪除角色或使用者,則主參與者 ID 會出現在主控台中,因為 AWS 無法再將其對應回ARN. 因此,如果您刪除並重新建立信任原則Principal元素中參照的使用者或角色,則必須編輯角色以取代ARN。

當您使用第二個命令的政策,您必須將現有受管政策連接到角色。下列許可政策允許任何擔任角色的人只對 example_bucket Amazon S3 儲存貯體執行 ListBucket 動作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::example_bucket" } ] }

若要建立此 Test-UserAccess-Role 角色,您必須先將之前的信任政策以名稱 trustpolicyforacct123456789012.json 儲存到 policies 資料夾 (在您的本機 C: 磁碟機)。然後使用名稱將先前的 AWS 帳戶 權限策略另存為客戶管理策略PolicyForRole。然後,您可以使用以下命令來建立角色,並連接受管政策。

# Create the role and attach the trust policy file that allows users in the specified account to assume the role. $ aws iam create-role --role-name Test-UserAccess-Role --assume-role-policy-document file://C:\policies\trustpolicyforacct123456789012.json # Attach the permissions policy (in this example a managed policy) to the role to specify what it is allowed to do. $ aws iam attach-role-policy --role-name Test-UserAccess-Role --policy-arn arn:aws:iam::123456789012:policy/PolicyForRole
重要

請記住,這只是所需設定的前半部。您還必須提供受信任帳戶中的個別使用者許可,以切換到該角色。如需有關此步驟的詳細資訊,請參閱 授與使用者切換角色的權限

建立角色並授與其執行 AWS 工作或存取 AWS 資源的權限後,123456789012帳戶中的任何使用者都可以擔任該角色。如需詳細資訊,請參閱切換到IAM角色 (AWS CLI)

創建IAM角色(AWS API)

從中建立角色 AWS API需要多個步驟。當您使用主控台建立角色時,許多步驟都是為您完成的,但是API您必須明確地自行執行每個步驟。您必須建立角色,然後為該角色指派許可政策。或者,您也可以設定角色的許可界限

若要在程式碼 (AWS API) 中建立角色
  1. 建立角色:CreateRole

    對於角色的信任政策,您可以指定一個檔案位置。

  2. 將受管理的權限原則附加至角色:AttachRolePolicy

    建立角色的內嵌權限原則:PutRolePolicy

    重要

    請記住,這只是所需設定的前半部。您還必須提供受信任帳戶中的個別使用者許可,以切換到該角色。如需有關此步驟的詳細資訊,請參閱 授與使用者切換角色的權限

  3. (選擇性) 透過附加標籤將自訂屬性新增至使用者:TagRole

    如需詳細資訊,請參閱管理 IAM 使用者 (AWS CLI 或 AWS API) 的標籤

  4. (選擇性) 設定角色的權限範圍PutRolePermissionsBoundary

    許可界限控制角色可以擁有的許可上限。權限界限是一 AWS 項進階功能。

建立角色並授與其執行 AWS 工作或存取 AWS 資源的權限後,您必須將權限授與帳戶中的使用者,以允許他們擔任該角色。如需有關擔任角色的詳細資訊,請參閱 切換到IAM角色 (AWS API)

創建IAM角色(AWS CloudFormation)

有關如何在中創建IAM角色的更多內容 AWS CloudFormation,敬請參閱《AWS CloudFormation 用戶指南》中的資源和屬性參考示例

若要取得有關中AWS Identity and Access Management 樣板的更多資訊 AWS CloudFormation,請參閱《AWS CloudFormation 使用指南》中的「IAM範本片段