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

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

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

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

Prerequisites

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

步骤 1:创建 Okta 账户

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

创建 Okta 账户

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

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

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

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

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

  • 创建两个 Okta 用户。

  • 创建两个 Okta 组。

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

将用户添加到 Okta

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

  2. 如果您在开发人员控制台中,请使用页面左上角的选项来选择 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 (主) 电子邮件。本教程使用 athena-okta-user@anycompany.com.

    • 对于 Password (密码),选择 Set by admin (按管理员设置),然后提供密码。本教程清除了 User must change password on first login (用户必须在首次登录时更改密码) 的选项;您的安全要求可能会有所不同。

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

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

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

在以下过程中,您通过 Athena JDBC 驱动程序添加“业务分析师”组和“开发人员”组,为两个 Okta 组提供访问权限。

添加 Okta 组

  1. 从 Okta 经典 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 (添加组)。此时,您将输入开发人员组的信息。

  6. 输入所需信息。

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

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

    
                        添加“开发人员”Okta 组。
  7. 选择 Add Group. (添加组)。

现在,您有两个用户和两个组,您可以为每个组添加一个用户。

将用户添加到组

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

    
                        选择 lf-developer。
  2. 选择 Manage People (管理人员)。

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

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

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

    
                        Okta 用户已添加到 Okta 组。
  4. 选择 Save.

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

  6. 选择 lf-business-analyst 组。

  7. 选择 Manage People (管理人员)。

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

  9. 选择 Back to Groups,或选择 Directory、Groups

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

    
                        在 Okta 控制台中,每个 Okta 组中都添加了一位用户。

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

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

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

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

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

  • 下载生成的身份提供商元数据,以供以后用于 AWS。

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

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

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

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

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

    
                        选择 Amazon Web Services Redshift。
  5. Amazon Web Services Redshift 页面上,选择 Add 为 Amazon Redshift 创建基于 SAML 的应用程序。

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

    
                        输入 Okta 应用程序的名称。

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

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

  1. 在应用程序 Assignments 选项卡上,选择 AssignAssign to People。

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

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

    
                        选择 Assign (分配).
  4. 选择 Save and Go Back。

    
                        选择 Save and Go Back。
  5. 选择完成.

  6. LakeFormation 应用程序的 Assignments 选项卡上,选择 AssignAssign to Groups。

    
                        选择 Assign to Groups。
  7. 对于 lf-business-analyst,选择 Assign 以将 LakeFormation 应用程序分配给 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 AWS Identity and Access Management (IAM) 控制台执行以下任务:

  • 为 AWS 创建身份提供商。

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

  • 将 AmazonAthenaFullAccess 托管策略添加到角色。

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

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

创建 AWS SAML 身份提供商

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

  2. 在导航窗格中,选择身份提供商,然后单击创建提供商

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

    • 对于 Provider Type (提供商类型),选择 SAML。

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

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

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

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

    
                        选择 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: Permissions (下一步: 权限).

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

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

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

  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. 角色的 SummaryAthena-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 控制台中,在角色的 SummaryAthena-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。连接到 的 JDBC 配置文件中需要 Okta 应用程序 AthenaID。

将用户和组 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) (属性语句(可选)) 下,添加以下属性:

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

    • 对于,输入 user.login

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

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

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

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

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

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

  1. 对于 Idp ARN 和 Role 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。稍后,对于连接到 的 JDBC 字符串,您将需要此项Athena。

查找并复制 Okta 应用程序 ID

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

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

  3. 嵌入链接中,复制并安全保存 URL 的 Okta 应用程序 ID 部分。Okta 应用程序 ID 是 URL 中amazon_aws_redshift/下一个正斜杠之前的部分。例如,如果 URL 包含 amazon_aws_redshift/aaa/bbb,则应用程序 ID 为 aaa

    
                        复制 Okta 应用程序的 ID。

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

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

  • 指定 Okta SAML 用户的 ARN 和表上的关联用户权限。

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

  • 验证您授予的权限。

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

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

  2. https://console.amazonaws.cn/lakeformation/ 打开 Lake Formation 控制台。

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

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

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

    1. SAML and Amazon QuickSight users and groups (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. 控制台的 TablesLake Formation (表) 页面上,确保 nyctapi 表仍处于选中状态。

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

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

    1. SAML and users and Amazon QuickSightgroups (SAML 和用户及组) 下,采用以下格式输入 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 (数据权限) nyctaxi 页面显示 athena-okta-userlf-business-analyst 组的权限。

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

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

现在,您已准备好使用 JDBC 客户端以 Okta SAML 用户身份执行与 Athena 的测试连接。

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

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

  • 在 SQL Workbench 中:

    • 为 Athena Okta 用户创建连接。

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

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

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

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

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

准备测试客户端

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

  2. 下载并安装免费的 SQL Workbench/J SQL 查询工具(在修改后的 Apache 2.0 许可证下提供)。

  3. 在 SQL Workbench 中,选择 File (文件),然后选择 Manage Drivers (管理驱动程序)。

    
                        选择 Manage Drivers.
  4. Manage Drivers (管理驱动程序) 对话框中,执行以下步骤:

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

    2. 对于名称,输入 Athena.

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

    4. 选择 OK.

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

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

为 Okta 用户创建连接

  1. 选择 File (文件)、Connect window (连接窗口)。

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

    • 在名称框中,输入 Athena_Okta_User_Connection

    • 对于 Driver (驱动程序),选择 Simba Athena JDBC Driver (Simba 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;

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

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

    
                        SQL Workbench 中的连接配置文件。

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

测试 Okta 用户的连接

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

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

    DESCRIBE "tripdb"."nyctaxi"
    
                        显示了所有列。
  3. 从 SQL Workbench Statement (SQL Workbench 语句) 窗口中,运行以下 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. 选择 Manage People (管理人员)。

  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. 选择 nyctapi 表。

  4. 依次选择 Actions (操作) 和 Grant (授予)。

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

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

    • 对于 Columns (列),选择筛选条件类型,选择 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

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

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