設定 AWS CLI 以使用 AWS IAM Identity Center (successor to AWS Single Sign-On) - AWS Command Line Interface

設定 AWS CLI 以使用 AWS IAM Identity Center (successor to AWS Single Sign-On)

如果您的組織使用 AWS IAM Identity Center (successor to AWS Single Sign-On) (IAM Identity Center),則您的使用者可以登入 Active Directory、內建的 IAM Identity Center 目錄或已連線的其他 iDPIAM Identity Center,並與可讓您執行 AWS CLI 命令的 AWS Identity and Access Management (IAM) 角色對應。無論您使用哪種 iDP,IAM Identity Center 都會將這些區別擷取出來,並且都可以與 AWS CLI 搭配使用,如下所述。例如,您可以按照部落格文章《AWS Single Sign-On 的下一個演變》中所述的方法連線 Microsoft Azure AD

如需有關 IAM Identity Center 的詳細資訊,請參閱《AWS IAM Identity Center (successor to AWS Single Sign-On) 使用者指南》

本主題說明如何設定 AWS CLI 以驗證使用 IAM Identity Center 的使用者,以取得短期的憑證來執行 AWS CLI 命令。它包括以下部分:

設定要使用 IAM Identity Center 的具名設定檔

您可以設定一或多個 AWS CLI 命名設定檔以使用來自 IAM Identity Center 的角色。

您可以透過下列方式設定設定檔:

  • 自動,使用命令 aws configure sso

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

自動組態

您可以執行下列命令,提供 IAM Identity Center 起始 URL 和裝載 IAM Identity Center 目錄的 AWS 區域,將已啟用 IAM Identity Center 的設定檔新增到您的 AWS CLI。

$ aws configure sso SSO start URL [None]: [None]: https://my-sso-portal.awsapps.com/start SSO region [None]:us-east-1

AWS CLI 會嘗試開啟您的預設瀏覽器,並開始 IAM Identity Center 帳戶的登入程序。

SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

如果 AWS CLI 無法開啟瀏覽器,則會顯示以下訊息,並提供如何手動啟動登入程序的指示。

Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

IAM Identity Center 使用該代碼來將 IAM Identity Center 工作階段與您目前的工作階段 AWS CLI 建立關聯。IAM Identity Center 瀏覽器頁面會提示您使用您的 IAM Identity Center 帳戶憑證來登入。這可讓 AWS CLI (透過與您 IAM Identity Center 帳戶相關聯的權限) 擷取並顯示您獲授權搭配 IAM Identity Center 使用的 AWS 帳戶和角色。

接下來,AWS CLI 會顯示可供您使用的 AWS 帳戶。如果您僅獲授權使用某個帳戶,AWS CLI 會自動為您選取該帳戶並略過提示。可供您使用的 AWS 帳戶取決於 IAM Identity Center 中的使用者組態。

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

使用方向鍵來選取您要與此設定檔搭配使用的帳戶。左邊的「>」字元指向目前的選擇。按 ENTER 以進行選取。

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

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

如同以往,使用方向鍵來選取您要與此設定檔搭配使用的 IAM 角色。左邊的「>」字元指向目前的選擇。按<ENTER>以進行選取。

AWS CLI 會確認您的角色選擇。

Using the role name "ReadOnly"

現在,您可以完成設定檔的組態,方法是指定預設輸出格式、要傳送命令到哪個預設 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 命令且不指定設定檔名稱時,此設定檔就會變成使用的設定檔。

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

若要使用此設定檔,請使用 --profile 指定設定檔名稱,如下所示:

aws s3 ls --profile my-dev-profile

先前的範例輸入會在 ~/.aws/config 中產生具名設定檔,如下列範例所示。

[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 sso login 命令來實際要求和擷取執行命令所需的暫時憑證。如需指示,請參閱 使用啟用 IAM Identity Center 的具名設定檔

注意

您也可以使用指定的設定檔來執行命令 AWS CLI。如果您目前尚未登入 IAM Identity Center 入口網站,它會自動為您啟動登入程序,就像您手動執行 aws sso login 命令一樣。

手動組態

若要手動將 IAM Identity Center 支援新增至具名設定檔,您必須將下列機碼和值新增至檔案 ~/.aws/config (Linux 或 macOS) 或 %USERPROFILE%/.aws/config (Windows) 中的設定檔定義。

sso_start_url

指定指向組織 IAM Identity Center 使用者入口網站的 URL。AWS CLI 使用此 URL 與 IAM Identity Center 服務建立工作階段,以驗證其使用者。若要尋找您的使用者入口網站 URL,請使用以下選項之一:

  • 開啟您的邀請電子郵件,將列出使用者入口網站 URL。

  • 開啟 AWS IAM Identity Center (successor to AWS Single Sign-On) 主控台 https://console.aws.amazon.com/singlesignon/。使用者入口網站 URL 將在您的設定中列出。

sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region

包含 IAM Identity Center 入口網站主機的 AWS 區域。這與預設的 CLI region 參數不同,且可以是與其不同的區域。

sso_region = us-west-2
sso_account_id

AWS 帳戶 ID,其中包含您想要搭配此設定檔使用的 IAM 角色。

sso_account_id = 123456789011
sso_role_name

使用此設定檔時,定義使用者權限的 IAM 角色名稱。

sso_role_name = ReadAccess

存在這些機碼即會將此設定檔識別為使用 IAM Identity Center 來驗證使用者的設定檔。

您也可以在 .aws/config 檔案中包含有效的任何其他機碼和值,例如 regionoutputs3。但是,您不能包含任何憑證相關的值,例如 role_arnaws_secret_access_key。如果您這樣做,AWS CLI 會產生錯誤。

因此,.aws/config 中的典型 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 CLI 服務命令。您必須先使用 aws sso login 命令來實際要求和擷取執行命令所需的暫時憑證。如需說明,請參閱下一節,使用啟用 IAM Identity Center 的具名設定檔

使用啟用 IAM Identity Center 的具名設定檔

本節說明如何使用您在先前章節中建立的 IAM Identity Center 設定檔。

登入並取得暫時憑證

自動或手動設定具名設定檔之後,您可以呼叫它來從 AWS 請求臨時憑證。您必須先擷取並快取一組臨時憑證,才能執行 AWS CLI 服務命令。若要取得這些臨時憑證,請執行下列命令。

$ aws sso login --profile my-dev-profile

AWS CLI 會開啟您的預設瀏覽器,並驗證您的 IAM Identity Center 登入。

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 帳戶,您必須提供您的 IAM Identity Center 使用者名稱和密碼。

如果 AWS CLI 無法開啟您的瀏覽器,系統會提示您自行開啟並輸入指定的代碼。

$ aws sso login --profile my-dev-profile Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

AWS CLI 會開啟您的預設瀏覽器 (或您可以手動開啟您選擇的瀏覽器) 進入指定的頁面,然後輸入提供的代碼。網頁接著會提示您輸入 IAM Identity Center 憑證。

系統會將您的 IAM Identity Center 工作階段憑證快取,並包含到期時間戳記。當憑證到期時,AWS CLI 會請求您再次登入 IAM Identity Center。

如果您的 IAM Identity Center 憑證有效,則 AWS CLI 會使用它們來安全地擷取設定檔中指定的 IAM 角色的 AWS 臨時憑證。

Welcome, you have successfully signed-in to the AWS-CLI.

使用已啟用 IAM Identity Center 的設定檔執行命令

您可以使用這些臨時憑證來叫用具有關聯具名設定檔的 AWS CLI 命令。下列範例會顯示命令是以屬於指定帳戶一部分的擔任角色執行。

$ aws sts get-caller-identity --profile my-dev-profile { "UserId": "AROA12345678901234567:test-user@example.com", "Account": "123456789011", "Arn": "arn:aws:sts::123456789011:assumed-role/AWSPeregrine_readOnly_12321abc454d123/test-user@example.com" }

只要您登入 IAM Identity Center,而且那些快取的憑證尚未過期,AWS CLI 就會在需要時自動更新過期的 AWS 暫時憑證。但是,如果您的 IAM Identity Center 憑證過期,必須重新登入您的 IAM Identity Center 帳戶,以明確更新它們。

$ aws s3 ls --profile my-sso-profile Your short-term credentials have expired. Please sign-in to renew your credentials SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

您可以建立多個已啟用 IAM Identity Center 的具名設定檔,每個設定檔都指向不同的 AWS 帳戶或角色。您也可以同時在多個設定檔上使用 aws sso login 命令。如果其中任何一個使用相同的 IAM Identity Center 使用者帳戶,您僅必須只登入該 IAM Identity Center 使用者帳戶一次,然後它們就會全部共用一組 IAM Identity Center 快取憑證。

# The following command retrieves temporary credentials for the AWS account and role # specified in one named profile. If you are not yet signed in to IAM Identity Center or your # cached credentials have expired, it opens your browser and prompts you for your # IAM Identity Center user name and password. It then retrieves AWS temporary credentials for # the IAM role associated with this profile. $ aws sso login --profile my-first-sso-profile # The next command retrieves a different set of temporary credentials for the AWS # account and role specified in the second named profile. It does not overwrite or # in any way compromise the first profile's credentials. If this profile specifies the # same IAM Identity Center portal, then it uses the SSO credentials that you retrieved in the # previous command. The AWS CLI then retrieves AWS temporary credentials for the # IAM role associated with the second profile. You don't have to sign in to # IAM Identity Center again. $ aws sso login --profile my-second-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the first profile. $ aws ec2 describe-instances --profile my-first-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the second profile. $ aws ec2 describe-instances --profile my-second-sso-profile

登出您的 IAM Identity Center 工作階段

當您用完已啟用 IAM Identity Center 的設定檔時,您可以選擇不執行任何動作,讓 AWS 暫時憑證和您的 IAM Identity Center 憑證過期。不過,您也可以選擇執行下列命令,立即刪除 SSO 憑證快取資料夾中的所有快取憑證,和以 AWS 憑證為基礎的所有 IAM Identity Center 臨時憑證。這會使得這些憑證無法用於任何未來的命令。

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

如果您稍後想要使用已啟用 IAM Identity Center 的其中一個設定檔執行命令,則必須再次執行 aws sso login 命令 (請參閱前一節),並指定要使用的設定檔。