正在設定 SAML - Amazon AppStream 2.0

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

正在設定 SAML

若要讓使用者使用現有的認證登入 AppStream 2.0 並啟動串流應用程式,您可以使用 SAML 2.0 設定身分聯合。若要這麼做,請使用 IAM 角色和轉送狀態 URL 來設定符合 SAML 2.0 標準的身分識別提供者 (IdP),並允許您的聯合身分使 AWS 用者存取 2.0 堆疊。 AppStream IAM 角色可將存取堆疊的許可授予使用者。轉送狀態是一種堆疊入口網站,當 AWS成功驗證之後,即會將使用者轉送到該處。

必要條件

設定 SAML 2.0 連線之前,請先完成下列先決條件。

  1. 設定 SAML 型 IdP 並與 AWS建立信任關係。

    • 在您的組織網路內部,設定要用於以 SAML 為基礎之 IdP 的身分存放區。如需組態資源,請參閱AppStream 2.0 與三美航空 2.0 的整合

    • 使用以 SAML 為基礎的 IdP 來產生並下載聯合中繼資料文件,以將您的組織描述為 IdP。這份簽章的 XML 文件是用來建立轉送方信任關係。請將這個檔案儲存到日後可從 IAM 主控台存取更新版本的位置。

  2. 使用 AppStream 2.0 管理主控台建立 AppStream 2.0 堆疊。如本主題稍後所述,您需要堆疊名稱來建立 IAM 政策以及使用 AppStream 2.0 設定 IdP 整合。

    您可以使用 AppStream 2.0 管理主控台或 AppStream 2.0 API 建立 AppStream 2.0 堆疊。 AWS CLI如需詳細資訊,請參閱 建立 AppStream 2.0 叢集與堆疊

步驟 1:在 AWS IAM 中建立 SAML 身分識別提供者

首先,在 AWS IAM 中建立 SAML IdP。此 IdP 使用組織中的 IdP 軟體所產生的中繼資料文件,定義組織的 IdP 至AWS 信任關係。如需詳細資訊,請參閱《IAM 使用者指南》中的建立和管理 SAML 身分提供者 (Amazon Web Services 管理主控台)。如需有關在 AWS GovCloud (US) 區域中使用 SAML IdPs 的資訊,請參閱AWS GovCloud (US) 使用者指南中的 AWS Identity and Access Management

步驟 2:建立 SAML 2.0 聯合 IAM 角色

接下來,建立 SAML 2.0 聯合 IAM 角色。此步驟會建立 IAM 與組織 IdP 之間的信任關係,以便將您的 IdP 識別為聯合信任的實體。

為 SAML IdP 建立 IAM 角色
  1. 前往網址 https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 在導覽窗格中,選擇 Roles (角色)、Create role (建立新角色)。

  3. 針對 Role type (角色類型),選擇 SAML 2.0 federation (SAML 2.0 聯合)

  4. 針對 SAML Provider (SAML 提供者),選取您建立的 SAML IdP。

    重要

    請勿選擇下列兩種 SAML 2.0 存取方法:僅允許以程式設計的方式存取允許以程式設計方式存取和 Amazon Web Services 管理主控台存取

  5. 屬性中,選擇 SAML:aud

  6. 針對數值,輸入 https://signin.aws.amazon.com/saml。此值會將角色存取限制為 SAML 使用者串流請求,其中包括 SAML 主旨類型聲明與持久值。如果 SAML:sub_type 為持久性,您的 IdP 就會針對來自特定使用者之所有 SAML 請求中的 NameID 元素,傳送相同的唯一值。如需有關 SAML: sub_type 宣告的詳細資訊,請參閱 < 使用 SAML 型聯合進行 API 存取中的唯一識別使用者 > 一節。 AWS

  7. 檢閱您的 SAML 2.0 信任資訊,確認信任實體和條件無誤,然後選擇 Next: Permissions (下一步:許可)

  8. Attach permissions policies (連接許可政策) 頁面上,選擇 Next: Tags (下一步:標籤)

  9. (選用) 為您要新增的每個標籤輸入索引鍵和值。如需詳細資訊,請參閱標記 IAM 使用者和角色

  10. 完成後,請選擇 Next: Review (下一步:檢閱)。您稍後將為此角色建立並嵌入內嵌政策。

  11. 針對角色名稱,輸入可識別此角色用途的名稱。因為有多個實體可能會參考此角色,所以建立角色後,您就無法編輯其名稱。

  12. (選用) 在 Role description (角色說明) 中,輸入新角色的說明。

  13. 檢閱角色詳細資訊,並選擇 Create role (建立角色)

  14. (選擇性) 如果您打算使用第三方 SAML 2.0 身分識別提供者或憑證型驗證來使用以屬性為基礎的應用程式權利,則必須將 sts: TagSession 權限新增至新 IAM 角色的信任政策。如需詳細資訊,請參閱 使用第三方 SAML 2.0 身分提供者的屬性型應用程式權利在 AWS STS中傳入工作階段標籤

    在新 IAM 角色的詳細資訊中,選擇信任關係索引標籤,然後選擇編輯信任關係。「編輯信任關係」政策編輯器隨即啟動。新增 sts: TagSession 權限,如下所示:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::ACCOUNT-ID-WITHOUT-HYPHENS:saml-provider/IDENTITY-PROVIDER" }, "Action": [ "sts:AssumeRoleWithSAML", "sts:TagSession" ], "Condition": { "StringEquals": { "SAML:sub_type": "persistent" } } } ] }

    以您在步驟 1 中建立的 SAML IdP 名稱取代 IDENTITY-PROVIDER。然後選擇更新信任政策

步驟 3:為 IAM 角色嵌入內嵌政策

接下來,為您建立的角色嵌入內嵌 IAM 政策。嵌入內嵌政策時,該政策中的許可不得意外附加至錯誤的主體實體。內嵌原則可讓聯合身分使用者存取您建立的 AppStream 2.0 堆疊。

  1. 在您所建立 IAM 角色的詳細資料中,選擇許可索引標籤,然後選擇新增內嵌政策。建立政策精靈隨即啟動。

  2. 建立政策中,選擇 JSON 索引標籤。

  3. 將下列 JSON 政策複製並貼入 JSON 視窗。然後,輸入您的 AWS 區域 代碼,帳戶 ID 和堆棧名稱來修改資源。在下列原則中,"Action": "appstream:Stream"是為 AppStream 2.0 使用者提供連線至您建立之堆疊上串流工作階段的權限的動作。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "appstream:Stream", "Resource": "arn:aws:appstream:REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/STACK-NAME", "Condition": { "StringEquals": { "appstream:userId": "${saml:sub}" } } } ] }

    將區域代碼替換為 AppStream 2.0 堆棧所在的 AWS 區域。將 STACK-NAME 取代為堆疊的名稱。STACK-NAME 區分大小寫,且必須與 AppStream 2.0 管理主控台「堆疊」儀表板中顯示的堆名稱完全相符的大小寫和拼字。

    對於 AWS GovCloud (US) 區域中的資源,請使用 ARN 的下列格式:

    arn:aws-us-gov:appstream:REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/STACK-NAME

  4. (選用) 如果您打算使用採用第三方 SAML 2.0 身分提供者搭配 SAML 2.0 多堆疊應用程式目錄的屬性型應用程式權利,則 IAM 角色內嵌政策中的資源必須是 "Resource": "arn:aws:appstream:REGION-CODE:ACCOUNT-ID-WITHOUT-HYPHENS:stack/*",應用程式權利才能控制堆疊的串流存取。若要對堆疊資源強制執行額外的保護,您可以在政策中新增明確拒絕。如需詳細資訊,請參閱 使用第三方 SAML 2.0 身分提供者的屬性型應用程式權利政策評估邏輯

  5. 完成時,請選擇 Review policy (檢閱政策)Policy Validator (政策檢查工具) 會回報任何語法錯誤。

步驟 4:設定以 SAML 為基礎的 IdP

接下來,根據您以 SAML 為基礎的 IdP,您可能需要手動將 IdP 更新 AWS 為信任服務提供者,方法是將此saml-metadata.xml檔案上傳至 https://signin.aws.amazon.com/static/saml-metadata.xml 至您的 IdP。此步驟會更新您的 IdP 中繼資料。對於某些人來說 IdPs,更新可能已經配置。如果是這種情況,請繼續下一個步驟。

如果您的 IdP 尚未設定這項更新,請檢閱 IdP 提供的文件以取得中繼資料更新方式的資訊。有些供應商會提供輸入 URL 的選項,由 IdP 為您取得並安裝檔案。另一些提供者則要求您從該 URL 處下載檔案,然後將其做為本機檔案提供。

步驟 5:建立 SAML 身分驗證回應聲明

接下來,您可能需要在 IdP 的驗證回應中設定 AWS 為 SAML 屬性傳送的資訊。視您的 IdP 而定,此資訊可能已預先設定。如果是這種情況,請跳過此步驟並繼續執行步驟 6,

如果您的 IdP 尚未設定這項資訊,請提供下列項目:

  • SAML 主旨 NameID:進行登入之使用者的唯一識別碼。

    注意

    對於已加入網域之叢集的堆疊,使用者的 NameID 值必須以 "" 格式提供,使用 SAM AccountName 或使用 domain\username ""。username@domain.com userPrincipalName如果您使用的是 SAM AccountName 格式,您可以使domain用 NetBIOS 名稱或完整網域名稱 (FQDN) 來指定。使用中目錄單向信任案例需要 SAM AccountName 格式。如需詳細資訊,請參閱 使用活動目錄 AppStream 2.0

  • SAML 主旨類型 (值設定為 persistent):將值設定為 persistent,可確保您的 IdP 會針對來自特定使用者之所有 SAML 請求中的 NameID 元素,傳送相同的唯一值。確保 IAM 政策包含一個條件,僅允許 SAML sub_type 設為 persistent 的 SAML 請求,如 步驟 2:建立 SAML 2.0 聯合 IAM 角色 中所述。

  • Name 屬性設為 https://aws.amazon.com/SAML/Attributes/Role 的 Attribute 元素:此元素包含一或多個 AttributeValue 元素,其列出您 IdP 對應的使用者 IAM 角色和 SAML IdP。角色和 IdP 會指定為以逗號分隔的 ARN 對。

  • AttributeName屬性設定為 https://aws.amazon.com/SAML/Attributes/ 的元素 RoleSessionName — 此元素包含一個AttributeValue元素,可為針對 SSO 發出的 AWS 暫時認證提供識別碼。AttributeValue 元素中的值長度必須介於 2 到 64 個字元之間,只能包含英數字元、底線和下列字元:+ (加號)、= (等號)、, (逗號)、. (句號)、@ (at 符號) 和 - (連字號)。其中不可含有空格。該值通常是使用者 ID (bobsmith) 或電子郵件地址 (bobsmith@example.com)。該值不應包含空格,如使用者的顯示名稱 (Bob Smith)。

  • AttributeName屬性設定為 https://aws.amazon.com/SAML/Attributes/ 的元素PrincipalTag:SessionContext(選用) — 此元素包含一個元AttributeValue素,提供可用來將工作階段內容參數傳遞至串流應用程式的參數。如需詳細資訊,請參閱 工作階段內容

  • AttributeName屬性設定為 https://aws.amazon.com/SAML/Attributes/ 的元素PrincipalTag:ObjectSid(選用) — 此元素包含一個AttributeValue元素,可為正在登入的使用者提供「使用中目錄」安全性識別碼 (SID)。此參數與憑證型驗證搭配使用,能夠強式對應至 Active Directory 使用者。

  • AttributeName屬性設定為 https://aws.amazon.com/SAML/Attributes/:Domain 的元素 PrincipalTag (選用) — 此元素包含一個元素,AttributeValue可為正在登入的使用者提供作用中目錄 DNS 完整網域名稱 (FQDN)。當使用者的 Active Directory userPrincipalName 包含替代尾碼時,此參數會與憑證型驗證搭配使用。此值必須以 domain.com 格式提供,包括任何子網域。

  • AttributeSessionDuration屬性設定為 https://aws.amazon.com/SAML/Attributes/ 的元素 SessionDuration (選用) — 此元素包含一個AttributeValue元素,指定使用者的聯合串流工作階段在需要重新驗證之前可保持作用中的時間上限。預設值為 60 分鐘 (即 3,600 秒)。如需詳細資訊,請參閱設定驗證回應的 SAML 宣告中的 SessionDuration 屬性設定為 https://aws.amazon.com/SAML/Attributes/ 的選用屬性元素一SessionDuration節。

    注意

    雖然 SessionDuration 是選用屬性,但我們建議您將它包含在 SAML 回應中。如果您未指定此屬性,工作階段持續時間會設定為預設值 60 分鐘。

    如果您的使用者透過使用 AppStream 2.0 原生用戶端或在新體驗上使用 Web 瀏覽器在 AppStream 2.0 中存取其串流應用程式,他們的工作階段會在工作階段持續時間過期後中斷連線。如果您的使用者透過舊/傳統體驗中的 Web 瀏覽器在 AppStream 2.0 中存取其串流應用程式,則在使用者的工作階段持續時間過期並重新整理其瀏覽器頁面之後,他們的工作階段就會中斷連線。

如需有關如何設定這些元素的詳細資訊,請參閱《IAM 使用者指南》中的針對身分驗證回應設定 SAML 聲明。如需 IdP 的特定組態要求資訊,請參閱您的 IdP 文件。

步驟 6:設定聯合的轉送狀態

最後,使用 IdP 將聯合的轉送狀態設定為指向 AppStream 2.0 堆疊轉送狀態 URL。成功驗證之後 AWS,使用者會被導向至 AppStream 2.0 堆疊入口網站,該入口網站定義為 SAML 驗證回應中的轉送狀態。

轉送狀態 URL 的格式如下:

https://relay-state-region-endpoint?stack=stackname&accountId=aws-account-id-without-hyphens

從您的 Amazon Web Services 帳戶 ID、堆疊名稱以及與您堆疊所在區域相關聯的轉送狀態端點來建構轉送狀態 URL。

或者,您也可以指定您想要自動啟動的應用程式名稱。若要尋找應用程式名稱,請在 AppStream 2.0 主控台中選取影像,選擇「應用程式」索引標籤,然後記下「應用程式名稱」欄中顯示的名稱。或者,如果您尚未建立映像,請連接到您安裝應用程式的映像建置器,並開啟映像助理。應用程式的名稱會顯示在 Add Apps (新增應用程式) 索引標籤中。

如果您的機群已啟用桌面串流檢視,您也可以選擇直接啟動進入作業系統桌面。若要這樣做,請在轉送狀態 URL 的結尾處於 &app= 後方指定 Desktop

透過身分識別提供者 (IdP) 起始的流程,在使用者登入 IdP 並從 IdP 使用者入口網站選取 AppStream 2.0 應用程式後,他們會重新導向至具有下列選項的瀏覽器中的 AppStream 2.0 登入頁面:

  • 繼續瀏覽器

  • 開啟 AppStream 2.0 用戶端

在頁面上,使用者可以選擇在瀏覽器或 AppStream 2.0 用戶端應用程式中啟動工作階段。或者,您也可以指定 SAML 2.0 聯合應使用哪個用戶端。若要這麼做,請web在之後指native定轉送狀態 URL 的其中一個或結尾&client=。當參數出現在轉送狀態 URL 中時,對應的工作階段將自動在指定的用戶端中啟動,而無需使用者做出選擇。

注意

只有在您使用新的轉送狀態區域端點 (如下表 1) 建構轉送狀態 URL,並使用 AppStream 2.0 用戶端版本 1.1.1300 及更新版本時,才能使用此功能。

透過使用第三方 SAML 2.0 身分提供者的屬性型應用程式權利,就可以從單一轉送狀態 URL 存取多個堆疊。從轉送狀態 URL 移除堆疊和應用程式 (如有的話) 參數,如下所示:

https://relay-state-region-endpoint?accountId=aws-account-id-without-hyphens

當使用者聯合到 AppStream 2.0 應用程式類別目錄時,他們會看到所有堆疊,其中應用程式權利已將一或多個應用程式與使用者相符,以及與堆疊所在區域相關聯的中繼狀態端點。當使用者選取目錄時,應用程式權利只會顯示使用者有權使用的應用程式。

注意

用戶無法同時從多個堆棧進行流式傳輸。

如需詳細資訊,請參閱 使用第三方 SAML 2.0 身分提供者的屬性型應用程式權利

下表 1 列出 AppStream 2.0 可用區域的轉送狀態端點。表 1 中的轉送狀態端點與 Windows 用戶端應用程式 1.1.1300 版AppStream 2.0 Web 瀏覽器存取 (第 2 版)及更新版本相容。如果您使用的是舊版 Windows 用戶端,則應使用表 2 中列出的舊轉送狀態端點來設定 SAML 2.0 聯盟。如果您希望使用者使用符合 FIPS 規定的連線串流,則必須使用符合 FIPS 規定的端點。如需 FIPS 端點的詳細資訊,請參閱 使用 FIPS 端點保護傳輸中資料

表 1: AppStream 2.0 轉送狀態區域端點
區域 轉送狀態端點
美國東部 (維吉尼亞北部)

https://appstream2.euc-sso.us-east-1.aws.amazon.com/saml

(FIPS) https://appstream2.euc-sso-fips.us-east-1.aws.amazon.com/saml

美國東部 (俄亥俄) https://appstream2.euc-sso.us-east-2.aws.amazon.com/saml
美國西部 (奧勒岡)

https://appstream2.euc-sso.us-west-2.aws.amazon.com/saml

(FIPS) https://appstream2.euc-sso-fips.us-west-2.aws.amazon.com/saml

亞太區域 (孟買) https://appstream2.euc-sso.ap-south-1.aws.amazon.com/saml
亞太區域 (首爾) https://appstream2.euc-sso.ap-northeast-2.aws.amazon.com/saml
亞太區域 (新加坡) https://appstream2.euc-sso.ap-southeast-1.aws.amazon.com/saml
亞太區域 (雪梨) https://appstream2.euc-sso.ap-southeast-2.aws.amazon.com/saml
亞太區域 (東京) https://appstream2.euc-sso.ap-northeast-1.aws.amazon.com/saml

加拿大 (中部)

https://appstream2.euc-sso.ca-central-1.aws.amazon.com/saml
歐洲 (法蘭克福) https://appstream2.euc-sso.eu-central-1.aws.amazon.com/saml
歐洲 (愛爾蘭) https://appstream2.euc-sso.eu-west-1.aws.amazon.com/saml
歐洲 (倫敦) https://appstream2.euc-sso.eu-west-2.aws.amazon.com/saml
AWS GovCloud (美國東部)

https://appstream2.euc-sso.us-gov-east-1.amazonaws-us-gov.com/saml

(FIPS) https://appstream2.euc-sso-fips.us-gov-east-1.amazonaws-us-gov.com/saml

注意

如需在 AWS GovCloud (US) 區域中使用 AppStream 2.0 的詳細資訊,請參閱使用AWS GovCloud (US) 者指南中的 Amazon AppStream 2.0

AWS GovCloud (美國西部)

https://appstream2.euc-sso.us-gov-west-1.amazonaws-us-gov.com/saml

(FIPS) https://appstream2.euc-sso-fips.us-gov-west-1.amazonaws-us-gov.com/saml

注意

如需在 AWS GovCloud (US) 區域中使用 AppStream 2.0 的詳細資訊,請參閱使用AWS GovCloud (US) 者指南中的 Amazon AppStream 2.0

南美洲 (聖保羅) https://appstream2.euc-sso.sa-east-1.aws.amazon.com/saml

下表 2 列出仍然可用的舊轉送狀態端點。但是,建議您使用表 1 中列出的新轉送狀態端點來設定 SAML 2.0 聯合。特別是,使用新的轉送狀態端點時,您可以讓使用者從 IDP 起始的串流工作階段啟動 AppStream 2.0 用戶端應用程式 (版本 1.1.1300 及更新版本)。表 1 中的新轉送狀態端點也允許使用者在同一個 Web 瀏覽器的不同索引標籤中登入其他 AWS 應用程式,而不會影響正在進行的 AppStream 2.0 串流工作階段。表 2 中的舊轉送狀態端點不支援此功能。如需更多資訊,請參閱我的 AppStream 2.0 客戶端用戶每隔 60 分鐘就會與 AppStream 2.0 會話斷開連接。

表 2:舊的 AppStream 2.0 轉送狀態區域端點
區域 轉送狀態端點
美國東部 (維吉尼亞北部)

https://appstream2.us-east-1.aws.amazon.com/saml

(FIPS) https://appstream2-fips.us-east-1.aws.amazon.com/saml

美國東部 (俄亥俄) https://appstream2.us-east-2.aws.amazon.com/saml
美國西部 (奧勒岡)

https://appstream2.us-west-2.aws.amazon.com/saml

(FIPS) https://appstream2-fips.us-west-2.aws.amazon.com/saml

亞太區域 (孟買) https://appstream2.ap-south-1.aws.amazon.com/saml
亞太區域 (首爾) https://appstream2.ap-northeast-2.aws.amazon.com/saml
亞太區域 (新加坡) https://appstream2.ap-southeast-1.aws.amazon.com/saml
亞太區域 (雪梨) https://appstream2.ap-southeast-2.aws.amazon.com/saml
亞太區域 (東京) https://appstream2.ap-northeast-1.aws.amazon.com/saml

加拿大 (中部)

https://appstream2.ca-central-1.aws.amazon.com/saml
歐洲 (法蘭克福) https://appstream2.eu-central-1.aws.amazon.com/saml
歐洲 (愛爾蘭) https://appstream2.eu-west-1.aws.amazon.com/saml
歐洲 (倫敦) https://appstream2.eu-west-2.aws.amazon.com/saml
AWS GovCloud (美國東部)

https://appstream2.us-gov-east-1.amazonaws-us-gov.com/saml

(FIPS) https://appstream2-fips.us-gov-east-1.amazonaws-us-gov.com/saml

注意

如需在 AWS GovCloud (US) 區域中使用 AppStream 2.0 的詳細資訊,請參閱使用AWS GovCloud (US) 者指南中的 Amazon AppStream 2.0

AWS GovCloud (美國西部)

https://appstream2.us-gov-west-1.amazonaws-us-gov.com/saml

(FIPS) https://appstream2-fips.us-gov-west-1.amazonaws-us-gov.com/saml

注意

如需在 AWS GovCloud (US) 區域中使用 AppStream 2.0 的詳細資訊,請參閱使用AWS GovCloud (US) 者指南中的 Amazon AppStream 2.0

南美洲 (聖保羅) https://appstream2.sa-east-1.aws.amazon.com/saml

下表 3 列出可用來建構轉送狀態 URL 的所有可用參數。

表 3:轉送狀態 URL 參數
參數 必要 格式 支援
accountId 必要 12 個字元識 AWS 帳戶 別碼 表 1 和 2 中的新端點和舊端點
堆疊 選用 Stack name (堆疊名稱) 表 1 和 2 中的新端點和舊端點
應用程式 選用 應用程式名稱或「桌面」 表 1 和 2 中的新端點和舊端點
用戶端 選用 「原生」或「網絡」 僅限表 1 中的新端點