設定 AWS CLI 使用IAM身分識別中心驗證 - AWS Command Line Interface

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

設定 AWS CLI 使用IAM身分識別中心驗證

本主題提供有關如何 AWS CLI 使用 AWS IAM Identity Center (IAMIdentity Center) 設定以擷取認證以執行 AWS CLI 命令的指示。主要有兩種方法可透過 IAM Identity Center 驗證使用者,以取得透過config檔案執行 AWS CLI 命令的認證:

  • (建議) SSO 權杖提供者組態。

  • 舊版不可重新整理的配置。

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

注意

如需將身IAM分識別中心與 AWS CLI 指令搭配使用的引導程序,請參閱教學課程:使用IAM身分識別中心執行 Amazon S3 命令

主題

必要條件

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

  • 您必須先擁有IAM身分識別中心內的SSO驗證存取權。選擇下列其中一種方法來存取您的 AWS 認證。

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

注意

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

結束入口網站並再次登入 AWS 帳戶,以查看您的程式設計存取詳細資料,以及AdministratorPowerUserAccess的選項。使用PowerUserAccess時選取SDK。

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

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

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

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

取得IAM身分識別中心的存取權後,請執行下列動作來收集您的IAM身分識別中心資訊:

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

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

  3. 選擇IAM身分識別中心認證方法,以取得您需要執行的SSO Start URLSSO Regionaws configure sso。如需要註冊哪些範圍值的相關資訊,請參閱IAM身分識別中心使用者指南中的 OAuth2.0 存取範圍

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

若要為您的IAM身分識別中心設定檔 AWS CLI:
  1. 在您偏好的終端機中,執行aws configure sso指令。

    IAM Identity Center

    建立工作階段名稱、提供您的IAM身分識別中心起點URL、裝載IAM身分識別中心目錄的名稱,以及註冊範圍。 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
    Legacy IAM Identity Center

    略過工作階段名稱,並提供您的IAM身分識別中心起始位置URL和裝載身分識別中心目錄的 AWS 區域。

    $ aws configure sso SSO session name (Recommended): SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]:us-east-1
  2. AWS CLI 嘗試為您的IAM身分中心帳戶的登入程序開啟預設瀏覽器。此過程可能會提示您允許 AWS CLI 訪問您的數據。由 AWS CLI 於建置在SDK用於 Python 之上,因此權限訊息可能會包含botocore名稱的變體。

    • 如果 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
  3. 從顯示的清單中選取要使用的 AWS 帳號。如果您被授權只使用一個帳戶,則會 AWS CLI 自動選取該帳戶並略過提示。

    There are 2 AWS accounts available to you. > DeveloperAccount, developer-account-admin@example.com (123456789011) ProductionAccount, production-account-admin@example.com (123456789022)
  4. 從顯示的清單中選取要使用的IAM角色。如果只有一個可用角色,則會 AWS CLI 自動選取該角色並略過提示。

    Using the account ID 123456789011 There are 2 roles available to you. > ReadOnly FullAccess
  5. 指定預設輸出格式、 AWS 區域要傳送指令的預設值以及設定檔的名稱。如果您指定default為設定檔名稱,則此設定檔會成為使用的預設設定檔。在下列範例中,使用者會輸入預設區域、預設輸出格式和設定檔的名稱。

    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>
  6. 最後一則訊息說明完成的設定檔組態。您現在可以使用此設定檔要求認證。使用 aws sso login 命令來請求和擷取執行命令所需的憑證。如需說明,請參閱登入IAM身分識別中心工作階段

這些步驟會導致在檔案中建立sso-session截面和具名設定config檔,如下所示:

IAM Identity Center
[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
Legacy IAM Identity Center
[profile my-dev-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-east-1 sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json

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

注意

此組態與舊版IAM身分識別中心不相容。

aws configure sso-session令會更新~/.aws/config檔案中的sso-session區段。執行命aws configure sso-session令,並提供您的IAM身分識別中心啟動URL和裝載IAM身分識別中心目錄的 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

使用 config 檔案手動設定

IAM識別中心規劃資訊儲存在config檔案中,並且可以使用文字編輯器進行編輯。若要手動將 IAM Identity Center 支援新增至具名的設定檔,您必須將金鑰和值新增至config檔案。

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

您可以定義sso-session截面並將其與輪廓相關聯。必須在區段中sso_start_url設定sso_region和設sso-session定。一般而言,sso_account_idsso_role_name必須在profile區段中設定,才SDK能要求SSO認證。

下列範例會設定要求SSO認證,並支援自動權杖重新整SDK理:

[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_account_idsso_role_name不是SSO令牌配置的所有場景都是必需的。如果您的應用程式只使用支援承載驗證的 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

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

注意

使用舊版不可重新整理的組態,不支援自動字符重新整理。我們建議使用SSO令牌配置。

若要手動將 IAM Identity Center 支援新增至具名的設定檔,您必須將下列機碼和值新增至檔案中的設定config檔定義。

您可以在.aws/config檔案中包含任何其他有效鍵和值。下列範例為IAM身分識別中心設定檔:

[profile my-sso-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-west-2 sso_account_id = 111122223333 sso_role_name = SSOReadOnlyRole region = us-west-2 output = json

若要執行命令,您必須先登入IAM身分識別中心工作階段要求並擷取暫時認證。

如需 configcredentials 檔案的詳細資訊,請參閱 組態與憑證檔案設定

登入IAM身分識別中心工作階段

注意

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

若要擷取並快取一組 IAM Identity Center 認證,請執行下列命令 AWS CLI 以開啟預設瀏覽器並驗證您的IAM身分中心登入。

$ aws sso login --profile my-dev-profile SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request. Successfully logged into Start URL: https://my-sso-portal.awsapps.com/start

系統會快取您的 IAM Identity Center 工作階段認證,並 AWS CLI 使用它們來安全地擷取設定檔中指定IAM角色的 AWS 認證。

如果 AWS CLI 無法打開瀏覽器,它會提示您自己打開它並輸入指定的代碼。

$ aws sso login --profile my-dev-profile Using a browser, open the following URL: https://device.sso.us-west-2.amazonaws.com/ and enter the following code: QCFK-N451

您也可以指定使用 aws sso login 指令的 --sso-session 參數登入時要使用的 sso-session 設定檔。此選sso-session項不適用於舊式IAM身分識別中心。

$ aws sso login --sso-session my-dev-session

驗證 Token 會快取至~/.aws/sso/cache目錄下的磁碟,檔案名稱是以sso_start_url.

使用您的IAM身分中心設定檔執行命令

登入後,您可以使用認證來叫用具有關聯具名設定檔的命 AWS CLI 令。下列範例顯示使用設定檔的指令:

$ aws sts get-caller-identity --profile my-dev-profile

只要您登入 IAM Identity Center 且那些快取的認證尚未過期,就會在需要時 AWS CLI 自動更新過期的 AWS 認證。不過,如果您的IAM身分中心認證過期,您必須重新登入您的IAM身分中心帳戶,以明確地更新這些憑證。

登出您的IAM身分識別中心工作階段

使用 IAM Identity Center 設定檔完成後,您可以讓認證過期,或執行下列命令刪除快取的認證。

$ aws sso logout Successfully signed out of all SSO profiles.

故障診斷

如果您在使用時遇到問題 AWS CLI,請參閱以排解 AWS CLI 錯誤取得疑難排解步驟。

相關資源

其他資源如下。