教程:使用 Lake Formation 和 JDBC 配置 Okta 用户对 Athena 的联合访问
本教程介绍如何配置 Okta、AWS Lake Formation、AWS Identity and Access Management 权限和 Athena JDBC 驱动程序,以启用基于 SAML 的 Athena 联合使用。Lake Formation 为基于 SAML 的用户提供了对 Athena 中可用数据的细粒度访问控制。为设置此配置,本教程使用 Okta 开发人员控制台、AWS IAM 和 Lake Formation 控制台以及 SQL Workbench/J 工具。
先决条件
本教程假定您已执行以下操作:
-
已创建 Amazon Web Services 账户。要创建帐户,请访问 Amazon Web Services 主页
。 -
在 Amazon S3 中为 Athena 设置查询结果位置。
-
向 Lake Formation 注册了 Amazon S3 数据存储桶位置。
-
在 AWS Glue Data Catalog 中定义了指向您在 Amazon S3 中数据的数据库和表。
-
如果尚未定义表,则对您要访问的数据运行 AWS Glue 爬网程序或者使用 Athena 定义数据库和一个或多个表。
-
本教程使用基于 AWS 开放数据存储库
中的纽约出租车旅行数据集 。本教程使用数据库名称 tripdb
和表名称nyctaxi
。
-
教程步骤
步骤 1:创建 Okta 账户
本教程使用 Okta 作为基于 SAML 的身份提供程序。如果您还没有 Okta 账户,您可以创建一个免费的账户。需要 Okta 帐户,以便您可以创建 Okta 应用程序进行 SAML 身份验证。
创建 Okta 账户
-
要使用 Okta,请导航到 Okta 开发人员注册页
并创建一个免费的 Okta 试用账户。开发人员版服务是免费的,不超过 Okta 在 developer.okta.com/pricing 总指定的限制。 -
当您收到激活电子邮件时,请激活您的账户。
Okta 域名将被分配给您。保存域名以供参考。稍后,您可以在连接到 Athena 的 JDBC 字符串中使用域名 (
<okta-idp-domain>
)。
步骤 2:向 Okta 添加用户和组
在此步骤中,您使用 Okta 控制台执行以下任务:
-
创建两个 Okta 用户。
-
创建两个 Okta 组。
-
向每个 Okta 组添加一个 Okta 用户。
要向 Okta 添加用户
-
激活 Okta 账户后,以管理用户身份登录到指定的 Okta 域。
-
在左侧导航窗格中,选择 Directory(目录),然后选择 People(人员)。
-
选择 Add Person(添加人员)添加将通过 JDBC 驱动程序访问 Athena 的新用户。
-
在 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(用户必须在首次登录时更改密码)的选项;您的安全要求可能会有所不同。
-
-
选择 Save and Add Another(保存并添加另一个)。
-
输入其他用户的信息。此示例添加了业务分析师用户
athena-ba-user@anycompany.com
。 -
选择保存。
在以下过程中,您可以通过添 “业务分析师”组和“开发人员”组来通过 Athena JDBC 驱动程序提供两个 Okta 组的访问权限。
要添加 Okta 组
-
在 Okta 导航窗格中,选择 Directory(目录),然后选择 Groups(组)。
-
在 Groups(组)页面上,选择 Add Group(添加组)。
-
在 Add Group(添加组)对话框中,输入所需信息。
-
对于 Name(名称),输入
lf-business-analyst
。 -
对于 Group Description(组描述),输入
业务分析人员
。
-
-
选择添加组。
-
在 Groups(组)页面上,再次选择 Add Group(添加组)。这一次,您将输入开发人员组的信息。
-
输入所需的信息。
-
对于 Name(名称),输入
lf-developer
。 -
对于 Group Description(组描述),输入
开发人员
。
-
-
选择添加组。
现在,您有两个用户和两个组,您已准备就绪,可以向每个组添加一个用户。
要将用户添加到组
-
在 Groups(组)页面上,选择您刚创建的 lf-developer 组。您需要将您作为开发人员创建的 Okta 用户之一添加到此组中。
-
选择 Manage People(管理人员)。
-
从 Not Members(非成员)列表中,选择 athena-okta-user。
用户的条目将从左侧的非成员列表移动到右侧的成员列表。
-
选择保存。
-
选择 Back to Group(返回组),或选择 Directory(目录),然后选择 Groups(组)。
-
选择 lf-business-analyst 组。
-
选择 Manage People(管理人员)。
-
向 lf-business-analyst 组的 Members(成员)列表添加 athena-ba-user,然后选择 Save(保存)。
-
选择 Back to Group(返回组),或选择 Directory(目录),Groups(组)。
Groups(组)页面现在显示每个组都有一个 Okta 用户。
步骤 3:设置 Okta 应用程序以进行 SAML 身份验证
在此步骤中,您使用 Okta 开发人员控制台执行以下任务:
-
添加 SAML 应用程序以便与 AWS 结合使用。
-
将应用程序分配给 Okta 用户。
-
将应用程序分配给 Okta 组。
-
下载生成的身份提供程序元数据,以便日后与 AWS 结合使用。
要添加用于 SAML 身份验证的应用程序
-
在 Okta 导航窗格中,选择 Applications(应用程序)、Applications(应用程序),以便您可以为对 Athena 进行的 SAML 身份验证配置 Okta 应用程序。
-
单击 Browse App Catalog(浏览应用程序目录)。
-
在搜索框中,输入
Redshift
。 -
选择 Amazon Web Services Redshift。本教程中的 Okta 应用程序使用 Amazon Redshift 的现有 SAML 集成。
-
在 Amazon Web Services Redshift 页面上,选择 Add(添加)为 Amazon Redshift 创建基于 SAML 的应用程序。
-
对于 Application label(应用程序标签),输入
Athena-LakeFormation-Okta
,然后选择 Done(完成)。
现在您已创建 Okta 应用程序,可以将其分配给您创建的用户和组。
要将应用程序分配给用户和组
-
在 Applications(应用程序)页面上,选择 Athena-LakeFormation-Okta 应用程序。
-
在 Assignments(分配)选项卡上,选择 Assign(分配)、Assign to People(分配给人员)。
-
在 Assign Athena-LakeFormation-Okta to People(将 Assign Athena-LakeFormation-Okta 分配给人员)对话框中,找到您之前创建的 athena-okta-user 用户。
-
选择 Assign(分配)将用户分配给应用程序。
-
选择 Save and Go Back(保存并返回)。
-
选择完成。
-
在 Athena-LakeFormation-Okta 应用程序的 Assignments(分配)选项卡上,选择 Assign(分配)、Assign to Groups(分配给组)。
-
对于 lf-business-analyst,选择 Assign(分配)以将 Athena-LakeFormation-Okta 应用程序分配到 lf-business-analyst 组,然后选择Done(完成)。
该组将显示在应用程序的组列表中。
现在,您已准备就绪,可以下载身份提供程序应用程序元数据,以用于 AWS。
下载应用程序元数据
-
选择 Okta 应用程序的 Sign On(登录)选项卡,然后右键单击 Identity Provider metadata(身份提供程序元数据)。
-
选择 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 角色。
-
将 AmazonAthenaFullAccess 托管策略添加到角色。
-
向角色添加 Lake Formation 策略和 AWS Glue。
-
向角色添加 Athena 查询结果的策略。
要创建 AWS SAML 身份提供程序
-
以 Amazon Web Services 账户管理员身份登录 Amazon Web Services 账户控制台,并导航到 IAM 控制台(https://console.aws.amazon.com/iam/
)。 -
在导航窗格中,选择 Identity providers(身份提供程序),然后单击 Add provider(添加提供程序)。
-
在 Define provider(定义提供程序)页面上,输入以下信息:
-
对于 Provider type(提供程序类型),选择 SAML。
-
对于 Provider name(提供程序名称),输入
AthenaLakeFormationOkta
。 -
对于 Metadata document(元数据文档),请使用 Select file(选择文件)选项上载您下载的身份提供程序 (IdP) 元数据 XML 文件。
-
-
选择 Add provider(添加提供程序)。
接下来,您将为 AWS Lake Formation 访问创建 IAM 角色。您将两个内联策略添加到角色。其中一个策略提供访问 Lake Formation 和 AWS Glue API 的权限。另一个策略提供了对 Amazon S3 中 Athena 和 Athena 查询结果位置的访问权限。
要为 AWS Lake Formation 创建 IAM 角色以进行访问
-
在 IAM 控制台的导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
-
在 Create role(创建角色)页面上,执行以下步骤:
-
对于 Select type of trusted entity(选择受信任实体的类型),选择 SAML 2.0 Federation。
-
对于 SAML provider(SAML 提供程序),选择 AthenaLakeFormationOkta。
-
对于 SAML provider(SAML 提供程序),选择选项 Allow programmatic and AWS Management Console access(允许编程和控制台访问)。
-
选择下一步: 权限。
-
-
在 Attach Permissions policies(附加权限策略)页面,对于 Filter pilicies(筛选策略),输入
Athena
。 -
选择名为 AmazonAthenaFullAccess 的托管式策略,然后选择 Next: Tags (下一步:标签)。
-
在 Add tags(添加标签)页面上,选择 Next: Review(下一步:审核)。
-
在 Review(审核)页面上,对于 Role name(角色名称),输入角色的名称(例如,
Athena-LakeFormation-OktaRole
),然后选择 Create role(创建角色)。
接下来,您可以添加允许访问 Lake Formation、AWS Glue API 和 Amazon S3 中 Athena 查询结果的内联策略。
每当您使用 IAM 策略时,请确保遵循 IAM 最佳实践。有关更多信息,请参阅《IAM 用户指南》中的 IAM 安全最佳实践。
要将内联策略添加到 Lake Formation 和 AWS Glue 的角色
-
从 IAM 控制台中的角色列表中,选择新创建的
Athena-LakeFormation-OktaRole
。 -
在角色的 Summary(摘要)页面上,在 Permissions(权限)选项卡上,选择 Add inline policy(添加内联策略)。
-
在创建策略页面上,选择 JSON。
-
添加一个内联策略,如下所示,该策略可提供访问 Lake Formation 和 AWS 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": "*" } }
-
选择查看策略。
-
对于 Name(名称),请为策略输入名称(例如,
LakeFormationGlueInlinePolicy
)。 -
选择创建策略。
要将内联策略添加到 Athena 查询结果位置的角色
-
在
Athena-LakeFormation-OktaRole
角色的 Summary(摘要)页面上,在 Permissions(权限)选项卡上,选择 Add inline policy(添加内联策略)。 -
在创建策略页面上,选择 JSON。
-
添加允许角色访问 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>
/*" ] } ] } -
选择查看策略。
-
对于 Name(名称),请为策略输入名称(例如,
AthenaQueryResultsInlinePolicy
)。 -
选择创建策略。
接下来,您需要复制 Lake Formation 访问角色的 ARN 和您创建的 SAML 提供程序的 ARN。当您在本教程的下一部分中配置 Okta SAML 应用程序时,这些都是必需的。
要复制角色 ARN 和 SAML 身份提供程序 ARN
-
在 IAM 控制台中,在
Athena-LakeFormation-OktaRole
角色的 Summary(摘要)页面中,选择 Role ARN(角色 ARN)旁的 Copy to clipboard(复制到剪贴板)图标。ARN 有以下格式:arn:aws:iam::
<account-id>
:role/Athena-LakeFormation-OktaRole -
安全地保存完整 ARN 以供日后参考。
-
在 IAM 控制台导航窗格中,选择 Identity providers(身份提供程序)。
-
选择 AthenaLakeFormationOkta 提供程序。
-
在 Summary(摘要)页面上,选择 Provider ARN(提供程序 ARN)旁的 Copy to clipboard(复制到剪贴板)图标。ARN 应如下所示:
arn:aws:iam::
<account-id>
:saml-provider/AthenaLakeFormationOkta -
安全地保存完整 ARN 以供日后参考。
步骤 5:将 IAM 角色和 SAML 身份提供程序添加到 Okta 应用程序
在此步骤中,您将返回到 Okta 开发人员控制台并执行以下任务:
-
将用户和组 Lake Formation URL 属性添加到 Okta 应用程序。
-
将身份提供程序的 ARN 和 IAM 角色的 ARN 添加到 Okta 应用程序。
-
复制 Okta 应用程序 ID。连接到 Athena 的 JDBC 配置文件中需要 Okta 应用程序 ID。
将用户和组 Lake Formation URL 属性添加到 Okta 应用程序
-
登录 Okta 开发人员控制台。
-
在 Applications(应用程序)选项卡上,然后选择
Athena-LakeFormation-Okta
应用程序。 -
选择应用程序的 Sign On(登录)选项卡,然后选择 Edit(编辑)。
-
选择 Attributes (optional)(属性(可选))来扩展它。
-
对于 Attribute Statements (optional)(属性语句(可选)),添加以下属性:
-
对于名称,请输入
https://lakeformation.amazon.com/SAML/Attributes/Username
。 -
对于 Value(值),输入
user.login
-
-
在 Group Attribute Statements (optional)(组属性语句(可选))项下,添加以下属性:
-
对于名称,请输入
https://lakeformation.amazon.com/SAML/Attributes/Groups
。 -
对于 Name format(名称格式),输入
Basic
-
对于 Filter(筛选条件),选择 Matches regex(匹配正则表达式),然后在筛选条件框中输入
.*
。
-
-
向下滚动到 Advanced Sign-On Settings(高级登录设置)部分,您将在其中将身份提供程序和 IAM 角色 ARN 添加到 Okta 应用程序。
将身份提供程序和 IAM 角色的 ARN 添加到 Okta 应用程序
-
对于 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 应用程序 ID。您稍后需要在连接到 Athena 的 JDBC 字符串中用到它。
要查找和复制 Okta 应用程序 ID
-
选择 Okta 应用程序的 General(常规)选项卡。
-
向下滚动到 App Embed Link(应用程序嵌入链接)部分。
-
从 Embed Link(嵌入链接),复制并安全地保存 URL 的 Okta 应用程序 ID 部分。Okta 应用程序 ID 是
amazon_aws_redshift/
之后的 URL 部分内容,但在下一个正斜杠之前。例如,如果 URL 包含amazon_aws_redshift/aaa/bbb
,则应用程序 ID 为aaa
。
注意
嵌入的链接不能用于直接登录 Athena 控制台以查看数据库。仅当您使用 JDBC 或 ODBC 驱动程序向 Athena 提交查询时,才认可 SAML 用户和组的 Lake Formation 权限。要查看数据库,可以使用 SQL WorkBench/J 工具,该工具会使用 JDBC 驱动程序连接到 Athena。有关 SQL Workbench/J 工具的介绍详见步骤 7:验证通过 Athena JDBC 客户端的访问。
步骤 6:通过 AWS Lake Formation 授予用户和组权限
在此步骤中,您可以使用 Lake Formation 控制台向 SAML 用户和组授予对表的权限。您可以执行以下任务:
-
指定 Okta SAML 用户以及关联用户的 ARN 对表的权限。
-
指定 Okta SAML 组以及关联组的 ARN 对表的权限。
-
验证您授予的权限。
为 Okta 用户授予 Lake Formation 中的权限
-
以数据湖管理员身份登录 AWS Management Console。
打开 Lake Formation 控制台,网址为 https://console.aws.amazon.com/lakeformation/
。 -
从导航窗格中,选择 Tables(表),然后选择您要授予权限的表。本教程使用
tripdb
数据库中的nyctaxi
表。 -
从 Actions(操作)中,选择 Grant(授权)。
-
在 Grant permissions(授予权限)对话框中,输入以下信息:
-
在 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>
-
对于 Columns(列),对于 Choose filter type(选择筛选条件类型),然后选择 Include columns(包括列)或者 Exclude columns(排除列)。
-
使用筛选条件下的 Choose one or more columns(选择一个或多个列)下拉列表指定要包含或排除的用户的列。
-
对于 Table permissions(表权限),选择 Select(选择)。本教程仅授予
SELECT
权限;您的要求可能会有所不同。
-
-
选择 Grant(授权)。
现在,您需要对 Okta 组执行类似的步骤。
要授予 Okta 组在 Lake Formation 中的权限
-
在 Lake Formation 控制台的 Tables(表)页面,请确保仍选择了 nyctaxi表。
-
从 Actions(操作)中,选择 Grant(授权)。
-
在 Grant permissions(授予权限)对话框中,输入以下信息:
-
在 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 -
对于 Columns(列)、Choose filter type(选择筛选条件类型)中,选择 Include columns(包括列)。
-
对于 Choose one or more columns(选择一个或多个列),选择表的前三列。
-
对于 Table permissions(表权限),选择要授予的特定访问权限。本教程仅授予
SELECT
权限;您的要求可能会有所不同。
-
-
选择 Grant(授权)。
-
要验证您授予的权限,请选择 Actions(操作)、View permissions(查看权限)。
nyctaxi
表的 Data permissions(数据权限)页面上显示了 athena-okta-user 和 lf-business-analyst 组的权限。
步骤 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 中,以业务分析师用户身份运行测试查询,并验证权限更改如何影响结果。
要准备测试客户端
-
从 通过 JDBC 连接到 Amazon Athena 下载并提取 Lake Formation 兼容 Athena JDBC 驱动程序(2.0.14 或更高版本)。
-
下载并安装免费的 SQL Workbench/J
SQL 查询工具,在已修改的 Apache 2.0 许可证下可用。 -
在 SQL Workbench 中,选择 File(文件),然后选择 Manage Drivers(管理驱动程序)。
-
在 Manage Drivers(管理驱动程序)对话框中,执行以下步骤:
-
选择新驱动程序图标。
-
对于名称,请输入
Athena
。 -
对于 Library(库),浏览并选择您刚下载的 Simba Athena JDBC
.jar
文件。 -
选择 确定。
-
现在,您已准备就绪,可以为 Athena Okta 用户创建和测试连接。
要为 Okta 用户创建连接
-
选择 File(文件)、Connect window(连接窗口)。
-
在 Connection profile(连接配置文件)对话框中,通过输入以下信息创建连接:
-
在名称框中,输入
Athena_Okta_User_Connection
。 -
对于 Driver(驱动程序),选择 Simba Athena JDBC 驱动程序。
-
对于 URL,请执行以下操作之一:
-
要使用连接 URL,请输入单行连接字符串。为便于阅读,以下示例添加了换行符。
jdbc:awsathena://AwsRegion=
region-id
; S3OutputLocation=s3://amzn-s3-demo-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,请执行以下步骤:
-
配置具有 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
-
对于 URL,输入单行连接字符串,如下例所示。为便于阅读,这些示例添加了换行符。
jdbc:awsathena://AwsRegion=
region-id
; S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results; profile=athena_lf_dev
; SSL_Insecure=true; LakeFormationEnabled=true;
-
请注意,这些示例是连接到 Athena 所需 URL 的基本表示形式。有关 URL 支持的参数的完整列表,请参阅 JDBC 文档。
-
下图显示了使用连接 URL 的 SQL Workbench 连接配置文件。
-
现在,您已为 Okta 用户建立了连接,您可以通过检索某些数据对其进行测试。
要测试 Okta 用户的连接
-
选择 Test(测试),然后验证连接是否成功。
-
从 SQL Workbench 的 Statement(语句)窗口中,运行以下 SQL
DESCRIBE
命令。验证是否显示了所有列。DESCRIBE "tripdb"."nyctaxi"
-
从 SQL Workbench 的 Statement(语句)窗口中,运行以下 SQL
SELECT
命令。验证是否显示了所有列。SELECT * FROM tripdb.nyctaxi LIMIT 5
接下来,您将验证 athena-ba-user(作为 lf-business-analyst 组的一部分)是否只能访问您之前在 Lake Formation 成中指定的表的前三列。
要验证对 athena-ba-user 的访问
-
在 SQL Workbench 中的 Connection profile(连接配置文件)对话框中,创建另一个连接配置文件。
-
对于连接配置文件名称,输入
Athena_Okta_Group_Connection
。 -
对于 Driver(驱动程序),选择 Simba Athena JDBC 驱动程序。
-
对于 URL,请执行以下操作之一:
-
要使用连接 URL,请输入单行连接字符串。为便于阅读,以下示例添加了换行符。
jdbc:awsathena://AwsRegion=
region-id
; S3OutputLocation=s3://amzn-s3-demo-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,请执行以下步骤:
-
配置 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
-
对于 URL,输入如下所示的单行连接字符串。为便于阅读,这些示例添加了换行符。
jdbc:awsathena://AwsRegion=
region-id
; S3OutputLocation=s3://amzn-s3-demo-bucket/athena_results; profile=athena_lf_ba
; SSL_Insecure=true; LakeFormationEnabled=true;
-
-
-
-
选择 Test(测试)以确认连接是否成功。
-
从 SQL Statement(SQL 语句)窗口中,如您之前的操作那样运行相同的
DESCRIBE
和SELECT
SQL 命令并检查结果。由于 athena-ba-user 是 lf-business-analyst 组中的成员,将仅返回您在 Lake Formation 控制台中指定的前三列。
接下来,您需要返回到 Okta 控制台以将 athena-ba-user
添加到 lf-developer
Okta 组。
要将 athena-ba-user 添加到 lf-developer 组
-
以分配的 Okta 域的管理用户身份登录到 Okta 控制台。
-
选择 Directory(目录),然后选择 Groups(组)。
-
在组页面上,选择 lf-developer 组中。
-
选择 Manage People(管理人员)。
-
从 Not Members(非成员)列表中,选择 athena-ba-user,以将其添加到 lf-developer group(lf-developer 组)。
-
选择保存。
现在,您将返回到 Lake Formation 控制台,以为 lf-developer 组配置表权限。
要为 lf-developer-group 配置表权限
-
以数据湖管理员身份登录 Lake Formation 控制台。
-
在导航窗格中,选择表。
-
选择 nyctaxi 表。
-
选择 Actions(操作)、Grant(授权)。
-
在 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(选择)。
-
-
选择 Grant(授权)。
现在,您可以使用 SQL Workbench 验证 lf-developer 组的权限变更了。更改应反映在可用于 athena-ba-user 的数据中,该用户现在是 lf-developer 组的成员。
要验证 athena-ba-user 用户的权限更改
-
关闭 SQL Workbench 程序,然后重新打开。
-
连接到 athena-ba-user 的配置文件。
-
从 Statement(语句)窗口中,发布与之前运行的相同 SQL 语句:
这一次,将显示 trip_type 列。
由于 athena-ba-user 现在同时是 lf-developer 和 lf-business-analyst 组中的成员,这些组的 Lake Formation 权限组合将决定返回的列。
结论
在本教程中,您使用 Okta 作为 SAML 提供程序配置了 Athena 与 AWS Lake Formation 的整合。您使用 Lake Formation 和 IAM 控制数据湖 AWS Glue Data Catalog 中 SAML 用户可用的资源。
相关资源
有关信息,请参阅以下资源:
-
《AWS Lake Formation 开发人员指南》中的 授予和撤消数据目录权限。
-
《IAM 用户指南》中的 身份提供程序和联合服务。
-
《IAM 用户指南》中的 创建 IAM SAML 身份提供程序。
-
AWS 安全博客上的 使用 Windows Active Directory、ADFS 和 SAML 2.0 启用对 AWS 的联合查询
。