AWS Tools for PowerShell 使用 驗證 AWS - AWS Tools for PowerShell (第 5 版)

第 5 版 (V5) AWS Tools for PowerShell 已發行!

如需有關中斷變更和遷移應用程式的資訊,請參閱遷移主題

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

AWS Tools for PowerShell 使用 驗證 AWS

在使用 進行開發 AWS 時,您必須建立程式碼向 進行身分驗證的方式 AWS 服務。您可以透過不同方式設定 AWS 資源的程式設計存取,具體取決於環境和您可用的 AWS 存取。

如要查看 Tools for PowerShell 的各種身份驗證方法,請參閱 AWS SDK 和工具參考指南中的身份驗證和存取

本主題假設新的使用者正在本機開發,其雇主尚未提供身分驗證方法,且將使用 AWS IAM Identity Center 取得臨時登入資料。如果您的環境不適用這些假設,則本主題中的有些資訊可能不適用您的環境,或者有些資訊可能已經提供給您。

設定此環境需要幾個步驟,總結如下:

使用主控台登入資料登入

您可以使用現有的 AWS 管理主控台登入憑證,以程式設計方式存取 AWS 服務。在瀏覽器型身分驗證流程之後, AWS Tools for PowerShell 會產生臨時登入資料,可用於 AWS SDKs 等本機開發工具 AWS Tools for PowerShell AWS CLI。此功能可簡化設定和管理 CLI 登入資料的程序,尤其是如果您偏好互動式身分驗證,而不是管理長期存取金鑰。

透過此程序,您可以使用在初始帳戶設定期間建立的根登入資料、IAM 使用者或身分提供者的聯合身分進行身分驗證,Tools for PowerShell 會自動為您管理臨時登入資料。這種方法無需在本機存放長期登入資料,可增強安全性。

當您執行 Invoke-AWSLogin cmdlet 時,您可以從作用中主控台工作階段中選取 ,或透過瀏覽器型身分驗證流程登入,這會自動產生臨時登入資料。 AWS Tools for PowerShell 最多會自動重新整理這些登入資料 12 小時。

設定完成後,即可在 AWS Tools for PowerShell 和所有其他 AWS SDKs和工具中使用工作階段。

AWS 使用 Invoke-AWSLogin Cmdlet 登入

執行 Invoke-AWSLogin cmdlet 以使用您現有的 AWS 管理主控台登入資料進行驗證。如果您先前尚未設定設定檔,系統會提示您提供其他資訊。

若要登入或設定設定檔,請遵循下列步驟。

  1. 請確定您已從 安裝指南匯入安裝的正確模組。

    注意

    我們有三種不同的 PowerShell 模組 - AWS.ToolsAWSPowerShell.NetCoreAWSPowerShell。如需詳細資訊,請參閱AWS Tools for PowerShell是什麼?

    • 在 PowerShell 終端機中,執行 cmdlet。這將使用 default設定檔。

      PS > Invoke-AWSLogin
    • 若要登入具名設定檔或建立新的設定檔,請使用 -ProfileName 參數。

      PS > Invoke-AWSLogin -ProfileName 'my-dev-profile'
    • 如果這是新的設定檔,或先前任何設定檔/環境變數中 AWS 區域 未指定或設定任何設定檔/環境變數,則 cmdlet 會提示您提供區域。

      Press Ctrl+C to cancel the following login prompts. Specify AWS Region No AWS region has been configured. The AWS region is the geographic location of your AWS resources. If you've used AWS before and already have resources in your account, tell us which region they were created in. If you haven't created resources in your account before, you can pick the region closest to you: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html AWS Region:
  2. AWS Tools for PowerShell 會嘗試開啟您 AWS 帳戶登入程序的預設瀏覽器。

    Using region 'us-west-2' Attempting to open the login page for 'us-west-2' in your default browser. If the browser does not open, use the following URL to complete your login: https://signin.us-west-2.amazonaws.com/authorize?<abbreviated> If you cannot connect to this URL, make sure that you have specified a valid region.
    • 如果使用 的裝置 AWS Tools for PowerShell 沒有瀏覽器,您可以使用 -Remote 參數提供 URL 供您在已啟用瀏覽器的裝置上開啟。

      PS > Invoke-AWSLogin -Remote
    • 如果您使用 -Remote 參數,系統會根據您使用的授權類型,顯示手動啟動登入程序的指示。顯示的 URL 是從 https://signin.us-east-1.amazonaws.com/authorize 開始的唯一 URL。完成瀏覽器登入後,您需要將產生的授權碼複製並貼回終端機。

      Press Ctrl+C to cancel the following login prompts. Using region 'us-west-2' determined by profile/environment defaults. To override, specify '-Region' parameter. Please complete the login workflow via the following URL: https://us-west-2.signin.aws.amazon.com/v1/authorize?<abbrievated> Please enter the authorization code displayed in the browser:
  3. 在瀏覽器中,從顯示的清單中選取要使用的登入資料,然後返回您的終端機。

    • 如果您要設定的設定檔具有先前設定的登入工作階段,其不符合您的新工作階段,則 會 AWS Tools for PowerShell 提示您確認正在切換對應至現有設定檔的工作階段。

      WARNING: Previously profile default was configured for arn:aws:iam::0123456789012:user/ReadOnly, and is now being updated to arn:aws:iam::0123456789012:user/Admin. Do you wish to change the identity that default is associated with? (y/n)
  4. 最後一則訊息說明完成的設定檔組態。

    Login completed successfully for profile 'my-dev-profile'.

    身分驗證字符會快取至 .aws/login/cache 目錄下的磁碟,並以已解析設定檔為基礎的雜湊檔案名稱。

產生的組態檔案

這些步驟會在組態檔案中建立預設或指定的設定檔,如下所示:

[default] login_session = arn:aws:iam::0123456789012:user/username region = us-east-1 [my-dev-profile] login_session = arn:aws:iam::0123456789012:user/username region = us-east-1

使用您的設定檔執行命令

登入後,您可以使用您的登入資料,使用相關聯的設定檔叫用 Tools for PowerShell cmdlet。下列範例使用預設設定檔呼叫 Get-STSCallerIdentity cmdlet:

PS > Get-STSCallerIdentity

若要檢查特定工作階段,請使用 -ProfileName 參數。

PS > Get-STSCallerIdentity -ProfileName 'my-dev-profile'

臨時登入資料字符將在 15 分鐘內過期,但 AWS Tools for PowerShell 和 SDKs會在請求期間視需要自動重新整理字符。整個工作階段的有效期最長為 12 小時,之後您必須再次執行 Invoke-AWSLogin cmdlet。

使用 Invoke-AWSLogout cmdlet 登出您的工作階段

完成工作階段後,您可以讓登入資料過期,或執行 Invoke-AWSLogout cmdlet 刪除快取的登入資料。如果未在 CLI 或 AWS_PROFILE 環境變數中指定設定檔,命令會將您登出預設設定檔。下列範例會將您登出預設設定檔。

PS > Invoke-AWSLogout

若要登出特定設定檔工作階段,請使用 -ProfileName 參數。

PS > Invoke-AWSLogout -ProfileName 'my-dev-profile'

若要登出您已登入的所有設定檔工作階段,請使用 -All 參數。

PS > Invoke-AWSLogout -All

快取的登入資料

根據預設,暫時快取的登入資料以及重新整理這些登入資料所需的中繼資料會存放在 %USERPROFILE%\.aws\login\cache Windows 或 Linux 和 MacOS ~/.aws/login/cache 上的 。

您可以設定 AWS_LOGIN_CACHE_DIRECTORY環境變數來覆寫此位置。

啟用和設定 IAM Identity Center

若要使用 AWS IAM Identity Center,必須先啟用並設定。要查看有關如何在 PowerShell 執行此操作的詳細資訊,請參閱 AWS SDK 和工具參考指南IAM Identity Center 身份驗證主題中的步驟 1。具體來說,請遵循我沒有透過 IAM Identity Center 建立存取權限下的任何必要說明。

設定 Tools for PowerShell 以使用 IAM Identity Center。

注意

從 Tools for PowerShell 4.1.538 版開始,設定 SSO 憑證和啟動 AWS 存取入口網站工作階段的建議方法是使用 Initialize-AWSSSOConfigurationInvoke-AWSSSOLogin cmdlet,如本主題所述。如果您無法存取該版本的 Tools for PowerShell (或更新版本) 或無法使用這些 cmdlet,您仍然可以使用 執行這些任務 AWS CLI。若要了解如何操作,請參閱 使用 AWS CLI 進行入口網站登入

下列程序會使用 Tools for PowerShell 用來取得臨時登入資料的 SSO 資訊來更新共用 AWS config檔案。由於此程序,也會啟動 AWS 存取入口網站工作階段。如果共用config檔案已有 SSO 資訊,而您只想了解如何使用 Tools for PowerShell 啟動存取入口網站工作階段,請參閱本主題的下一節:啟動 AWS 存取入口網站工作階段

  1. 如果您尚未這麼做,請開啟 PowerShell 並 AWS Tools for PowerShell 安裝適合您作業系統和環境的 ,包括常見的 cmdlet。如需如何進行該服務的詳細資訊,請參閱開始使用 AWS Tools for PowerShell

    例如,如果在 Windows 上安裝 Tools for PowerShell 的模組化版本,您很可能執行類似以下的命令:

    Install-Module -Name AWS.Tools.Installer Install-AWSToolsModule AWS.Tools.Common
  2. 執行下列命令。將範例屬性值取代為 IAM Identity Center 組態中的值。如需有關這些屬性以及如何尋找它們的資訊,請參閱 AWS SDKs和工具參考指南中的 IAM Identity Center 憑證提供者設定

    $params = @{ ProfileName = 'my-sso-profile' AccountId = '111122223333' RoleName = 'SamplePermissionSet' SessionName = 'my-sso-session' StartUrl = 'https://provided-domain.awsapps.com/start' SSORegion = 'us-west-2' RegistrationScopes = 'sso:account:access' }; Initialize-AWSSSOConfiguration @params

    或者,您可以直接使用 cmdlet, Initialize-AWSSSOConfiguration和 Tools for PowerShell 會提示您輸入屬性值。

    特定屬性值的考量事項:

    • 如果您只依照指示來啟用和設定 IAM Identity Center,則 的值-RoleName可能是 PowerUserAccess。但是,如果您特別為 PowerShell 工作建立 IAM Identity Center 許可集,請改用它。

    • 請務必使用您已設定 IAM Identity Center AWS 區域 的 。

  3. 此時,共用 AWS config檔案包含名為 的設定檔my-sso-profile,其中包含一組組態值,可從 Tools for PowerShell 參考。若要尋找此檔案的位置,請參閱 AWS SDK 和工具參考指南中的共用檔案位置

    Tools for PowerShell 會使用設定檔的 SSO 權杖提供者,在傳送要求至 AWS之前取得憑證。此sso_role_name值是連接至 IAM Identity Center 許可集的 IAM 角色,應允許存取您應用程式中 AWS 服務 使用的 。

    下列範例顯示使用上述命令建立的設定檔。某些屬性值及其順序在您的實際設定檔中可能不同。設定檔的 sso-session 屬性是指名為 的區段my-sso-session,其中包含啟動 AWS 存取入口網站工作階段的設定。

    [profile my-sso-profile] sso_account_id=111122223333 sso_role_name=SamplePermissionSet sso_session=my-sso-session [sso-session my-sso-session] sso_region=us-west-2 sso_registration_scopes=sso:account:access sso_start_url=https://provided-domain.awsapps.com/start/
  4. 如果您已有作用中的 AWS 存取入口網站工作階段,Tools for PowerShell 會通知您已登入。

    如果不是這種情況,Tools for PowerShell 會嘗試在您的預設 Web 瀏覽器中自動開啟 SSO 授權頁面。請遵循瀏覽器中的提示,其中可能包含 SSO 授權碼、使用者名稱和密碼,以及存取 AWS IAM Identity Center 帳戶和許可集的許可。

    適用於 PowerShell 的工具會通知您 SSO 登入成功。

啟動 AWS 存取入口網站工作階段

在執行 存取的命令之前 AWS 服務,您需要作用中的 AWS 存取入口網站工作階段,以便 Tools for PowerShell 可以使用 IAM Identity Center 身分驗證來解析登入資料。若要登入 AWS 存取入口網站,請在 PowerShell 中執行下列命令,其中 -ProfileName my-sso-profile是當您遵循本主題上一節中的程序時,在共用config檔案中建立的設定檔名稱。

Invoke-AWSSSOLogin -ProfileName my-sso-profile

如果您已有作用中的 AWS 存取入口網站工作階段,Tools for PowerShell 會通知您已登入。

如果不是這種情況,Tools for PowerShell 會嘗試在您的預設 Web 瀏覽器中自動開啟 SSO 授權頁面。請遵循瀏覽器中的提示,其中可能包含 SSO 授權碼、使用者名稱和密碼,以及存取 AWS IAM Identity Center 帳戶和許可集的許可。

適用於 PowerShell 的工具會通知您 SSO 登入成功。

若要測試您是否已經有作用中的工作階段,請視需要在安裝或匯入AWS.Tools.SecurityToken模組之後執行下列命令。

Get-STSCallerIdentity -ProfileName my-sso-profile

Get-STSCallerIdentity cmdlet 的回應會報告共用config檔案中設定的 IAM Identity Center 帳戶和許可集。

範例

以下是如何將 IAM Identity Center 與 Tools for PowerShell 搭配使用的範例。假設如下:

  • 您已啟用 IAM Identity Center,並依照本主題先前所述進行設定。SSO 屬性位於設定檔中,此my-sso-profile設定檔在此主題稍早設定。

  • 當您透過 Initialize-AWSSSOConfigurationInvoke-AWSSSOLogin cmdlet 登入時,使用者至少擁有 Amazon S3 的唯讀許可。

  • 部分 S3 儲存貯體可供該使用者檢視。

視需要安裝或匯入AWS.Tools.S3模組,然後使用下列 PowerShell 命令來顯示 S3 儲存貯體的清單。

Get-S3Bucket -ProfileName my-sso-profile

其他資訊

  • 有關 Tools for PowerShell 驗證的更多選項,例如使用設定檔和環境變量,請參閱 AWS SDK 和工具參考指南中的組態章節。

  • 有些命令需要指定 AWS 區域。有多種方法可以這樣做,包括 -Region cmdlet 選項、[default]設定檔和AWS_REGION環境變數。如需詳細資訊,請參閱本指南指定 AWS 的區域 AWS Tools for PowerShell中的 和 AWS SDKs和工具參考指南中的AWS 區域

  • 如需了解有關最佳實務的資訊,請參閱 IAM 使用者指南中的 IAM 安全最佳實務

  • 若要建立短期 AWS 登入資料,請參閱《IAM 使用者指南》中的暫時安全登入資料。

  • 若要瞭解其他憑證提供者,請參閱 AWS SDK 和工具參考指南中的標準化憑證提供者