教學課程:Amazon QuickSight 和 IAM 聯合身分 - Amazon QuickSight

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

教學課程:Amazon QuickSight 和 IAM 聯合身分

   適用對象:企業版和標準版 
   目標對象:Amazon QuickSight 管理員和 Amazon QuickSight 開發人員 
注意

IAM 聯合身分不支援將身分提供者群組與 Amazon QuickSight 同步。

在以下教學課程中,您可以找到將 IdP Okta 設定為 Amazon QuickSight 的聯合服務的逐步解說。雖然本教學課程顯示 AWS Identity and Access Management (IAM) 和 Okta 的整合,但您也可以使用您選擇的 SAML 2.0 IdPs複寫此解決方案。

在下列程序中,您可以使用其「AWS 帳戶聯合」捷徑在 Okta IdP 中建立應用程式。Okta 對此整合應用程式的描述如下所示:

「透過將 Okta 與 Amazon Web Services (AWS) Identity and Access Management (IAM) 帳戶聯合,最終使用者可以使用其 Okta 登入資料,取得所有指派 AWS 角色的單一登入存取權。管理員會設定 AWS 帳戶聯合並設定 AWS 角色來信任 Okta。當使用者登入時 AWS,他們會獲得 Okta 單一登入體驗,以查看其指派 AWS 的角色。然後,他們可以選擇所需的角色,該角色會在其已經身分驗證的工作階段期間定義他們的許可。擁有大量 AWS 帳戶的客戶,請查看 AWS 單一登入應用程式做為替代方案。」 (https://www.okta.com/aws/)

使用 Okta 的「AWS 帳戶聯合」應用程式捷徑建立 Okta 應用程式
  1. 登入您的 Okta 儀表板。如果您沒有,請使用此 QuickSight 品牌 URL 建立免費的 Okta 開發人員版帳戶。啟用電子郵件後,請登入 Okta。

  2. 在 Okta 網站上,選擇左上角的 <> 開發人員主控台,然後選擇傳統 UI

  3. 選擇新增應用程式,然後選擇新增應用程式

  4. 搜尋中輸入 aws,然後從搜尋結果中選擇 AWS 帳戶聯合

  5. 選擇新增,以建立此應用程式的執行個體。

  6. 針對應用程式名稱,輸入 AWS Account Federation - QuickSight

  7. 選擇 Next (下一步)

  8. 針對 SAML 2.0預設轉送狀態,輸入 https://quicksight.aws.amazon.com

  9. 開啟身分提供者中繼資料的內容 (按一下右鍵) 選單,然後選擇以儲存檔案。將檔案命名為 metadata.xml。您在下一個程序中需要用到該檔案。

    檔案的內容類似如下。

    <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="http://www.okta.com/exkffz2hATwiVft645d5"> <md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"> <md:KeyDescriptor use="signing"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate> MIIDpjCCAo6gAwIBAgIGAXVjA82hMA0GCSqGSIb3DQEBCwUAMIGTMQswCQYDVQQGEwJVUzETMBEG . . (certificate content omitted) . QE/6cRdPQ6v/eaFpUL6Asd6q3sBeq+giRG4= </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </md:KeyDescriptor> <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat> <md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified</md:NameIDFormat> <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://dev-1054988.okta.com/app/amazon_aws/exkffz2hATwiVft645d5/sso/saml"/> <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://dev-1054988.okta.com/app/amazon_aws/exkffz2hATwiVft645d5/sso/saml"/> </md:IDPSSODescriptor> </md:EntityDescriptor>
  10. 儲存 XML 檔案後,向下捲動到 Okta 頁面底部,然後選擇完成

  11. 如果可能,請保持此瀏覽器視窗開啟。在本教學課程中稍後會需要用到它。

接下來,在 AWS 帳戶中建立身分提供者。

在 AWS Identity and Access Management (IAM) 中建立 SAML 提供者
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 在導覽窗格中,選擇身分提供者建立供應商

  3. 輸入以下設定:

    • 提供者類型 – 從清單中選擇 SAML

    • 提供者名稱 – 輸入 Okta

    • 中繼資料文件 – 上傳來自先前程序的 XML 檔案 manifest.xml

  4. 選擇下一步建立

  5. 找到您建立的 IdP,然後選擇它以檢視設定。記下提供者 ARN。您需要用它來完成本教學課程。

  6. 確認身分提供者是使用您的設定建立的。在 IAM 中,選擇身分提供者Okta (您新增的 IdP)、下載中繼資料。該檔案應該是您最近上傳的檔案。

接著,您可以建立 IAM 角色,讓 SAML 2 AWS 帳戶.0 聯合成為您 中信任的實體。在此步驟中,您需要選擇要在 Amazon QuickSight 中佈建使用者的方式。您可以執行下列任一作業:

  • 授予 IAM 角色許可,以便初次訪客自動成為 QuickSight 使用者。

  • 使用 QuickSight API 提前佈建 QuickSight 使用者。透過選擇此選項,您可以佈建使用者並同時將其新增至群組。如需詳細資訊,請參閱在 Amazon QuickSight 中建立和管理群組

將 SAML 2.0 聯合的 IAM 角色建立為信任的實體
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 在導覽窗格中,選擇角色建立角色

  3. 選取信任的實體類型中,選擇標記為 SAML 2.0 聯合的卡片。

  4. 針對 SAML 提供者,選取您在先前程序中建立的 IdP,例如 Okta

  5. 啟用允許程式設計 AWS 和管理主控台存取選項。

  6. 選擇下一步:許可

  7. 將以下政策貼到編輯器。

    在政策編輯器中,使用提供商的 Amazon Resource Name (ARN) 更新 JSON。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRoleWithSAML", "Resource": "arn:aws:iam::111111111111:saml-provider/Okta", "Condition": { "StringEquals": { "saml:aud": "https://signin.aws.amazon.com/saml" } } } ] }
  8. 選擇檢閱政策

  9. Name (名稱) 中輸入 QuicksightOktaFederatedPolicy,然後選擇 Create policy (建立政策)

  10. 再次選擇建立政策JSON

  11. 將以下政策貼到編輯器。

    在政策編輯器中,使用您的 AWS 帳戶 ID 更新 JSON。該帳戶 ID 應與您在提供者 ARN 的先前政策中使用的相同。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "quicksight:CreateReader" ], "Effect": "Allow", "Resource": [ "arn:aws:quicksight::111111111111:user/${aws:userid}" ] } ] }

    您可以省略 ARN 中的 AWS 區域 名稱,如下所示。

    arn:aws:quicksight::111111111111:user/$${aws:userid}
  12. 選擇檢閱政策

  13. Name (名稱) 中輸入 QuicksightCreateReader,然後選擇 Create policy (建立政策)

  14. 選擇右側的重新整理圖示,以重新整理政策清單。

  15. 針對搜尋,輸入 QuicksightOktaFederatedPolicy。選擇要啟用的政策 ( Icon representing a cloud with an arrow pointing downward, indicating download or cloud storage. )。

    如果您不想使用自動佈建,則可略過下列步驟。

    若要新增 QuickSight 使用者,請使用 register-user。若要新增 QuickSight 群組,請使用 create-group。若要將使用者新增至 QuickSight 群組,請使用 create-group-membership

  16. (選用) 針對搜尋,請輸入 QuicksightCreateReader。選擇要啟用的政策 ( Icon representing a cloud with an arrow pointing downward, indicating download or cloud storage. )。

    如果您想要自動佈建 QuickSight 使用者,而不是使用 QuickSight API,則請執行此步驟。

    QuicksightCreateReader 政策會允許使用 quicksight:CreateReader 動作來啟動自動佈建。這樣做可將儀表板訂閱用戶 (讀者層級) 存取權授予第一次使用者。QuickSight 管理員稍後可以從 QuickSight 設定檔選單、管理 QuickSight管理使用者進行升級。

  17. 若要繼續連接一個或多個 IAM 政策,請選擇下一步:標籤

  18. 選擇下一步:檢閱

  19. 針對角色名稱,輸入 QuicksightOktaFederatedRole,然後選擇建立角色

  20. 請執行下列步驟,確認您已成功完成此操作:

    1. 返回 IAM 主控台的主頁面:https://console.aws.amazon.com/iam/。您可以使用瀏覽器的返回按鈕。

    2. 選擇角色

    3. 針對搜尋,請輸入 Okta。從搜尋結果中選擇 QuicksightOktaFederatedRole

    4. 在政策的摘要頁面上,檢查許可標籤。確認該角色具有您連接的一個或多個政策。它應該有 QuicksightOktaFederatedPolicy。如果您選擇新增建立使用者的功能,其亦也應具有 QuicksightCreateReader

    5. 使用 Play button icon with a triangular shape pointing to the right. 圖示,開啟每個政策。確認文字符合此程序中顯示的內容。再次確認您已新增自己的 AWS 帳戶 號碼,以取代範例帳戶號碼 111111111111。

    6. 信任關係標籤上,確認信任的實體欄位包含身分提供者的 ARN。您可以開啟身分提供者Okta,在 IAM 主控台中再次檢查 ARN。

為 Okta 建立存取金鑰
  1. 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/ 開啟 IAM 主控台。

  2. 新增允許 Okta 向使用者顯示 IAM 角色清單的政策。若要執行此操作,請選擇政策建立政策

  3. 選擇 JSON,然後輸入下列政策。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:ListAccountAliases" ], "Resource": "*" } ] }
  4. 選擇檢閱政策

  5. 對於名稱,輸入 OktaListRolesPolicy。然後選擇 Create policy (建立政策)。

  6. 新增使用者,以便您可向 Okta 提供存取金鑰。

    在導覽窗格中,選擇使用者新增使用者

  7. 請使用下列設定:

    • User name (使用者名稱) 中輸入 OktaSSOUser

    • 針對存取類型,啟用以程式設計方式存取

  8. 選擇 Next: Permissions (下一步:許可)

  9. 選擇直接連接現有政策

  10. 針對搜尋,輸入 OktaListRolesPolicy,然後從搜尋結果中選擇 OktaListRolesPolicy

  11. 選擇 Next: Tags (下一步:標籤),然後選擇 Next: Review (下一步:檢閱)。

  12. 選擇 Create user (建立使用者)。現在,您可以取得存取金鑰。

  13. 選擇 Download .csv,下載金鑰檔案。該檔案包含的存取金鑰 ID 和私密存取金鑰與此畫面上顯示的相同。不過,因為 AWS 不會再次顯示此資訊,請務必下載 檔案。

  14. 請執行下列動作,確認您已正確完成此步驟:

    1. 開啟 IAM 主控台,然後選擇使用者。搜尋 Oktassouser,並透過從搜尋結果中選擇使用者名稱來將其開啟。

    2. 許可標籤上,確認已連接 OktaListRolesPolicy

    3. 使用 Play button icon with a triangular shape pointing to the right. 圖示,開啟政策。確認文字符合此程序中顯示的內容。

    4. 安全憑證標籤上,您可以檢查存取金鑰,儘管您已下載。當您需要新的存取金鑰時,您可以返回此標籤建立一個。

在下列程序中,您會返回 Okta 以提供存取金鑰。存取金鑰會與您的新安全設定搭配使用,以允許 AWS 和 Okta IdP 一起運作。

使用設定完成 AWS 設定 Okta 應用程式
  1. 返回您的 Okta 儀表板。如果要求這樣做,請登入。如果開發人員主控台不再開啟,請選擇管理員以將其重新開啟。

  2. 如果您必須重新開啟 Okta,則可以按照下列步驟返回本章節:

    1. 登入 Okta。選擇 Applications (應用程式)

    2. 選擇AWS 帳戶聯合 - QuickSight,您在本教學課程開始時建立的應用程式。

    3. 一般行動之間,選擇登入標籤。

  3. 捲動至進階登入設定

  4. 針對身分提供者 ARN (僅 SAML IAM 聯合需要),請輸入來自先前程序的提供者 ARN,例如:

    arn:aws:iam::111122223333:saml-provider/Okta
  5. 選擇完成儲存。按鈕的名稱會因您是否建立或編輯應用程式而異。

  6. 選擇佈建標籤,然後在標籤的下方選擇設定 API 整合

  7. 開啟啟用 API 整合,以顯示設定。

  8. 針對存取金鑰機密金鑰,請提供您先前下載到名為 OktaSSOUser_credentials.csv 的檔案中的存取金鑰和機密金鑰。

  9. 選擇測試 API 憑證。查看啟用 API 整合設定上方的訊息,確認 AWS 帳戶聯合已成功驗證

  10. 選擇 Save (儲存)。

  11. 確定在左側反白顯示到應用程序,然後選擇右側的編輯

  12. 針對建立使用者,開啟啟用選項。

  13. 選擇 Save (儲存)。

  14. 指派標籤的佈建匯入附近,選擇指派

  15. 執行以下一或多項動作,以啟用聯合存取:

    • 若要與個別使用者合作,請選擇指派給人員

    • 若要與 IAM 群組合作,請選擇指派給群組。您可以選擇特定的 IAM 群組或每個人 (組織中的所有使用者)

  16. 針對每個 IAM 使用者或群組,執行下列動作:

    1. 選擇指派角色

    2. 從 IAM 角色清單中,選取 QuicksightOktaFederatedRole

    3. 針對 SAML 使用者角色,啟用 QuicksightOktaFederatedRole

  17. 選擇儲存並返回,然後選擇完成

  18. 選擇左側的人員群組篩選條件,然後檢查您輸入的使用者或群組,以確認您已正確完成此步驟。如果因為您建立的角色未出現在清單中而無法完成此程序,請返回先前程序,以確認設定。

使用 Okta 登入 QuickSight (IdP 至服務提供者登入)
  1. 如果您使用的是 Okta 管理員帳戶,請切換到使用者模式。

  2. 使用已授予聯合存取的使用者登入您的 Okta 應用程式儀表板。您應該會看到一個帶有標籤的新應用程式,例如 AWS 帳戶聯合 - QuickSight

  3. 選擇應用程式圖示,以啟動 AWS 帳戶聯合 - QuickSight

您現在可以使用 Okta 來管理身分,並透過 Amazon QuickSight 使用聯合存取。

下列步驟是本教學課程的選用部分。如果您遵循其步驟,即表示您授權 QuickSight 代表您的使用者將授權請求轉寄給 IdP。使用此方法,使用者可以登入 QuickSight,而不需要先使用 IdP 頁面登入。

(選用) 若要設定 QuickSight 以傳送身分驗證請求至 Okta
  1. 開啟 QuickSight,然後從設定檔選單中選擇管理 QuickSight

  2. 從導覽窗格中,選擇單一登入 (IAM 聯合)

  3. 針對組態IdP 網址,請輸入您的 IdP 提供用來對使用者進行身分驗證的 URL,例如 https://dev-1-----0.okta.com/home/amazon_aws/0oabababababaGQei5d5/282。您可以在 Okta 應用程式頁面的一般標籤上的內嵌連結中找到此選項。

  4. 針對 IdP URL,請輸入 RelayState

  5. 執行以下任意一項:

    • 若要先測試使用您的身分提供者登入,請使用從您的 IdP 開始測試中提供的自訂 URL。您應該到達 QuickSight 的起始頁面,例如 https://quicksight.aws.amazon.com/sn/start。

    • 若要先測試使用 QuickSight 登入,請使用測試端對端體驗中提供的自訂 URL。enable-sso 參數會附加至 URL。如果是 enable-sso=1,IAM 聯合會嘗試進行身分驗證。如果是 enable-sso=0,QuickSight 沒有傳送身分驗證請求,而您可以如以前一樣登入 QuickSight。

  6. 狀態中,選擇開啟

  7. 選擇儲存保留設定。

您可以建立 QuickSight 儀表板的深層連結,以允許使用者使用 IAM 聯合直接連線至特定儀表板。若要這樣做,您可以將轉送狀態標記和儀表板 URL 附加至 Okta 單一登入 URL,如下所述。

為單一登入建立 QuickSight 儀表板的深層連結
  1. 在您於教學課程開始時下載的 metadata.xml 檔案中,找出 Okta 應用程式的單一登入 (IAM 聯合) URL。您可以在名為 md:SingleSignOnService 的元素中找到檔案底部附近的 URL。屬性名為 Location,而值以 /sso/saml 結尾,如下列範例所示。

    <md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://dev-0000001.okta.com/app/amazon_aws/abcdef2hATwiVft645d5/sso/saml"/>
  2. 取得 IAM 聯合 URL 的值,然後在您的 QuickSight 儀表板的 URL 後附加 ?RelayState=RelayState 參數會轉送使用者重新導向至身分驗證 URL 時所處的狀態 (URL)。

  3. 如果新增了轉送狀態的新 IAM 聯合,請附加 QuickSight 儀表板的 URL。產生的 URL 應該類似下列內容。

    https://dev-1-----0.okta.com/app/amazon_aws/abcdef2hATwiVft645d5/sso/saml?RelayState=https://us-west-2.quicksight.aws.amazon.com/sn/analyses/12a12a2a-121a-212a-121a-abcd12abc1ab
  4. 如果您建立的連結未開啟,請檢查您是否使用 metadata.xml 中的最新 IAM 聯合 URL。另外,請檢查您用於登錄的使用者名稱是否未在多個 IAM 聯合 Okta 應用程式中指派。