設定使用具有自動身份驗證重新整理的 IAM 身分中心令牌提供者憑據 AWS CLI - AWS Command Line Interface

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

設定使用具有自動身份驗證重新整理的 IAM 身分中心令牌提供者憑據 AWS CLI

本主題說明如何設定使用 AWS IAM Identity Center (IAM 身分中心) 權杖提供者設定 AWS CLI 來驗證使用者。使用此 SSO 權杖提供者組態,您的 AWS SDK 或工具就能自動擷取重新整理的身分驗證權杖。

使用 IAM Identity Center 時,您可以登入 Active Directory、內建的 IAM Identity Center 目錄或連線至 IAM Identity Center 的其他 IdP。您可以將這些登入資料對應至 AWS Identity and Access Management (IAM) 角色,以便執行 AWS CLI 命令。

無論您使用哪種 IdP,IAM Identity Center 都會將這些區別擷取出來。例如,您可以按照部落格文章 IAM Identity Center 的下一個演變中所述的方法連線 Microsoft Azure AD。

注意

如需使用不使用帳戶 ID 和角色的承載身份驗證的相關資訊,請參閱 Amazon 使用 CodeCatalyst 者指南 CodeCatalyst中的設定以使用 AWS CLI 與

您可以使用 SSO 權杖提供者設定,視應用程式需要自動重新整理驗證權杖,以及使用延長的工作階段持續時間選項。您可採用以下方式設定:

  • 自動,使用 aws configure ssoaws configure sso-session 命令。下列指令是指引您完成設定檔配置的精靈,sso-session 資訊如下:

  • 手動,編輯儲存具名設定檔的 config 檔案。

必要條件

  • 安裝 AWS CLI. 如需詳細資訊,請參閱 安裝或更新到最新版本的 AWS CLI

  • 您必須先有辦法存取 IAM Identity Center 中的 SSO 身分驗證。選擇下列其中一種方法來存取您的 AWS 認證。

請遵循 AWS IAM Identity Center 使用者指南入門說明。此程序可以啟動 IAM Identity Center、建立管理使用者,並新增適當的最低權限許可集。

注意

建立套用最低權限權限的權限集。建議您使用預先定義的 PowerUserAccess 許可集,除非您的雇主已為此目的建立了自訂許可集。

退出入口網站,然後再次登入以查看Administrator或的選項PowerUserAccess。 AWS 帳戶 在使用 SDK 時選取 PowerUserAccess。如此一來,也能協助您找到程式設計存取權的相關詳細資訊。

AWS 透過身分提供者的入口網站登入。如果您的 Cloud 管理員已授予您 PowerUserAccess (開發人員) 權限,您會看到您 AWS 帳戶 有權存取的權限以及您的權限集。您會在許可集名稱旁,看到使用該許可集手動或以程式設計方式存取帳戶的選項。

若您自訂實作,可能會產生不同體驗,例如不同的許可集名稱。若您不確定要使用哪個許可集,請聯絡您的 IT 團隊尋求協助。

AWS 透過 AWS 存取入口網站登入。如果您的 Cloud 管理員已授予您 PowerUserAccess (開發人員) 權限,您會看到您 AWS 帳戶 有權存取的權限以及您的權限集。您會在許可集名稱旁,看到使用該許可集手動或以程式設計方式存取帳戶的選項。

請聯絡您的 IT 團隊尋求協助。

使用 aws configure sso 精靈設定您的設定檔

將 IAM Identity Center 設定檔和 sso-session 設定至您的 AWS CLI
  1. 執行下列動作來收集您的 IAM Identity Center 資訊:

    1. 在您的 AWS 存取入口網站中,選取您用於開發的權限集,然後選取 [存取金鑰] 連結。

    2. 在 [取得認證] 對話方塊中,選擇符合您作業系統的索引標籤。

    3. 選擇 IAM Identity Center 憑證方法,以取得您執行 aws configure sso 所需的 SSO Start URLSSO Region 值。

    4. 如需要在哪些範圍註冊值的詳細資訊,請參閱《IAM Identity Center 使用者指南》中的 OAuth 2.0 存取範圍

  2. 在您偏好的終端機中執行aws configure sso命令,並提供 IAM 身分中心起始 URL 和託管身分識別中心目錄的 AWS 區域。

    $ aws configure sso SSO session name (Recommended): my-sso SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]: us-east-1 SSO registration scopes [None]: sso:account:access
  3. AWS CLI 嘗試開啟您的預設瀏覽器並開始 IAM 身分中心帳戶的登入程序。

    Attempting to automatically open the SSO authorization page in your default browser.

    如果 AWS CLI 無法開啟瀏覽器,則會出現以下訊息,其中包含如何手動啟動登入程序的指示。

    If the browser does not open or you wish to use a different device to authorize this request, open the following URL: https://device.sso.us-west-2.amazonaws.com/ Then enter the code: QCFK-N451

    IAM Identity Center 使用該代碼來將 IAM Identity Center 工作階段與您目前的 AWS CLI 工作階段建立關聯。IAM Identity Center 瀏覽器頁面會提示您使用您的 IAM Identity Center 憑證登入。如此可讓您擷 AWS CLI 取和顯示您獲授權可與 IAM 身分中心搭配使用的 AWS 帳戶和角色。

    注意

    登入程序可能會提示您允許 AWS CLI 存取您的資料。由 AWS CLI 於建置在適用於 Python 的 SDK 之上,因此權限訊息可能會包含botocore名稱的變體。

  4. 會 AWS CLI 顯示可供您使用的 AWS 帳戶。如果您被授權只使用一個帳戶,則會自動為您 AWS CLI 選取該帳戶並略過提示。您可以使用的 AWS 帳戶取決於 IAM 身分中心中的使用者組態。

    There are 2 AWS accounts available to you. > DeveloperAccount, developer-account-admin@example.com (123456789011) ProductionAccount, production-account-admin@example.com (123456789022)

    使用方向鍵來選取您想要使用的帳戶。左邊的「>」字元指向目前的選擇。按 ENTER 以進行選取。

  5. 會 AWS CLI 確認您的帳戶選擇,並顯示所選帳戶中可用的 IAM 角色。如果選取的帳號只列出一個角色,則會自動為您 AWS CLI 選取該角色並略過提示。可供您使用的角色取決於 IAM Identity Center 中的使用者組態。

    Using the account ID 123456789011 There are 2 roles available to you. > ReadOnly FullAccess

    使用方向鍵來選取您要使用的 IAM 角色,然後按 <ENTER>。

  6. 指定預設輸出格式、要傳送命令到哪個預設 AWS 區域,以及為設定檔命名,以便您可以在本機電腦上定義的所有設定檔中參考此設定檔。在下列範例中,使用者會輸入預設區域、預設輸出格式和設定檔的名稱。如果您有現有的組態,可以按下 <ENTER> 來選取方括號之間顯示的任何預設值。建議的設定檔名稱是帳戶 ID 號碼,後面接著底線,然後接著角色名稱。

    CLI default client Region [None]: us-west-2<ENTER> CLI default output format [None]: json<ENTER> CLI profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>
    注意

    如果您指定default為設定檔名稱,則每當您執行指 AWS CLI 令且不指定設定檔名稱時,此設定檔就會成為使用的設定檔名稱。

  7. 最後一則訊息說明完成的設定檔組態。

    To use this profile, specify the profile name using --profile, as shown: aws s3 ls --profile my-dev-profile
  8. 這會建立 sso-session 區段以及 ~/.aws/config 中的具名設定檔,看起來類似如下:

    [profile my-dev-profile] sso_session = my-sso sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start sso_registration_scopes = sso:account:access

    您現在可以使用此 sso-session 和設定檔來請求重新整理的憑證。使用 aws sso login 命令來請求和擷取執行命令所需的憑證。如需說明,請參閱使用 IAM Identity Center 具名設定檔

使用 aws configure sso-session 精靈只設定 sso-session 區段

aws configure sso-session 命令只會更新 ~/.aws/config 檔案中的 sso-session 區段。此命令可用於建立或更新工作階段。如果您已經擁有現有的組態設定,並且想要建立新的或編輯現有的 sso-session 組態,此功能非常實用。

執行命aws configure sso-session令並提供您的 IAM 身分中心起始 URL 和託管身分識別中心目錄的 AWS 區域。

$ aws configure sso-session SSO session name: my-sso SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]: us-east-1 SSO registration scopes [None]: sso:account:access

輸入您的資訊後,會有一則訊息說明設定檔配置完成。

Completed configuring SSO session: my-sso Run the following to login and refresh access token for this session: aws sso login --sso-session my-sso
注意

如果您已登入正在更新的 sso-session,請執行 aws sso login 命令來重新整理字符。

使用 config 檔案手動設定

config文件的sso-session部分用於分組配置變量以獲取 SSO 訪問令牌,然後可以用來獲取 AWS 憑據。使用下列的設定:

定義 sso-session 區段並將其與設定檔相關聯。sso_regionsso_start_url 必須在 sso-session 區段內設定。一般而言,sso_account_idsso_role_name 必須在 profile 區段中設定,以讓開發套件請求 SSO 憑證。

下列範例會將開發套件設定為請求 SSO憑認證,並支援自動字符重新整理:

[profile dev] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start

這也讓 sso-session 組態能在多個設定檔中重複使用:

[profile dev] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole [profile prod] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole2 [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start

然而,SSO 字符組態並非所有情況都需要 sso_account_idsso_role_name。如果您的應用程式只使用支援承載驗證的 AWS 服務,則不需要傳統的 AWS 認證。承載身分驗證是一種 HTTP 身分驗證結構描述,使用稱為承載字符的安全字符。在這種情況下,sso_account_idsso_role_name 並非必要資訊。請參閱您 AWS 服務的個別指南,以確定其是否支援承載字符授權。

此外,註冊範圍也可以設定為 sso-session 的一部分。範圍是 OAuth 2.0 中的一種機制,用於限制應用程式對使用者帳戶的存取。應用程式可以請求一個或多個範圍,則合法給應用程式的存取字符將僅限於授予的範圍。這些範圍定義為已註冊 OIDC 用戶端和用戶端擷取的存取字符進行授權所需請求的許可。下列範例設定 sso_registration_scopes 以提供列出帳戶/角色的存取權限:

[sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start sso_registration_scopes = sso:account:access

身分驗證字符會以基於工作階段名稱的檔案名稱快取至 ~/.aws/sso/cache 目錄下的磁碟。