在 AWS STS 區域中管理 AWS - AWS Identity and Access Management

在 AWS STS 區域中管理 AWS

根據預設,AWS Security Token Service (AWS STS) 是以全域服務形式提供,而且所有 AWS STS 請求都移至單一端點,網址為 https://sts.amazonaws.com。AWS 建議使用區域性 AWS STS 端點 (而不是全域端點),以降低延遲、內建備援,並提高工作階段權杖有效性。

  • 減少延遲 – 透過讓您的 AWS STS 呼叫與您服務和應用程式地理位置較近的端點,您可以以較低的延遲存取 AWS STS 服務,獲得更佳的回應時間。

  • 內建備援 – 您可以將程式碼新增到應用程式,該程式碼會將 AWS STS API 呼叫切換到不同的區域。這可確保如果第一個區域停止回應,您的應用程式會繼續操作。此冗餘不是自動的;您必須在程式碼中建置功能。

  • 提高工作階段權杖有效性 – 區域性 AWS STS 端點的工作階段權杖在所有 AWS 區域都有效。來自全域 STS 端點的工作階段權杖僅在預設啟用的 AWS 區域中有效。如果您想要為帳戶啟用新的區域,您可以從區域 STS 端點使用工作階段權杖。如果您選擇使用全域端點,您必須變更全域端點的 STS 工作階段權杖區域相容性。這樣做可確保權杖在所有 AWS 區域都有效。

管理全域端點的工作階段權杖

在預設情況下,會在所有 AWS 服務中啟用大多數 AWS 區域的操作。會自動啟用這些區域來 AWS STS 與搭配使用。亞太區域 (香港) 之類的某些區域必須手動啟用。若要進一步了解啟用和停用 AWS 區域,請參閱《AWS 一般參考》中的管理 AWS 區域。啟用這些 AWS 區域時,就會自動啟用這些區域與 AWS STS 搭配使用的功能。您不能為已停用的區域啟用 STS 端點。在所有 AWS 區域都有效的權杖包含的字元多於在預設啟用區域中有效的權杖。變更此設定可能會影響暫時存放權杖的現有系統。

您可以使用 AWS Management Console、AWS CLI 或 AWS API 來變更此設定。

變更全域端點工作階段權杖的區域相容性 (主控台)

  1. 以具有 IAM 管理任務執行許可的根使用者或 IAM 使用者身分來登入。若要變更工作階段權杖的相容性,您必須擁有允許 iam:SetSecurityTokenServicePreferences 動作的政策。

  2. 開啟 IAM 主控台。在導覽窗格中,選擇 Account settings (帳戶設定)

  3. 如果必要,展開 Security Token Service (STS) (安全性權杖服務 (STS)) 區段。在 Global endpoint (全域端點) 旁的第一個表格,Region compatibility of session tokens (工作階段權杖的區域相容性) 欄會指出 Valid only in AWS Regions enabled by default。選擇 Change (變更)

  4. Change region compatibility of session tokens for global endpoint (變更全域端點工作階段權杖的區域相容性) 對話方塊中,選取 Valid in all AWS Regions (在所有 區域都有效)。接著選擇 Save changes (儲存變更)

    注意

    在所有 AWS 區域都有效的權杖包含的字元多於在預設啟用區域中有效的權杖。變更此設定可能會影響暫時存放權杖的現有系統。

變更全域端點工作階段權杖的區域相容性 (AWS CLI)

設定工作階段字符版本。版本 1 權杖僅在預設可用的 AWS 區域中有效。這些權杖不適用於手動啟用的區域,例如亞太區域 (香港)。版本 2 權杖在所有區域都有效。不過,版本 2 權杖包含較多字元且可能會影響暫時存放權杖的系統。

變更全域端點工作階段權杖的區域相容性 (AWS API)

設定工作階段字符版本。版本 1 權杖僅在預設可用的 AWS 區域中有效。這些權杖不適用於手動啟用的區域,例如亞太區域 (香港)。版本 2 權杖在所有區域都有效。不過,版本 2 權杖包含較多字元且可能會影響暫時存放權杖的系統。

在 AWS STS 區域中啟用及停用 AWS

啟用區域的 STS 端點時,則 AWS STS 可以在提出 AWS STS 請求的帳戶中對使用者和角色發出臨時憑證。然後,您就可以在預設啟用或手動啟用的任何區域中使用這些憑證。您必須在臨時憑證產生所在的帳戶中啟用區域。提出請求時使用者登入的是相同帳戶或不同帳戶並不重要。

例如,假設帳戶 A 中的使用者想要傳送 sts:AssumeRole API 請求到 STS 區域端點https://sts.us-west-2.amazonaws.com。該請求用於帳戶 B 中名為 Developer 的角色的暫時憑證。由於請求是為帳戶 B 中的實體建立憑證,因此帳戶 B 必須啟用 us-west-2 區域。來自帳戶A (或任何其他帳戶) 的使用者可以呼叫 us-west-2 端點以請求帳戶 B 的憑證,無論該帳戶中是否已啟用該區域。

注意

在該帳戶中使用臨時憑證的每個人都可使用作用中的區域。若要控制哪些 IAM 使用者或角色可以存取區域,請在許可政策中使用 aws:RequestedRegion 條件索引鍵。

在預設為啟用的區域中啟用或停用 AWS STS (主控台)

  1. 以具有 IAM 管理任務執行許可的根使用者或 IAM 使用者身分來登入。

  2. 開啟 IAM 主控台,然後在導覽窗格中選擇 Account settings (帳戶設定)。

  3. 視需要展開 Security Token Service Regions (STS) (安全權杖服務區域 (STS)),找到要啟用的區域,然後選擇 Activate (啟用) 或 Deactivate (停用)。對於必須啟用的區域,我們會在您啟用區域時自動啟用 STS。啟用「區域」後,該區域的 AWS STS 永遠處於作用中狀態,而且您無法將其停用。如要了解如何啟用區域,請參閱《AWS 一般參考》中的管理 AWS 區域

撰寫程式碼以使用 AWS STS 區域

啟用區域後,您就可以將 AWS STS API 呼叫導向該區域。以下 Java 程式碼片段會示範如何設定 AWSSecurityTokenService 物件,以對歐洲 (愛爾蘭) (eu-west-1) 區域提出請求。

EndpointConfiguration regionEndpointConfig = new EndpointConfiguration("https://sts.eu-west-1.amazonaws.com", "eu-west-1"); AWSSecurityTokenService stsRegionalClient = AWSSecurityTokenServiceClientBuilder.standard() .withCredentials(credentials) .withEndpointConfiguration(regionEndpointConfig) .build();

AWS STS 建議您對區域端點發出呼叫。如要了解如何手動啟用區域,請參閱《AWS 一般參考》中的管理 AWS 區域

在這個範例中,第一行會執行個體化稱為 EndpointConfigurationregionEndpointConfig 物件,並將端點和區域的 URL 做為參數傳遞。

對於所有其他語言和程式設計環境組合,請參閱相關軟體開發套件的文件

區域與端點

下表列出區域及其端點。它會指出哪些是預設啟用,以及哪些可以啟用或停用。

區域名稱 端點 預設為作用中 手動啟動/停用
--全球服務-- sts.amazonaws.com
美國東部 (俄亥俄) sts.us-east-2.amazonaws.com
美國東部 (維吉尼亞北部) sts.us-east-1.amazonaws.com
美國西部 (加利佛尼亞北部) sts.us-west-1.amazonaws.com
美國西部 (奧勒岡) sts.us-west-2.amazonaws.com
非洲 (開普敦) sts.af-south-1.amazonaws.com 否¹
亞太區域 (香港) sts.ap-east-1.amazonaws.com 否¹
亞太區域 (雅加達) sts.ap-southeast-3.amazonaws.com 否¹
亞太區域 (孟買) sts.ap-south-1.amazonaws.com
亞太區域 (大阪) sts.ap-northeast-3.amazonaws.com
亞太區域 (首爾) sts.ap-northeast-2.amazonaws.com
亞太區域 (新加坡) sts.ap-southeast-1.amazonaws.com
亞太區域 (雪梨) sts.ap-southeast-2.amazonaws.com
亞太區域 (東京) sts.ap-northeast-1.amazonaws.com
加拿大 (中部) sts.ca-central-1.amazonaws.com
歐洲 (法蘭克福) sts.eu-central-1.amazonaws.com
歐洲 (愛爾蘭) sts.eu-west-1.amazonaws.com
歐洲 (倫敦) sts.eu-west-2.amazonaws.com
歐洲 (米蘭) sts.eu-south-1.amazonaws.com 否¹
歐洲 (巴黎) sts.eu-west-3.amazonaws.com
歐洲 (斯德哥爾摩) sts.eu-north-1.amazonaws.com
中東 (巴林) sts.me-south-1.amazonaws.com 否¹
南美洲 (聖保羅) sts.sa-east-1.amazonaws.com

¹ 您必須啟用區域才能使用它。這會自動啟動 STS。您無法手動啟動或停用這些區域中的 STS。

AWS CloudTrail 與區域端點

對區域端點 (例如 us-east-2.amazonaws.com) 的呼叫日誌會記錄在 AWS CloudTrail 中,與對區域服務的任何呼叫相同。對此全球端點 sts.amazonaws.com 的呼叫都會記錄為對全球服務的呼叫。如需詳細資訊,請參閱 使用 AWS CloudTrail 記錄 IAM 和 AWS STS API 呼叫