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

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

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

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

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

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

在以下步骤中,您将使用 Okta IdP 的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品牌创建一个免费的 Okta 开发者版账户。URL激活电子邮件后,登录 Okta。

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

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

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

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

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

  7. 选择下一步

  8. 对于 SAML2.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 并打开IAM控制台,网址为https://console.aws.amazon.com/iam/

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

  3. 输入以下设置:

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

    • 提供者名称 – 输入 Okta

    • 元数据文档-上传上一个过程manifest.xml中的XML文件。

  4. 依次选择下一步创建

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

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

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

为 SAML 2.0 联合体创建IAM角色作为可信实体
  1. 登录 AWS Management Console 并打开IAM控制台,网址为https://console.aws.amazon.com/iam/

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

  3. 在 “选择可信实体类型” 中,选择标有 SAML2.0 联合身份验证的卡片。

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

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

  6. 选择下一步: 权限

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

    在政策编辑器中,JSON使用提供商的 Amazon 资源名称 (ARN) 更新。

    { "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. 将下面的策略粘贴到编辑器中。

    在策略编辑器中,JSON使用您的 AWS 账户 ID 更新。它应与您在提供商之前的政策中使用的账户 ID 相同ARN。

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

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

    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 用户,请使用注册用户。要添加 QuickSight 群组,请使用创建群组。要将用户添加到 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您可以通过打开身份提供商 Ok ta ARN 在IAM控制台中仔细检查。

创建 Okta 的访问密钥
  1. 登录 AWS 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. 选择 Next: Permissions(下一步:权限)。

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

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

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

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

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

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

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

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

    3. 使用 Play button icon with a triangular shape pointing to the right. 图标打开策略。验证文本是否与此过程中显示的内容相匹配。

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

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

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

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

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

    2. 选择AWS 账户联合 QuickSight- 这是您在本教程开头创建的应用程序。

    3. 选择常规移动之间的登录选项卡。

  3. 滚动到高级登录设置

  4. 对于 “身份提供者”ARN(仅适用于SAMLIAM联合身份验证),请输入前一过程ARN中的提供者,例如:

    arn:aws:iam::111122223333:saml-provider/Okta
  5. 选择完成保存。按钮的名称会有所不同,具体取决于您是在创建还是在编辑应用程序。

  6. 选择 “配置” 选项卡,然后在该选项卡的下半部分,选择 “配置API集成”。

  7. 打开 “启用API集成” 以显示设置。

  8. 对于访问密钥私有密钥,请提供您之前下载到名为 OktaSSOUser_credentials.csv 的文件中的访问密钥和私有密钥。

  9. 选择 “测试API凭证”。在 “启用API集成” 设置上方查看一条确认已成功验证AWS 账户联合身份验证的消息。

  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 应用程序控制面板。您应该会看到带有您标签的新应用程序,例如AWS 账户联合- QuickSight

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

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

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

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

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

  3. 配置 I dP 中URL,输入您的 IdP 为对用户进行身份验证而提供的,例如 https://dev-URL1-----0.okta。 com/home/amazon_aws/0oabababababaGQei5d5/282。 你可以在 Okta 应用程序页面的 “常规” 选项卡的 “嵌入链接” 中找到它。

  4. 对于 IdP URL,请输入。RelayState

  5. 请执行以下操作之一:

    • 要先使用您的身份提供商测试登录,请从您的 IdP 开始使用测试中URL提供的自定义设置。您应该到达起始页面 QuickSight,例如 st https://quicksight.aws.amazon.com/sn/ art。

    • 要 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的文件URL中找到 Okta 应用程序的单点登录(IAM联合)。你可以在文件底部URL附近的名为的元素中找到md:SingleSignOnService。此属性命名为 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. 如果您创建的链接未打开,请检查您是否使用的是中的最新IAM联URL合metadata.xml。另请检查您用于登录的用户名是否未在多个IAM联邦 Okta 应用程序中分配。