教程:Amazon QuickSight 和 IAM 联合身份验证 - Amazon QuickSight
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:Amazon QuickSight 和 IAM 联合身份验证

   适用于:企业版和标准版 
   目标受众:亚马逊 QuickSight 管理员和亚马逊 QuickSight 开发者 
注意

IAM 联合身份验证不支持将身份提供商群组与 Amazon QuickSight 同步。

在以下教程中,您可以找到将 IdP Okta 设置为亚马逊联合身份验证服务的演练。 QuickSight尽管本教程展示了 Amazon Identity and Access Management (IAM) 和 Okta 的集成,但您也可以使用您选择的 SAML 2.0 来复制此解决方案。 IdPs

在以下步骤中,您将使用 Okta IdP 的Amazon “账户联合” 快捷方式在 Okta IdP 中创建应用程序。Okta 对这个集成应用程序的描述如下:

“通过将 Okta 联合到亚马逊网络服务 (Amazon) 身份和访问管理 (IAM) 账户,最终用户可以使用他们的 Okta 凭证获得对所有分配 Amazon 角色的单点登录访问权限。在每个版本中 Amazon Web Services 账户,管理员都设置联盟并配置 Amazon 角色以信任 Okta。当用户登录时 Amazon,他们将获得 Okta 单点登录体验,以查看分配给 Amazon 他们的角色。然后,他们可以选择所需的角色,该角色定义了他们在进行身份验证会话期间的权限。拥有大量 Amazon 账户的客户,可以选择使用 Amazon 单点登录应用程序。” (https://www.okta.com/aws/)

使用 Okta 的 “Amazon 账户联合” 应用程序快捷方式创建 Okta 应用程序
  1. 登录到您的 Okta 控制面板。如果你没有 Okta 开发者版账户,请使用这个 QuickSight品牌的 URL 创建一个免费的 Okta 开发者版账户。激活电子邮件后,登录 Okta。

  2. 在 Okta 网站上,选择左上角的 <> 开发人员控制台,然后选择经典 UI

  3. 选择添加应用程序,然后选择添加应用程序

  4. 搜索中输入 aws,然后从搜索结果中选择 Amazon 账户联合身份验证

  5. 选择添加,创建此应用程序的实例。

  6. 对于应用程序标签,请输入 Amazon Account Federation - QuickSight

  7. 选择下一步

  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. 如果可能,请保持此浏览器窗口处于打开状态。您将在本教程的后面需要用到它。

接下来,在 Amazon Web Services 账户中创建身份提供者。

在 Amazon Identity and Access Management (IAM) 中创建 SAML 提供商
  1. 登录 Amazon Web Services Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在导航窗格中,依次选择身份提供者创建提供者

  3. 输入以下设置:

    • 提供者类型 – 从列表中选择 SAML

    • 提供者名称 – 输入 Okta

    • 元数据文档 – 上传上一个步骤中的 XML 文件 manifest.xml

  4. 依次选择下一步创建

  5. 找到您创建的 IdP 并选择它以查看设置。记下提供者 ARN。要完成本教程,您需要用到它。

  6. 确认身份提供者是使用您的设置创建的。在 IAM 中,选择身份提供者Okta(您添加的 IdP)、下载元数据。文件应该是您最新上传的文件。

接下来,您将创建一个 IAM 角色以允许 SAML 2.0 联合身份验证充当您的 Amazon Web Services 账户可信实体。在此步骤中,您需要选择如何在 Amazon 中配置用户 QuickSight。您可以执行以下操作之一:

  • 向 IAM 角色授予权限,以便首次访问的访客自动成为 QuickSight用户。

  • 使用 QuickSight API 提前配置 QuickSight 用户。选择此选项后,您可以同时预置用户并将它们添加到组中。有关更多信息,请参阅 在 Amazon 中创建和管理群组 QuickSight

为 SAML 2.0 联合身份验证创建 IAM 角色作为受信任实体
  1. 登录 Amazon Web Services Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 角色创建角色

  3. 对于选择受信任实体的类型,选择标有 SAML 2.0 联合身份验证的卡。

  4. 对于 SAML 提供者,选择在上一过程中创建的 IdP,例如 Okta

  5. 启用 “允许编程访问 Amazon 和管理控制台” 选项。

  6. 选择下一步: 权限

  7. 将下面的策略粘贴到编辑器中。

    在策略编辑器中,使用提供者的 Amazon 资源名称(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. 将下面的策略粘贴到编辑器中。

    在策略编辑器中,使用您的 Amazon Web Services 账户 ID 更新 JSON。它应与您在提供者 ARN 的先前策略中使用的账户 ID 相同。

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

    您可以省略 ARN 中的 Amazon Web Services 区域 名称,如下所示。

    arn:aws:quicksight::111111111111:user/$${aws:userid}
  12. 选择查看策略

  13. 对于 Name (名称),输入 QuicksightCreateReader,然后选择 Create policy (创建策略)

  14. 通过选择右侧的刷新图标来刷新策略列表。

  15. 搜索中,输入 QuicksightOktaFederatedPolicy。选择要将其启用的策略( )。

    如果您不想使用自动预置,可以跳过以下步骤。

    要添加 QuickSight 用户,请使用注册用户。要添加 QuickSight 群组,请使用创建群组。要将用户添加到 QuickSight 群组,请使用create-group-membership

  16. (可选)在搜索中,输入 QuicksightCreateReader。选择要将其启用的策略( )。

    如果您想自动配置 QuickSight 用户,而不是使用 QuickSight API,请执行此步骤。

    QuicksightCreateReader 策略通过允许使用 quicksight:CreateReader 操作来激活自动预置。这样做会向首次使用的用户授予控制面板订阅用户(读者级别)的访问权限。 QuickSight管理员稍后可以从 QuickSight 配置文件菜单 “管理”、“管理 QuickSight用户” 中对其进行升级。

  17. 要继续附加 IAM policy,请选择下一步:标签

  18. 选择 下一步: 审核

  19. 对于角色名称,输入 QuicksightOktaFederatedRole,然后选择创建角色

  20. 执行以下步骤,验证您是否成功完成了此操作:

    1. 通过以下链接返回到 IAM 控制台的主页面,网址为 https://console.aws.amazon.com/iam/。您可以使用浏览器的返回按钮。

    2. 选择角色

    3. 搜索中,输入 Okta。QuicksightOktaFederatedRole从搜索结果中选择。

    4. 在策略的摘要页面上,查看权限选项卡。验证该角色是否具有您附加的一个或多个策略。它应该具有 QuicksightOktaFederatedPolicy。如果您选择添加创建用户的功能,它还应具有 QuicksightCreateReader

    5. 使用 图标打开每个策略。验证文本是否与此过程中显示的内容相匹配。仔细检查您是否添加了自己的 Amazon Web Services 账户 号码来代替示例账号 111111111111。

    6. 信任关系选项卡上,验证受信任实体字段是否包含身份提供者的 ARN。您可以通过打开身份提供者Okta,在 IAM 控制台中仔细检查 ARN。

创建 Okta 的访问密钥
  1. 登录 Amazon Web Services Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 添加允许 Okta 向用户显示 IAM 角色列表的策略。为此,依次选择策略创建策略

  3. 选择 JSON,然后输入以下策略。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:ListAccountAliases" ], "Resource": "*" } ] }
  4. 选择 Review Policy (查看策略)

  5. 对于 Name (名称),请输入 OktaListRolesPolicy。然后选择创建策略

  6. 添加用户,这样您就可以向 Okta 提供访问密钥。

    在导航窗格中,依次选择用户添加用户

  7. 使用以下设置:

    • 对于用户名,输入 OktaSSOUser

    • 对于访问类型,启用编程访问

  8. 选择下一步:权限

  9. 选择直接附上现有策略

  10. 在 “搜索” 中OktaListRolesPolicy,输入并OktaListRolesPolicy从搜索结果中进行选择。

  11. 依次选择 Next: Tags(下一步:标签)和 Next: Review(下一步:查看)。

  12. 选择 创建用户。现在您可以获取访问密钥了。

  13. 选择下载 .csv,下载密钥文件。该文件包含与此屏幕上显示的相同访问密钥 ID 和秘密访问密钥。但是,由于 Amazon 不会再次显示此信息,因此请务必下载该文件。

  14. 通过执行以下操作来验证您是否正确完成了此步骤:

    1. 打开 IAM 控制台,选择用户。搜索 OktaSSOUser,然后从搜索结果中选择用户名将其打开。

    2. 在 “权限” 选项卡上,确认OktaListRolesPolicy已附加。

    3. 使用 图标打开策略。验证文本是否与此过程中显示的内容相匹配。

    4. 安全凭证选项卡上,您可以检查访问密钥,尽管您已经下载了该访问密钥。当您需要新的访问密钥时,可以返回此选项卡来创建访问密钥。

在以下步骤中,您将返回 Okta 以提供访问密钥。访问密钥可与您的新安全设置配合使用,允许 Amazon 与 Okta IdP 配合使用。

使用设置完成 Okta 应用程序的 Amazon 配置
  1. 返回您的 Okta 控制面板。如果要求这样做,请登录。如果开发人员控制台无法再打开,请选择管理员将其重新打开。

  2. 如果您必须重新打开 Okta,可以按照以下步骤返回本部分:

    1. 登录 Okta。选择应用程序

    2. 选择Amazon 账户联合 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 集成设置的上方,查看一条确认 Amazon 账户联合身份验证已成功验证的消息。

  10. 选择保存

  11. 确保左侧突出显示到应用程序,然后在右侧选择编辑

  12. 对于创建用户,开启启用选项。

  13. 选择保存

  14. 分配选项卡上的预置导入旁边,选择分配

  15. 执行以下一项或多项操作,启用联合访问:

    • 要与个人用户合作,请选择分配给人员

    • 要与 IAM 组合作,请选择分配给组。您可以选择特定的 IAM 组或所有人(组织中的所有用户)

  16. 对于每个 IAM 用户或组,执行以下操作:

    1. 选择分配角色

    2. QuicksightOktaFederatedRole从 IAM 角色列表中选择。

    3. 对于 SAML 用户角色,请启用QuicksightOktaFederatedRole

  17. 选择保存并返回,然后选择完成

  18. 通过选择左侧的人员筛选条件,选中您输入的用户或组,验证您是否正确完成了此步骤。如果由于您创建的角色未出现在列表中而无法完成此过程,请返回之前的过程来验证设置。

QuickSight 使用 Okta 登录(IdP 到服务提供商登录)
  1. 如果您使用的是 Okta 管理员账户,请切换到用户模式。

  2. 使用已被授予联合访问权限的用户登录您的 Okta 应用程序控制面板。您应该会看到一个带有您标签的新应用程序,例如Amazon 账户联合- QuickSight

  3. 选择应用程序图标以启动Amazon 账户联合- QuickSight

现在,您可以使用 Okta 管理身份,也可以通过 Amazon QuickSight 使用联合访问权限。

以下过程是本教程的可选部分。如果您按照其步骤操作,则表示您授权 QuickSight 代表您的用户向 IdP 转发授权请求。使用此方法,用户无需先 QuickSight 使用 IdP 页面登录即可登录。

(可选)设置 QuickSight 为向 Okta 发送身份验证请求
  1. 打开 QuickSight,然后 QuickSight从个人资料菜单中选择 “管理”。

  2. 从导航窗格中选择单点登录(IAM 联合身份验证)

  3. 对于配置IdP URL,输入 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 先测试登录,请使用测试 end-to-end 体验中提供的自定义 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 的值,?RelayState=然后追加 QuickSight 控制面板的 URL。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 应用程序中。