選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 設定聯合身分 AWS Tools for PowerShell

焦點模式
使用 設定聯合身分 AWS Tools for PowerShell - AWS Tools for PowerShell

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

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

若要讓組織中的使用者存取 AWS 資源,您必須設定標準且可重複的身分驗證方法,以用於安全性、可稽核性、合規性,以及支援角色和帳戶區隔的功能。雖然一般情況下,使用者能夠存取 AWS APIs,但沒有聯合 API 存取,您也必須建立 AWS Identity and Access Management (IAM) 使用者,這會破壞使用聯合的目的。本主題說明 中的 SAML (安全性聲明標記語言) 支援 AWS Tools for PowerShell ,可簡化您的聯合存取解決方案。

中的 SAML 支援 AWS Tools for PowerShell 可讓您為使用者提供 服務的聯合存取 AWS 。SAML 是以 XML 為基礎的開放標準格式,可在服務之間傳輸使用者身分驗證和授權資料;特別是身分提供者 (例如 Active Directory Federation Services) 和服務提供者 (例如) 之間 AWS。如需有關 SAML 及其運作方式的詳細資訊,請參閱 Wikipedia 上的 SAML,或「結構化資訊標準促進組織」(OASIS) 網站上的 SAML 技術規格。中的 SAML 支援與 SAML 2.0 AWS Tools for PowerShell 相容。

先決條件

您必須具備以下項目,才能首次嘗試使用 SAML 支援。

  • 與您的 AWS 帳戶正確整合的聯合身分解決方案,可以僅使用您的組織登入資料進行主控台存取。如需有關如何專門針對 Active Directory 聯合服務執行此操作的詳細資訊,請參閱《IAM 使用者指南》中的關於 SAML 2.0 聯合,以及部落格文章,啟用聯合以 AWS 使用 Windows Active Directory、AD FS 和 SAML 2.0。雖然部落格文章說明的是 AD FS 2.0,但 AD FS 3.0 的步驟也類似。

  • 安裝在您本機工作站 AWS Tools for PowerShell 上的 的 版本 3.1.31.0 或更新版本。

聯合身分使用者如何取得 AWS 服務 APIs聯合存取權

下列程序說明 Active Directory (AD) 使用者如何由 AD FS 聯合以取得 AWS 資源的存取權。

Diagram showing federated user access flow to AWS resources via AD FS and Security Token Service.
  1. 聯合身分使用者電腦上的用戶端會驗證 AD FS。

  2. 如果驗證成功,AD FS 會向使用者傳送 SAML 聲明。

  3. 使用者的用戶端會將 SAML 聲明傳送至 AWS Security Token Service (STS),做為 SAML 聯合請求的一部分。

  4. STS 會傳回 SAML 回應,其中包含使用者可擔任之角色的 AWS 臨時登入資料。

  5. 使用者透過在 提出的請求中包含這些臨時登入資料來存取 AWS 服務 APIs AWS Tools for PowerShell。

SAML 支援如何在 中運作 AWS Tools for PowerShell

本節說明 AWS Tools for PowerShell cmdlet 如何為使用者啟用 SAML 型聯合身分的組態。

Diagram showing SAML-based federation flow between organization, AD FS, AWS, and service APIs.
  1. AWS Tools for PowerShell 會使用 Windows 使用者目前的登入資料對 AD FS 進行身分驗證,或在使用者嘗試執行需要登入資料才能呼叫的 cmdlet 時,以互動方式進行身分驗證 AWS。

  2. AD FS 驗證使用者。

  3. AD FS 會產生包含聲明的 SAML 2.0 身分驗證回應;聲明的目的是識別並提供使用者的相關資訊。 會從 SAML 聲明 AWS Tools for PowerShell 中擷取使用者授權角色的清單。

  4. AWS Tools for PowerShell 透過發出 AssumeRoleWithSAMLRequest API 呼叫,將 SAML 請求,包括請求角色的 Amazon Resource Name (ARN) 轉送至 STS。

  5. 如果 SAML 請求是有效的,STS 會傳回回應,其中包含 AWS 、AccessKeyIdSecretAccessKeySessionToken。這些登入資料可持續 3,600 秒 (1 小時)。

  6. 使用者現在擁有有效的登入資料,以使用使用者角色有權存取的任何 AWS 服務 APIs。 AWS Tools for PowerShell 會自動將這些登入資料套用至任何後續 AWS API 呼叫,並在它們過期時自動續約。

    注意

    當憑證過期且需要新的登入資料時, AWS Tools for PowerShell 會使用 AD FS 自動重新驗證,並取得下個小時的新登入資料。對於已加入網域的使用者帳戶,此程序會以無提示的方式進行。對於未加入網域的帳戶, AWS Tools for PowerShell 會提示使用者輸入其登入資料,然後才能重新驗證。

如何使用 PowerShell SAML 組態 Cmdlet

AWS Tools for PowerShell 包含兩個提供 SAML 支援的新 cmdlet。

  • Set-AWSSamlEndpoint 會設定您的 AD FS 端點、指派易記的名稱給端點,以及選擇性地說明端點的身分驗證類型。

  • Set-AWSSamlRoleProfile 會建立或編輯您想使其與 AD FS 端點建立關聯的使用者帳戶描述檔,透過指定您提供給 Set-AWSSamlEndpoint cmdlet 的易記名稱來識別。每個角色描述檔對應到使用者獲權執行的單一角色。

    如同 AWS 登入資料描述檔,您會為角色描述檔指派易記的名稱。您可以搭配 Set-AWSCredential cmdlet 使用相同的易記名稱,或做為叫用 AWS 服務 APIs -ProfileName 參數值。

開啟新的 AWS Tools for PowerShell 工作階段。如果您執行的是 PowerShell 3.0 或更新版本,則當您執行其任一 cmdlet 時,都會自動匯入 AWS Tools for PowerShell 模組。如果您執行的是 PowerShell 2.0,則必須執行 ``Import-Module`` cmdlet,以手動方式匯入模組,如下列範例所示。

PS > Import-Module "C:\Program Files (x86)\AWS Tools\PowerShell\AWSPowerShell\AWSPowerShell.psd1"

如何執行 Set-AWSSamlEndpointSet-AWSSamlRoleProfile Cmdlet

  1. 首先,設定 AD FS 系統的端點設定。最簡單的方式是將端點存放在變數中,如本步驟所示。請務必將預留位置帳戶 ID 和 AD FS 主機名稱更換為您自己的帳戶 ID 和 AD FS 主機名稱。在 Endpoint 參數中指定 AD FS 主機名稱。

    PS > $endpoint = "https://adfs.example.com/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices"
  2. 若要建立端點設定,請執行 Set-AWSSamlEndpoint cmdlet,指定正確的 AuthenticationType 參數值。有效值包括 BasicDigestKerberosNegotiateNTLM。如果您未指定此參數,預設值是 Kerberos

    PS > $epName = Set-AWSSamlEndpoint -Endpoint $endpoint -StoreAs ADFS-Demo -AuthenticationType NTLM

    Cmdlet 會使用 -StoreAs 參數傳回您指派的易記名稱,因此您可以在下一行中執行 Set-AWSSamlRoleProfile 時使用它。

  3. 現在,請執行 Set-AWSSamlRoleProfile cmdlet 以向 AD FS 身分提供者驗證身分,並取得讓使用者獲得授權能夠 (在 SAML 聲明中) 執行的一組角色。

    Set-AWSSamlRoleProfile cmdlet 使用傳回的一組角色,來提示使用者選取角色以關聯至指定的描述檔,或驗證參數中提供的角色資料是否存在 (如果不存在,系統會提示使用者進行選擇)。如果使用者只獲得一個角色的授權,cmdlet 會自動將該角色關聯至描述檔,而不會提示使用者。不需要提供登入資料即可設定已加入網域的描述檔。

    PS > Set-AWSSamlRoleProfile -StoreAs SAMLDemoProfile -EndpointName $epName

    或者,對於non-domain-joined的帳戶,您可以提供 Active Directory 登入資料,然後選取使用者可存取 AWS 的角色,如下行所示。如果您有不同的 Active Directory 使用者帳戶,這可用來區分您組織內的角色 (例如,系統管理函數)。

    PS > $credential = Get-Credential -Message "Enter the domain credentials for the endpoint" PS > Set-AWSSamlRoleProfile -EndpointName $epName -NetworkCredential $credential -StoreAs SAMLDemoProfile
  4. 在任何一種情況下,Set-AWSSamlRoleProfile cmdlet 都會提示您選擇應在描述檔中存放哪個角色。下列範例顯示兩個可用的角色:ADFS-DevADFS-Production。IAM 角色與 AD FS 系統管理員的 AD 登入資料相關聯。

    Select Role Select the role to be assumed when this profile is active [1] 1 - ADFS-Dev [2] 2 - ADFS-Production [?] Help (default is "1"):

    或者,您可以輸入 RoleARNPrincipalARN 和選用的 NetworkCredential 參數,在沒有提示的情況下指定角色。如果身分驗證傳回的聲明中未列出指定的角色,系統會提示使用者從可用的角色中選擇。

    PS > $params = @{ "NetworkCredential"=$credential, "PrincipalARN"="{arn:aws:iam::012345678912:saml-provider/ADFS}", "RoleARN"="{arn:aws:iam::012345678912:role/ADFS-Dev}" } PS > $epName | Set-AWSSamlRoleProfile @params -StoreAs SAMLDemoProfile1 -Verbose
  5. 您可以在單一命令中新增 StoreAllRoles 參數,為所有角色建立描述檔,如以下程式碼所示。請注意,角色名稱將用於描述檔名稱。

    PS > Set-AWSSamlRoleProfile -EndpointName $epName -StoreAllRoles ADFS-Dev ADFS-Production

如何使用角色設定檔來執行需要 AWS 登入資料的 Cmdlet

若要執行需要 AWS 登入資料的 cmdlet,您可以使用 AWS 共用登入資料檔案中定義的角色描述檔。將角色描述檔的名稱提供給 Set-AWSCredential(或作為 中任何ProfileName參數的值 AWS Tools for PowerShell),以自動取得描述檔中所述角色的臨時 AWS 登入資料。

雖然您一次只能使用一個角色描述檔,但可以在 shell 工作階段中切換描述檔。當您執行 Set-AWSCredential cmdlet 其本身時,此 cmdlet 不會驗證並取得登入資料;cmdlet 會記錄您想要使用指定的角色描述檔。除非您執行需要 AWS 登入資料的 cmdlet,否則無需身分驗證或請求登入資料。

您現在可以使用透過 SAMLDemoProfile設定檔取得的臨時 AWS 登入資料來使用 AWS 服務 APIs。以下章節示範如何使用角色描述檔的範例。

範例 1:使用 Set-AWSCredential 設定預設角色

此範例使用 設定 AWS Tools for PowerShell 工作階段的預設角色Set-AWSCredential。接著,您可以執行需要登入資料的 cmdlet,並獲得指定角色的授權。此範例列出美國西部 (奧勒岡) 區域的所有 Amazon Elastic Compute Cloud 執行個體,與您透過 Set-AWSCredential cmdlet 指定的描述檔相關聯。

PS > Set-AWSCredential -ProfileName SAMLDemoProfile PS > Get-EC2Instance -Region us-west-2 | Format-Table -Property Instances,GroupNames Instances GroupNames --------- ---------- {TestInstance1} {default} {TestInstance2} {} {TestInstance3} {launch-wizard-6} {TestInstance4} {default} {TestInstance5} {} {TestInstance6} {AWS-OpsWorks-Default-Server}

範例 2:在 PowerShell 工作階段期間變更角色描述檔

此範例列出與SAMLDemoProfile設定檔相關聯之角色 AWS 帳戶中所有可用的 Amazon S3 儲存貯體。此範例顯示,雖然您可能已在 AWS Tools for PowerShell 工作階段中稍早使用另一個設定檔,但您可以使用支援該設定檔的 cmdlet 為 -ProfileName 參數指定不同的值來變更設定檔。這對於從 PowerShell 命令列管理 Amazon S3 的管理員來說,是常見的任務。

PS > Get-S3Bucket -ProfileName SAMLDemoProfile CreationDate BucketName ------------ ---------- 7/25/2013 3:16:56 AM amzn-s3-demo-bucket 4/15/2015 12:46:50 AM amzn-s3-demo-bucket1 4/15/2015 6:15:53 AM amzn-s3-demo-bucket2 1/12/2015 11:20:16 PM amzn-s3-demo-bucket3

請注意,Get-S3Bucket cmdlet 指定透過執行 Set-AWSSamlRoleProfile cmdlet 而建立之描述檔的名稱。如果您稍早在工作階段中已設定角色描述檔 (例如透過執行 Set-AWSCredential cmdlet),但想為 Get-S3Bucket cmdlet 使用不同的角色描述檔,這個命令會很有用。描述檔經理會讓臨時登入資料可用於 Get-S3Bucket cmdlet。

雖然登入資料在 1 小時 (STS 強制執行的限制) 後過期,但 AWS Tools for PowerShell 會在工具偵測到目前登入資料過期時請求新的 SAML 聲明,以自動重新整理登入資料。

對於已加入網域的使用者,此程序不會中斷,因為目前使用者的 Windows 身分已用於身分驗證。對於non-domain-joined使用者帳戶, AWS Tools for PowerShell 會顯示請求使用者密碼的 PowerShell 登入資料提示。使用者提供的登入資料,將用於重新驗證使用者並取得新的聲明。

範例 3:在區域中取得執行個體

以下範例列出亞太區域 (雪梨) 區域的所有 Amazon EC2 執行個體,與 ADFS-Production 描述檔使用的帳戶相關聯。這個實用命令很適合用來傳回一個區域中的所有 Amazon EC2 執行個體。

PS > (Get-Ec2Instance -ProfileName ADFS-Production -Region ap-southeast-2).Instances | Select InstanceType, @{Name="Servername";Expression={$_.tags | where key -eq "Name" | Select Value -Expand Value}} InstanceType Servername ------------ ---------- t2.small DC2 t1.micro NAT1 t1.micro RDGW1 t1.micro RDGW2 t1.micro NAT2 t2.small DC1 t2.micro BUILD

其他閱讀資料

如需如何實作聯合 API 存取的詳細資訊,請參閱如何使用 SAML 2.0 為聯合 API/CLI 存取實作一般解決方案

如需支援問題或評論,請造訪適用於 PowerShell 指令碼的 AWS 開發人員論壇或 .NET 開發

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。