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

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

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

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

前提条件

本教程假定您已执行以下操作:

步骤 1:创建 Okta 账户

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

创建 Okta 账户
  1. 要使用 Okta,请导航到 Okta 开发人员注册页并创建一个免费的 Okta 试用账户。开发人员版服务是免费的,不超过 Okta 在 developer.okta.com/pricing 总指定的限制。

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

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

步骤 2:向 Okta 添加用户和组

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

  • 创建两个 Okta 用户。

  • 创建两个 Okta 组。

  • 向每个 Okta 组添加一个 Okta 用户。

要向 Okta 添加用户
  1. 激活 Okta 账户后,以管理用户身份登录到指定的 Okta 域。

  2. 在左侧导航窗格中,选择 Directory(目录),然后选择 People(人员)。

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

    
                        选择 Add Person(添加人员)。
  4. 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 the first login(用户必须在首次登录时更改密码)的选项;您的安全要求可能会有所不同。

    
                        将用户添加到 Okta 应用程序。
  5. 选择 Save and Add Another(保存并添加另一个)。

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

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

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

要添加 Okta 组
  1. 在 Okta 导航窗格中,选择 Directory(目录),然后选择 Groups(组)。

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

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

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

    • 对于 Group Description(组描述),输入业务分析人员

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

  5. Groups(组)页面上,再次选择 Add Group(添加组)。这一次,您将输入开发人员组的信息。

  6. 输入所需的信息。

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

    • 对于 Group Description(组描述),输入开发人员

  7. 选择 Add Group (添加组)。

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

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

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

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

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

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

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

  5. 选择 Back to Group(返回组),或选择 Directory(目录),然后选择 Groups(组)。

  6. 选择 lf-business-analyst 组。

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

  8. lf-business-analyst 组的 Members(成员)列表添加 athena-ba-user,然后选择 Save(保存)。

  9. 选择 Back to Group(返回组),或选择 Directory(目录),Groups(组)。

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

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

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

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

  • 添加 SAML 应用程序以便与 Amazon 结合使用。

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

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

  • 下载生成的身份提供程序元数据,以便日后与 Amazon 结合使用。

要添加用于 SAML 身份验证的应用程序
  1. 在 Okta 导航窗格中,选择 Applications(应用程序)、Applications(应用程序),以便您可以为对 Athena 进行的 SAML 身份验证配置 Okta 应用程序。

  2. 单击 Browse App Catalog(浏览应用程序目录)。

  3. 在搜索框中,输入 Redshift

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

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

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

    
                        输入 Oktak 应用程序的名称。

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

要将应用程序分配给用户和组
  1. Applications(应用程序)页面上,选择 Athena-LakeFormation-Okta 应用程序。

  2. Assignments(分配)选项卡上,选择 Assign(分配)、Assign to People(分配给人员)。

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

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

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

  6. 选择完成

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

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

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

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

    
                        Okta 应用程序分配给 Okta 组。

现在,您已准备就绪,可以下载身份提供程序应用程序元数据,以用于 Amazon。

下载应用程序元数据
  1. 选择 Okta 应用程序的 Sign On(登录)选项卡,然后右键单击 Identity Provider metadata(身份提供程序元数据)。

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

    
                        保存身份提供程序元数据。

步骤 4:创建 Amazon SAML 身份提供程序和 Lake Formation 访问 IAM 角色

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

  • 为 Amazon 创建身份提供程序。

  • 创建针对 Lake Formation 访问的 IAM 角色。

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

  • 向角色添加 Lake Formation 策略和 Amazon Glue。

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

要创建 Amazon SAML 身份提供程序
  1. 亚马逊云科技账户管理员身份登录亚马逊云科技账户 控制台,并导航到 IAM 控制台(https://console.aws.amazon.com/iam/)。

  2. 在导航窗格中,选择 Identity providers(身份提供程序),然后单击 Add provider(添加提供程序)。

  3. Define provider(定义提供程序)页面上,输入以下信息:

    • 对于 Provider type(提供程序类型),选择 SAML

    • 对于 Provider name(提供程序名称),输入 AthenaLakeFormationOkta

    • 对于 Metadata document(元数据文档),请使用 Select file(选择文件)选项上载您下载的身份提供程序 (IdP) 元数据 XML 文件。

  4. 选择 Add provider(添加提供程序)。

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

要为 Amazon Lake Formation 创建 IAM 角色以进行访问
  1. 在 IAM 控制台的导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。

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

    
                        将 IAM 角色配置为使用 SAML 2.0。
    1. 对于 Select type of trusted entity(选择受信任实体的类型),选择 SAML 2.0 Federation

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

    3. 对于 SAML provider(SAML 提供程序),选择选项 Allow programmatic and Amazon Web Services Management Console access(允许编程和控制台访问)。

    4. 选择下一步:权限

  3. Attach Permissions policies(附加权限策略)页面,对于 Filter pilicies(筛选策略),输入 Athena

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

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

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

    
                        输入 IAM 角色的名称。

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

每当您使用 IAM 策略时,请确保遵循 IAM 最佳实践。有关更多信息,请参阅《IAM 用户指南》中的 IAM 安全最佳实践

要将内联策略添加到 Lake Formation 和 Amazon Glue 的角色
  1. 从 IAM 控制台中的角色列表中,选择新创建的 Athena-LakeFormation-OktaRole

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

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

  4. 添加一个内联策略,如下所示,该策略可提供访问 Lake Formation 和 Amazon Glue API 的权限。

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

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

  7. 选择创建策略

要将内联策略添加到 Athena 查询结果位置的角色
  1. Athena-LakeFormation-OktaRole 角色的 Summary(摘要)页面上,在 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. 选择Review policy(查看策略)

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

  6. 选择创建策略

接下来,您需要复制 Lake Formation 访问角色的 ARN 和您创建的 SAML 提供程序的 ARN。当您在本教程的下一部分中配置 Okta SAML 应用程序时,这些都是必需的。

要复制角色 ARN 和 SAML 身份提供程序 ARN
  1. 在 IAM 控制台中,在 Athena-LakeFormation-OktaRole 角色的 Summary(摘要)页面中,选择 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。连接到 Athena 的 JDBC 配置文件中需要 Okta 应用程序 ID。

将用户和组 Lake Formation URL 属性添加到 Okta 应用程序
  1. 登录 Okta 开发人员控制台。

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

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

    
                        编辑 Okta 应用程序。
  4. 选择 Attributes (optional)(属性(可选))来扩展它。

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

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

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

  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 角色 ARN 添加到 Okta 应用程序。

将身份提供程序和 IAM 角色的 ARN 添加到 Okta 应用程序
  1. 对于 Idp ARN 和角色 ARN,输入 Amazon 身份提供程序 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 是 amazon_aws_redshift/ 之后的 URL 部分内容,但在下一个正斜杠之前。例如,如果 URL 包含 amazon_aws_redshift/aaa/bbb,则应用程序 ID 为 aaa

    
                        复制 Okta 应用程序的 ID。
注意

嵌入的链接不能用于直接登录 Athena 控制台以查看数据库。仅当您使用 JDBC 或 ODBC 驱动程序向 Athena 提交查询时,才认可 SAML 用户和组的 Lake Formation 权限。要查看数据库,可以使用 SQL WorkBench/J 工具,该工具会使用 JDBC 驱动程序连接到 Athena。有关 SQL Workbench/J 工具的介绍详见步骤 7:验证通过 Athena JDBC 客户端的访问

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

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

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

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

  • 验证您授予的权限。

为 Okta 用户授予 Lake Formation 中的权限
  1. 以数据湖管理员身份登录 Amazon Web Services Management Console。

  2. 打开 Lake Formation 控制台,网址为 https://console.aws.amazon.com/lakeformation/

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

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

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

    1. SAML and Amazon QuickSight users and groups(SAML 和 Amazon QuickSight 用户和组)下,按以下格式输入 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 组执行类似的步骤。

要授予 Okta 组在 Lake Formation 中的权限
  1. 在 Lake Formation 控制台的 Tables(表)页面,请确保仍选择了 nyctaxi表。

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

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

    1. SAML and Amazon QuickSight users and groups(SAML 和 Amazon QuickSight 用户和组)下,按以下格式输入 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(查看权限)以验证已授予的权限。

    nyctaxi 表的 Data permissions(数据权限)页面上显示了 athena-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. 通过 JDBC 连接到 Amazon Athena 下载并提取 Lake Formation 兼容 Athena 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. 选择 确定

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

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

要为 Okta 用户创建连接
  1. 选择 File(文件)、Connect 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;
      • 要使用基于 Amazon 配置文件的 URL,请执行以下步骤:

        1. 配置具有 Amazon 凭证文件的 Amazon 配置文件,如下例所示。

          [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 支持的参数的完整列表,请参阅 JDBC 文档

    下图显示了使用连接 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
    
                        验证是否显示了所有列。

接下来,您将验证 athena-ba-user(作为 lf-business-analyst 组的一部分)是否只能访问您之前在 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;
      • 要使用基于 Amazon 配置文件的 URL,请执行以下步骤:

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

          [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. 选择 Directory(目录),然后选择 Groups(组)。

  3. 在组页面上,选择 lf-developer 组中。

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

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

  6. 选择 Save(保存)。

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

要为 lf-developer-group 配置表权限
  1. 以数据湖管理员身份登录 Lake Formation 控制台。

  2. 在导航窗格中,选择

  3. 选择 nyctaxi 表。

  4. 选择 Actions(操作)、Grant(授权)。

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

    • 对于 SAML and Amazon QuickSight users and groups(SAML 和 Amazon QuickSight 用户和组),按以下格式输入 Okta SAML lf-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 权限组合将决定返回的列。

    
                        数据结果中的第四列。

结论

在本教程中,您使用 Okta 作为 SAML 提供程序配置了 Athena 与 Amazon Lake Formation 的整合。您使用 Lake Formation 和 IAM 控制数据湖 Amazon Glue Data Catalog 中 SAML 用户可用的资源。

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