教程: 使用 Athena 和 JDBC 为 Okta 用户配置对 Lake Formation 的联合访问 - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

教程: 使用 Athena 和 JDBC 为 Okta 用户配置对 Lake Formation 的联合访问

本教程介绍如何配置 Okta、AWS Lake Formation、AWS Identity and Access Management 权限和 Athena JDBC 驱动程序,以支持对 Athena 进行基于 SAML 的联合身份使用。Lake Formation 为基于 SAML 的用户提供对 Athena 中可用的数据的精细访问控制。要设置此配置,本教程使用 Okta 开发人员控制台、AWS IAM 和 Lake Formation 控制台以及 SQL Workbench/J 工具。

Prerequisites

本教程假定您已完成以下操作:

步骤 1: 创建 Okta 账户

本教程使用 Okta 作为基于 SAML 的身份提供商。如果您还没有 Okta 账户,可以创建一个免费账户。Okta 账户是必需的,以便您可以创建 Okta 应用程序以进行 SAML 身份验证。

创建 Okta 账户

  1. 要使用 Okta,请导航到 Okta 开发人员注册页面并创建免费的 Okta 试用账户。开发人员版本服务免费承担 Okta 在 developer.okta.com/pricing 中指定的限制。

  2. 当您收到激活电子邮件时,请激活您的账户。

    系统会为您分配一个 Okta 域名。保存域名以供参考。稍后,您将使用 域名 (<okta-idp-domain>) (在连接到 Athena 的 JDBC 字符串中)。

步骤 2: 将用户和组添加到 Okta

在此步骤中,您将使用 Okta 控制台执行以下任务:

  • 创建两个 Okta 用户。

  • 创建两个 Okta 组。

  • 将一个 Okta 用户添加到每个 Okta 组。

将用户添加到 Okta

  1. 激活 Okta 账户后,以管理用户身份登录分配的 Okta 域。

  2. 如果您在 Developer Console 中,请使用页面左上角的选项来选择 Classic UI

    
                        选择经典 UI。
  3. Classic UI 中,选择 Directory,然后选择 People

  4. 选择 Add Person (添加人员) 以添加将通过 JDBC 驱动程序访问 Athena 的新用户。

    
                        选择 Add Person。
  5. Add Person 对话框中,输入所需信息。

    • First name (名字)Last name (姓氏) 输入值。本教程使用 athena-okta-user.

    • 输入 Username (用户名)Primary email (主电子邮件)。本教程使用 athena-okta-user@anycompany.com.

    • 对于 Password (密码),选择 Set by admin (按管理员设置),然后提供密码。本教程将清除 User must change password on first login 的选项;您的安全要求可能会有所不同。

    
                        将用户添加到 Okta 应用程序。
  6. 选择 Save and Add Another

  7. 输入其他用户的信息。此示例添加业务分析师用户 athena-ba-user@anycompany.com.

    
                        将用户添加到 Okta 应用程序。
  8. 选择 Save (保存)

在以下过程中,您通过添加“Business Analytics”组和“Developer”组,通过 Athena JDBC 驱动程序为两个 Okta 组提供访问权限。

添加 Okta 组

  1. 从 Okta Classic UI 中,选择 Directory,然后选择 Groups

  2. Groups (组) 页面上,选择 Add Group (添加组)

    
                        选择 Add Group (添加组)。
  3. Add Group (添加组) 对话框中,输入所需信息。

    • 对于 Name (名称),输入 lf-business-analyst.

    • 对于 Group Description (组描述),输入 Business Analysts.

    
                        添加 Okta 组。
  4. 选择 Add Group (添加组)。

  5. Groups (组) 页面上,再次选择 Add Group (添加组)。这次您将为 Developer 组输入信息。

  6. 输入所需信息。

    • 对于 Name (名称),输入 lf-developer.

    • 对于 Group Description (组描述),输入 Developers.

    
                        添加“Developers”Okta 组。
  7. 选择 Add Group (添加组)。

现在,您有两个用户和两个组,您已准备好向每个组添加一个用户。

将用户添加到组

  1. Groups (组) 页面上,选择您刚刚创建的 lf-developer (lf 开发人员) 组。您将作为开发人员创建的 Okta 用户之一添加到此组中。

    
                        选择 lf-developer。
  2. 选择管理人员

    
                        选择管理人员。
  3. Not Members (非成员) 列表中,选择 athena-okta-user

    
                        选择要添加到成员列表的用户。

    用户的条目从左侧的 Not Members (非成员) 列表移动到右侧的 Members (成员) 列表。

    
                        Okta 用户已添加到 Okta 组。
  4. 选择 Save (保存)

  5. 选择 Back to Groups,或选择 Directory,然后选择 Groups

  6. 选择 lf-business-analyst 组。

  7. 选择管理人员

  8. athena-ba-user 添加到 lf-business-analyst 组的 Members 列表中,然后选择 Save

  9. 选择 Back to Groups,或者选择 DirectoryGroups

    Groups (组) 页面现在显示每个组有一个 Okta 用户。

    
                        在 Okta 控制台中,已将一个用户添加到每个 Okta 组。

步骤 3: 为 SAML 身份验证设置 Okta 应用程序

在此步骤中,您将使用 Okta 开发人员控制台执行以下任务:

  • 添加用于 AWS 的 SAML 应用程序。

  • 将应用程序分配给 Okta 用户。

  • 将应用程序分配给 Okta 组。

  • 下载生成的身份提供商元数据以便稍后与 AWS 结合使用。

添加用于 SAML 身份验证的应用程序

  1. 从菜单中,选择 Applications (应用程序),以便您可以配置 Okta 应用程序以便对 Athena 进行 SAML 身份验证。

  2. 单击 Add Application (添加应用程序)

    
                        单击 Add Application (添加应用程序)。
  3. 在搜索框中,搜索 Redshift

  4. 选择 Amazon Web ServicesRedshift。本教程中的 Okta 应用程序使用 Amazon Redshift 的现有 SAML 集成。

    
                        选择 Amazon Web ServicesRedshift。
  5. Amazon Web ServicesRedshift 页面上,选择 Add (添加) 以便为 Amazon Redshift 创建基于 SAML 的应用程序。

    
                        选择 Add (添加) 以创建基于 SAML 的应用程序。
  6. 对于 Application label (应用程序标签),输入 Athena-LakeFormation-Okta,然后选择 Done (完成)

    
                        输入 Okta 应用程序的名称。

现在,您已经创建了 Okta 应用程序,可以将其分配给您创建的用户和组。

将应用程序分配给用户和组

  1. 在应用程序 Assignments (分配) 选项卡上,选择 Assign (分配)Assign to Beople (分配给人员)

    
                        依次选择 Assign (分配) 和 Assign to Beople (分配给人员)。
  2. Assign Athena-LakeFormation-Okta to people 对话框中,找到您之前创建的 athena-okta-user 用户。

  3. 选择 Assign (分配) 以将用户分配给应用程序。

    
                        选择 Assign (分配)。
  4. 选择 Save and Go Back (保存并返回)

    
                        选择 Save and Go Back (保存并返回)。
  5. 选择 Done (完成)

  6. Athena-LakeFormation-Okta 应用程序的 Assignments (分配) 选项卡上,选择 Assign (分配)Assign to Groups (分配到组)

    
                        选择 Assign to Groups (分配到组)。
  7. 对于 lf-business-analyst,选择 Assign (分配) 以将 Athena-LakeFormation-Okta 应用程序分配给 lf-business-analyst 组,然后选择 Done (完成)

    
                        将 Okta 应用程序分配给 Okta 用户组。

    该组将显示在应用程序的组列表中。

    
                        Okta 应用程序分配给 Okta 组。

现在,您已准备好下载身份提供商应用程序元数据以用于 AWS。

下载应用程序元数据

  1. 选择 Okta 应用程序 Sign On 选项卡,然后右键单击 Identity Provider metadata

    
                        右键单击 Identity Provider metadata (身份提供商元数据)。
  2. 选择 Save Link As (将链接另存为) 以将 XML 格式的身份提供商元数据保存到文件中。为它指定一个您可识别的名称(例如,Athena-LakeFormation-idp-metadata.xml)。

    
                        保存身份提供商元数据。

步骤 4: 创建 AWS SAML 身份提供商和 Lake Formation 访问 IAM 角色

在此步骤中,您将使用 AWS Identity and Access Management (IAM) 控制台执行以下任务:

  • 为 AWS 创建身份提供商。

  • 为 Lake Formation 访问创建 IAM 角色。

  • 向角色Athena添加 AmazonFullAccess 托管策略。

  • 将 Lake Formation 和 AWS Glue 的策略添加到角色。

  • 将 Athena 查询结果的策略添加到角色。

创建 AWS SAML 身份提供商

  1. AWS 账户管理员身份登录 AWS 账户控制台,然后导航到 IAM 控制台 ()。https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 Identity providers (身份提供商),然后单击 Create Provider (创建提供商)

    
                        在 IAM 控制台中创建身份提供商。
  3. Configure Provider (配置提供商) 屏幕上,输入以下信息:

    • 对于提供商类型,选择 SAML。

    • 对于 Provider Name (提供商名称),输入 AthenaLakeFormationOkta

    • 对于 Metadata Document,选择您下载的身份提供商 (IdP) 元数据 XML 文件。

    
                        配置 SAML 身份提供商。
  4. 选择 Next Step

  5. Verify Provider Information (验证提供商信息) 页面上,选择 Create (创建)

    
                        选择创建。

    在 IAM 控制台中,您创建的 AthenaLakeFormationOkta 提供商将显示在身份提供商列表中。

    
                        在 IAM 控制台中创建的身份提供商。

接下来,创建用于访问 IAM 的 AWS Lake Formation 角色。您将两个内联策略添加到角色。一个策略提供访问 Lake Formation 和 AWS Glue APIs 的权限。 另一个策略提供对 Athena 以及 Athena 中 Amazon S3 查询结果位置的访问。

创建用于 IAM 访问的 AWS Lake Formation 角色

  1. 在 IAM 控制台导航窗格中,选择 Roles (角色),然后选择 Create role (创建角色)

    
                        创建 IAM 角色。
  2. Create role (创建角色) 页面上,执行以下步骤:

    1. 对于 Select type of trusted entity (选择受信任实体的类型),选择 SAML 2.0 Federation (SAML 2.0 联合身份验证)

    2. 对于 SAML provider (SAML 提供商),选择 AthenaLakeFormationOkta

    3. 对于 SAML provider (SAML 提供商),选择 Allow programmatic and AWS Management Console access (允许编程访问和 AWS 管理控制台访问) 选项。

    4. 选择 Next: (下一步:)。权限。

    
                        配置 IAM 角色以使用 SAML 2.0。
  3. Attach Permissions policies (附加权限策略) 页面上,对于 Filter policies (筛选策略),输入 Athena

  4. 选择 AmazonAthenaFullAccess 托管策略,然后选择下一步: 标签

    
                        将 AmazonAthenaFullAccess 托管策略附加到 IAM 角色。
  5. Add tags (添加标签) 页面上,选择 Next: (下一步:)。 审核

  6. Review (审核) 页面上,对于 Role name (角色名称),输入角色的名称(例如,Athena-LakeFormation-OktaRole),然后选择 Create role

    
                        输入 IAM 角色的名称。

接下来,添加允许访问 Amazon S3 中的 Lake Formation、AWS Glue APIs 和 Athena 查询结果的内联策略。

将内联策略添加到 Lake Formation 和 AWS Glue 的角色

  1. 从 IAM 控制台的角色列表中,选择新创建的 Athena-LakeFormation-OktaRole

  2. 在角色的 Summary (摘要) 页面上的 Permissions (权限) 选项卡上,选择 Add inline policy (添加内联策略)

  3. 创建策略页面上,选择 JSON

  4. 添加提供对 Lake Formation 和 AWS Glue APIs 的访问权限的内联策略,如下所示。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "lakeformation:GetMetadataAccess", "glue:GetUnfiltered*", "glue:GetTable", "glue:GetTables", "glue:GetDatabase", "glue:GetDatabases", "glue:CreateDatabase", "glue:GetUserDefinedFunction", "glue:GetUserDefinedFunctions" ], "Resource": "*" } }
  5. 选择查看策略

  6. 对于 Name (名称),输入策略的名称(例如,LakeFormationGlueInlinePolicy)。

  7. 选择 Create policy (创建策略)

为 Athena 查询结果位置的角色添加内联策略

  1. 角色的 Summary (摘要)Athena-LakeFormation-OktaRole 页面上,在 Permissions (权限) 选项卡上,选择 Add inline policy (添加内联策略)

  2. 创建策略页面上,选择 JSON

  3. 添加类似于下面的内联策略,以允许角色访问 Athena 查询结果位置。替换 <athena-query-results-bucket> 示例中的占位符替换为您的 Amazon S3 存储桶的名称。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AthenaQueryResultsPermissionsForS3", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::<athena-query-results-bucket>", "arn:aws:s3:::<athena-query-results-bucket>/*" ] } ] }
  4. 选择查看策略

  5. 对于 Name (名称),输入策略的名称(例如,AthenaQueryResultsInlinePolicy)。

  6. 选择 Create policy (创建策略)

接下来,复制 Lake Formation 访问角色的 ARN 以及您创建的 SAML 提供商的 ARN。在本教程的下一部分中配置 Okta SAML 应用程序时,需要使用这些参数。

复制角色 ARN 和 SAML 身份提供商 ARN

  1. 在 IAM 控制台中,在 角色的 Summary (摘要)Athena-LakeFormation-OktaRole 页面上,选择 Role ARN (角色 ARN) 旁边的 Copy to clipboard (复制到剪贴板) 图标。ARN 格式如下:

    arn:aws:iam::<account-id>:role/Athena-LakeFormation-OktaRole
  2. 安全地保存完整的 ARN 以供以后参考。

  3. 在 IAM 控制台导航窗格中,选择 Identity providers (身份提供商)

  4. 选择 AthenaLakeFormationOkta 提供程序。

  5. Summary (摘要) 页面上,选择 Provider ARN (提供商 ARN) 旁边的 Copy to clipboard (复制到剪贴板) 图标。ARN 应如下所示:

    arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta
  6. 安全地保存完整的 ARN 以供以后参考。

步骤 5: 将 IAM 角色和 SAML 身份提供商添加到 Okta 应用程序

在此步骤中,您将返回到 Okta 开发人员控制台并执行以下任务:

  • 将用户和组 Lake Formation URL 属性添加到 Okta 应用程序。

  • 将身份提供商的 ARN 和 IAM 角色的 ARN 添加到 Okta 应用程序。

  • 复制 Okta 应用程序 ID。Okta 应用程序 ID 在连接到 Athena 的 JDBC 配置文件中是必需的。

将用户和组 Lake Formation URL 属性添加到 Okta 应用程序

  1. 登录 Okta 开发人员控制台。

  2. 选择 Applications (应用程序) 选项卡,然后选择 Athena-LakeFormation-Okta 应用程序。

    
                        选择 Athena-LakeFormation-Okta 应用程序。
  3. 在应用程序的 Sign On (登录) 选项卡上选择,然后选择 Edit (编辑)

    
                        编辑 Okta 应用程序。
  4. 展开 Attributes (optional) (属性(可选))

  5. Attribute Statements (optional) (属性语句(可选)) 下,添加以下属性:

    • 对于 Name (名称),请输入 https://lakeformation.amazon.com/SAML/Attributes/Username

    • 对于 Value (值),输入 user.login

      
                                将用户 Lake Formation URL 属性添加到 Okta 应用程序。
  6. Group Attribute Statements (optional) (组属性语句(可选)) 下,添加以下属性:

    • 对于 Name (名称),请输入 https://lakeformation.amazon.com/SAML/Attributes/Groups

    • 对于 Name format (名称格式),输入 Basic

    • 对于 Filter (筛选条件),选择 Matches regex (匹配正则表达式),然后在筛选条件框中输入 .*

    
                        将组 Lake Formation URL 属性添加到 Okta 应用程序。
  7. 向下滚动到 Advanced Sign-On Settings (高级登录设置) 部分,您将在其中将身份提供商和 IAM Role ARNs 添加到 Okta 应用程序。

将身份提供商和 ARNs 角色的 IAM 添加到 Okta 应用程序

  1. 对于 Idp ARN and Role ARN (Idp ARN 和角色 ARN),以逗号分隔值的格式输入 AWS 身份提供商 ARN 和角色 ARN。<saml-arn>,<role-arn>, 组合后的字符串应与以下内容类似:

    arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta,arn:aws:iam::<account-id>:role/Athena-LakeFormation-OktaRole
    
                        在 Okta 应用程序中输入身份提供商 ARN 和 IAM 角色 ARN。
  2. 选择 Save (保存)

接下来,复制 Okta 应用程序 ID。稍后,您将需要为连接到 Athena 的 JDBC 字符串执行此操作。

查找并复制 Okta 应用程序 ID

  1. 选择 Okta 应用程序的 General 选项卡。

    
                        选择 Okta 应用程序的 General 选项卡。
  2. 向下滚动到 App Embed Link 部分。

  3. Embed Link 中,复制并安全地保存 URL 的 Okta 应用程序 ID 部分。Okta 应用程序 ID 是 URL 中 amazon_aws_redshift/ 之后的部分。

    
                        复制 Okta 应用程序的 ID。

步骤 6: 通过 AWS Lake Formation 授予用户和组权限

在该步骤中,您使用 Lake Formation 控制台向 SAML 用户和组授予对表的权限。您执行以下任务:

  • 指定 Okta SAML 用户的 ARN 以及对表的关联用户权限。

  • 指定 Okta SAML 组的 ARN 以及对表的关联组权限。

  • 验证您授予的权限。

在 Lake Formation 中为 Okta 用户授予权限

  1. 以数据湖管理员身份登录 AWS 管理控制台。

  2. Open the Lake Formation console at https://console.amazonaws.cn/lakeformation/.

  3. 从导航窗格中,选择 Tables (表),然后选择要为其授予权限的表。本教程使用 nyctaxi 数据库中的 tripdb 表。

    
                        选择要授予权限的表。
  4. Actions (操作) 中,选择 Grant (授予)

    
                        选择 Grant (授予)。
  5. Grant permissions (授予权限) 对话框中,输入以下信息:

    1. SAML and Amazon QuickSight users and groups (SAML 和 SAML 用户和组) 下,采用以下格式输入 Okta SAML 用户 ARN:

      arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta:user/<athena-okta-user>@<anycompany.com>
    2. 对于 Columns (列),请为 Choose filter type (选择筛选条件类型) 选择 Include columns (包含列)Exclude columns (排除列)

    3. 使用筛选条件下的 Choose one or more columns (选择一个或多个列) 下拉菜单可指定要为用户包含或排除的列。

    4. 对于 Table permissions (表权限),选择 Select (选择)。本教程仅授予 SELECT 权限;您的要求可能会有所不同。

      
                                向 Okta 用户授予表和列级权限。
  6. 选择 Grant (授予)

现在,您将为 Okta 组执行相似步骤。

在 Lake Formation 中授予 Okta 组的权限

  1. 控制台的 Tables (表)Lake Formation 页面上,确保仍选择 nycraxi 表。

  2. Actions (操作) 中,选择 Grant (授予)

  3. Grant permissions (授予权限) 对话框中,输入以下信息:

    1. SAML and Amazon QuickSight users and groups (SAML 和 AWS 用户和组) 下,采用以下格式输入 Okta SAML 组 ARN:

      arn:aws:iam::<account-id>:saml-provider/AthenaLakeFormationOkta:group/lf-business-analyst
    2. 对于 Columns (列)Choose filter type (选择筛选条件类型),选择 Include columns (包括列)

    3. 对于 Choose one or more columns (选择一个或多个列),选择表的前三列。

    4. 对于 Table permissions (表权限),选择要授予的特定访问权限。本教程仅授予 SELECT 权限;您的要求可能会有所不同。

      
                                向 Okta 组授予表权限。
  4. 选择 Grant (授予)

  5. 要验证您授予的权限,请依次选择 Actions (操作)View permissions (查看权限)

    
                        选择 View permissions (查看权限) 以验证已授予的权限。

    表的 Data permissions (数据权限) 页面显示 nyctaxiathena-okta-userlf-business-analyst 组的权限。

    
                        查看已向 Okta 用户和组授予的权限。

步骤 7: 通过 Athena JDBC 客户端验证访问权限

现在,您可以使用 JDBC 客户端以 Okta SAML 用户身份执行到 Athena 的测试连接。

在本部分中,您将执行以下任务:

  • 准备测试客户端 – 下载 Athena JDBC 驱动程序,安装 SQL Workbench,然后将该驱动程序添加到 Workbench。本教程使用 SQL Workbench 通过 Okta 身份验证访问 Athena 并验证 Lake Formation 权限。

  • 在 SQL Workbench 中:

    • 为 Athena Okta 用户创建连接。

    • 以 Athena Okta 用户的身份运行测试查询。

    • 为业务分析师用户创建并测试连接。

  • 在 Okta 控制台中,将业务分析师用户添加到开发人员组。

  • 在 Lake Formation 控制台中,为开发人员组配置表权限。

  • 在 SQL Workbench 中,以业务分析师用户身份运行测试查询,并验证权限更改如何影响结果。

准备测试客户端

  1. 从 Lake Formation 下载并提取与 Athena 兼容的 将 Athena 与 JDBC 驱动程序结合使用 JDBC 驱动程序(2.0.14 或更高版本)。

  2. 下载并安装免费的 SQL Workbench/J SQL 查询工具,此工具是根据修改后的 Apache 2.0 许可证提供的。

  3. 在 SQL Workbench 中,选择 File,然后选择 Manage Drivers

    
                        选择 Manage Drivers。
  4. Manage Drivers 对话框中,执行以下步骤:

    1. 选择新的驱动程序图标。

    2. 对于 Name (名称),请输入 Athena

    3. 对于 Library (库),浏览并选择您刚下载的 Simba Athena JDBC .jar 文件。

    4. 选择 OK (确定)

      
                                将 Athena JDBC 驱动程序添加到 SQL Workbench。

现在,您已准备好为 Athena Okta 用户创建和测试连接。

为 Okta 用户创建连接

  1. 选择 FileConnect window

    
                        选择 Connect window (连接窗口)。
  2. Connection profile (连接配置文件) 对话框中,通过输入以下信息创建连接:

    • 在名称框中,输入 Athena_Okta_User_Connection

    • 对于 Driver (驱动程序),选择 Simba Athena JDBC 驱动程序。

    • 对于 URL,请执行以下操作之一:

      • 要使用连接 URL,请输入单行连接字符串。以下示例添加了换行符以便于阅读。

        jdbc:awsathena://AwsRegion=region-id; S3OutputLocation=s3://athena-query-results-bucket/athena_results; AwsCredentialsProviderClass=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider; user=athena-okta-user@anycompany.com; password=password; idp_host=okta-idp-domain; App_ID=okta-app-id; SSL_Insecure=true; LakeFormationEnabled=true;
      • 要使用基于 AWS 配置文件的 URL,请执行以下步骤:

        1. 配置具有类似于以下示例的 AWS 凭证文件的 AWS 配置文件

          [athena_lf_dev] plugin_name=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider idp_host=okta-idp-domain app_id=okta-app-id uid=athena-okta-user@anycompany.com pwd=password
        2. 对于 URL,输入类似于以下示例的单行连接字符串。该示例添加了换行符以便于阅读。

          jdbc:awsathena://AwsRegion=region-id; S3OutputLocation=s3://athena-query-results-bucket/athena_results; profile=athena_lf_dev; SSL_Insecure=true; LakeFormationEnabled=true;

      请注意,这些示例是连接到 Athena 所需的 URL 的基本表示形式。有关 URL 中支持的参数的完整列表,请参阅 Simba Athena JDBC 驱动程序安装指南。JDBC 安装指南还提供用于以编程方式连接到 Athena 的示例 Java 代码。

    下图显示了使用连接 URL 的 SQL Workbench 连接配置文件。

    
                        SQL Workbench 中的连接配置文件。

现在您已为 Okta 用户建立了连接,可以通过检索一些数据来测试它。

测试 Okta 用户的连接

  1. 选择 Test (测试),然后验证连接是否成功。

  2. 从 SQL Workbench Statement (语句) 窗口中,运行以下 SQL DESCRIBE 命令。验证是否显示所有列。

    DESCRIBE "tripdb"."nyctaxi"
    
                        显示所有列。
  3. 从 SQL Workbench Statement (语句) 窗口中,运行以下 SQL SELECT 命令。验证是否显示所有列。

    SELECT * FROM tripdb.nyctaxi LIMIT 5
    
                        验证是否显示所有列。

接下来,您将验证作为 lf-business-analyst 组的成员的 athena-ba-user 只能访问您之前在Lake Formation中指定的表的前三列。

验证 athena-ba-user 的访问权限

  1. 在 SQL Workbench 的 Connection profile (连接配置文件) 对话框中,创建另一个连接配置文件。

    • 对于连接配置文件名称,请输入 Athena_Okta_Group_Connection

    • 对于 Driver (驱动程序),选择 Simba Athena JDBC 驱动程序。

    • 对于 URL,请执行以下操作之一:

      • 要使用连接 URL,请输入单行连接字符串。以下示例添加了换行符以便于阅读。

        jdbc:awsathena://AwsRegion=region-id; S3OutputLocation=s3://athena-query-results-bucket/athena_results; AwsCredentialsProviderClass=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider; user=athena-ba-user@anycompany.com; password=password; idp_host=okta-idp-domain; App_ID=okta-application-id; SSL_Insecure=true; LakeFormationEnabled=true;
      • 要使用基于 AWS 配置文件的 URL,请执行以下步骤:

        1. 配置具有类似于以下示例的凭证文件的 AWS 配置文件。

          [athena_lf_ba] plugin_name=com.simba.athena.iamsupport.plugin.OktaCredentialsProvider idp_host=okta-idp-domain app_id=okta-application-id uid=athena-ba-user@anycompany.com pwd=password
        2. 对于 URL,输入如下所示的单行连接字符串。该示例添加了换行符以便于阅读。

          jdbc:awsathena://AwsRegion=region-id; S3OutputLocation=s3://athena-query-results-bucket/athena_results; profile=athena_lf_ba; SSL_Insecure=true; LakeFormationEnabled=true;
  2. 选择 Test (测试) 以确认连接成功。

  3. SQL Statement (SQL 语句) 窗口中,运行您在之前执行的相同 DESCRIBESELECT SQL 命令,然后检查结果。

    由于 athena-ba-userlf-business-analyst 组的成员,因此,仅返回您在 Lake Formation 控制台中指定的前三列。

    
                        只返回前三列。
    
                        前三列的数据。

接下来,返回到 Okta 控制台,将 athena-ba-user 添加到 lf-developer Okta 组。

将 athena-ba-user 添加到 lf-developer 组

  1. 以已分配 Okta 域的管理用户身份登录到 Okta 控制台。

  2. 切换到 Classic UI

  3. 选择 Directory,然后选择 Groups

  4. 在 Groups (组) 页面上,选择 lf-developer 组。

    
                        选择 lf-developer 组。
  5. 选择管理人员

  6. Not Members (非成员) 列表中,选择 athena-ba-user 以将其添加到 lf-developer 组

  7. 选择 Save (保存)

现在,您将返回到 Lake Formation 控制台,以便为 lf-developer 组配置表权限。

为 lf-developer-group 配置表权限

  1. 以 Data Lake 管理员身份登录 Lake Formation 控制台。

  2. 在导航窗格中,选择 Tables (表)

  3. 选择 nyctaxi 表。

  4. 选择 ActionsGrant

  5. Grant Permissions 对话框中,输入以下信息:

    • 对于 SAML 和 Amazon QuickSight 用户和组,采用以下格式输入 Okta SAML flf-developer 组 ARN:

    • 对于 Columns (列)Choose filter type (选择筛选条件类型),选择 Include columns (包括列)

    • 选择 trip_type 列。

    • 对于 Table permissions (表权限),选择 SELECT

  6. 选择 Grant (授予)

现在,您可以使用 SQL Workbench 验证 lf-developer 组的权限更改。此更改应反映在可用于 athena-ba-user 的数据中,该数据现在是 lf-developer 组的成员。

验证 athena-ba-user 的权限更改

  1. 关闭 SQL Workbench 程序,然后重新打开它。

  2. 连接到 athena-ba-user 的配置文件。

  3. Statement (语句) 窗口中,发出与您之前运行的 SQL 语句相同的语句:

    此时,会显示 trip_type 列。

    
                        第四列可用于查询。

    由于 athena-ba-user 现在是 lf-developerlf-business-analyst 组的成员,这些组的 Lake Formation 权限组合将决定返回的列。

    
                        数据结果中的第四个列。

Conclusion

在本教程中,您将使用 Okta 作为 SAML 提供商配置了 Athena 与 AWS Lake Formation 的集成。您已使用 Lake Formation 和 IAM 控制数据湖 AWS Glue Data Catalog 中 SAML 用户可用的资源。

有关相关信息,请参阅以下资源。