使用 ODBC 配置 Azure AD 单账户访问 SSO
借助 Amazon 单账户访问功能,您可建立 Azure AD 到单个 Amazon 账户的联合身份验证,并使用 Azure AD 来管理对 Amazon IAM 角色的访问。对于每个 Amazon 账户,Azure AD 管理员需要建立到 Amazon IAM 的联合身份验证,将用户或组分配给该账户,然后配置 Azure AD 以授权角色访问权限。
本教程提供的说明仅适用于 Athena。有关配置 Azure Active Directory SSO 以与 Amazon 配合使用的一般说明,请参阅 Microsoft 文档中的 Tutorial: Azure Active Directory single sign-on (SSO) integration with Amazon Single-Account Access
本教程将介绍如何在支持和不支持 MFA 的情况下配置 Azure Active Directory 和 ODBC,以便实现 Athena 单点登录。支持 MFA 和不支持 MFA 时的设置略有不同。对于 Reply URL(回复 URL)和 SAML:aud 值,不支持 MFA 时使用默认值,而支持 MFA 时使用 http://localhost/athena。
第 1 步:创建一个 Azure 企业应用程序
首先,您需要在 Azure AD 门户中创建一个企业应用程序。配置完成后,该应用程序将控制您的 Azure 用户对 Athena 的访问。
在 Azure AD 门户中创建一个 Amazon 单账户访问应用程序
-
登录到 Azure AD 门户(https://portal.azure.com
)。 -
选择 Azure Active Directory。
-
在导航窗格中,选择 Enterprise applications(企业应用程序)。
-
选择 New application(新建应用程序)。
-
在 Browse Azure AD Gallery(浏览 Azure AD 库)页面搜索框中,输入 Amazon,然后选择 Amazon Single-Account Access(Amazon 单账户访问)。
-
在右侧窗格中,对于 Name(名称),输入应用程序的名称。默认名称为 Amazon Single-Account Access。
-
选择 Create (创建) 。
完成创建过程可能需要一两分钟的时间。
-
在 Amazon Single-Account Access(Amazon 单账户访问)页面的左侧导航窗格中,选择 Single sign-on(单点登录)。
-
对于 Select a single sign-on method(选择一个单点登录方法),选择 SAML。
-
在 Save single sign-on setting(保存单点登录设置)提示中,选择 Yes(是)。
-
在 Basic SAML Configuration(基本 SAML 配置)部分中,执行下列操作中的一项:
-
如果您的应用程序不需要多重身份验证,则对于 Identifier (Entity ID) [标识符(实体 ID)] 和 Reply URL(回复 URL),请确认已经预先填充了 URL https://signin.aws.amazon.com/saml,如下图所示:
-
如果您的应用程序要求使用 MFA,则选择 Edit(编辑),然后在 Basic SAML Configuration(基本 SAML 配置)窗格中执行以下任务:
-
对于 Identifier (Entity ID) [标识符(实体 ID)],输入
urn:amazon:webservices。 -
对于 Reply URL(回复 URL),输入
http://localhost/athena。 -
在 Basic SAML Configuration(基本 SAML 配置)窗格顶部,选择 Save(保存),然后选择 X 图标以关闭窗格。
-
在 Test single sign-on(测试单点登录)提示中,选择 No, I'll test later(不,我稍后再测试)。
-
-
-
请注意,在 User Attributes & Claims(用户属性与声明)部分中,系统已经为您配置了所需的声明。
-
在 SAML Signing Certificate(SAML 签名证书)部分中, 对于 Federation Metadata XML(联合身份验证元数据 XML),选择 Download(下载),然后将该 XML 文件保存到安全的位置。
稍后,您可以将此元数据文件上传到 IAM 控制台,以启用 Athena 和 Azure 之间的通信。
将委托的 User.Read 权限添加到应用程序
然后您需要向该企业应用程序授予委托读取权限,以使用 SSO 登录并读取用户配置文件信息。
向企业应用程序添加委托读取权限
-
在 Azure 门户顶部,选择 Default Directory(默认目录)。
-
在导航窗格中,选择 App registrations(应用程序注册)。
-
选择 All applications(所有应用程序)选项卡,然后选中您的应用程序。
-
在导航窗格中,选择 API permissions(API 权限)。
-
在 Configured permissions(已配置的权限)部分中,选择 Add a permission(添加一个权限)。
-
在右侧的 Request API permissions(请求 API 权限)窗格中,选择 Microsoft Graph。
-
对于 What type of permissions does your application require?(您的应用程序需要哪种类型的权限?),选择 Delegated permissions(委托权限)。
-
在 Selection permissions(选择权限)搜索框中,输入
User.Read。 -
展开 User(用户)部分。
-
选中 User.Read。
-
选择 Add permissions(添加权限)。
-
在 Configured permissions(配置权限)部分中,选择 Grant admin consent for Default Directory(授予对默认目录的管理员同意),然后在出现确认提示时选择 Yes(是)。
在 API Permissions(API 权限)页面上,Configured permissions(已配置的权限)部分会显示 User.Read 权限已经委托给您的应用程序。
-
要了解有关 User.Read 权限的更多信息,请选择 Configured permissions(已配置的权限)部分中的 User.Read 链接。
使用 MFA 时:指定 Athena 重定向 URI
请仅在您的连接将使用多重身份验证时执行本节中的步骤。
在 Azure AD 中指定多重身份验证的重定向 URI
-
在 Azure 门户顶部,选择 Default Directory(默认目录)。
-
在导航窗格中,选择 App registrations(应用程序注册)。
-
选择 All applications(所有应用程序)选项卡,然后选中您的应用程序。
-
在左侧导航窗格中,选择 Authentication(身份验证)。
-
在 Platform configurations(平台配置)部分中,选择 Add a platform(添加一个平台)。
-
在右侧 Configure platforms(配置平台)窗格的 Mobile and desktop applications(移动和桌面应用程序)部分中,选择 Mobile and desktop applications(移动和桌面应用程序)。
-
在 Configure Desktop + devices(配置桌面及设备)窗格中,对于 Custom redirect URIs(自定义重定向 URI),输入
http://localhost/athena,然后选择 Configure(配置)。
这时您已在 Azure 中设置好了企业应用程序。下面可以设置 IAM SAML 身份提供者和 IAM 角色,以使用此 Azure 联合身份验证。
第 2 步:使用 IAM 控制台配置 Azure 对 Athena 的访问权限
在这一部分,您将在 Amazon IAM 管理控制台中执行以下任务:
-
使用您从 Azure AD 下载的元数据为创建 Amazon 一个身份提供者。
-
创建一个 IAM 角色。在创建该角色时,您需要附加允许访问 Athena 和 Amazon S3 的策略。您需要将此角色分配给您的 Azure AD 用户,以便向他们提供对 Athena 的单点登录访问权限。
-
完成下列操作以允许 Azure AD 列出 Amazon IAM 角色:1)创建授予 ListRoles 权限的策略,然后 2)为 Azure AD 创建一个 IAM 用户。在为 Azure AD 创建 IAM 用户时,您需要附加 ListRoles 策略。
创建一个身份提供者
在这一部分中,您将使用您在 Azure 中创建的企业应用程序中的元数据,在 Amazon IAM 控制台中创建一个 SAML 身份提供者。
使用 Azure 元数据在 IAM 中创建 SAML 身份提供者
登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中,选择 Identity providers(身份提供程序),然后选择 Add provider(添加提供商)。
-
在 Add an Identity provider(添加身份提供者)页面上,对于 Configure provider(配置提供者),输入以下信息。
-
对于 Provider type(提供程序类型),选择 SAML。
-
对于 Provider name(提供者名称),为您的提供者输入一个名称(例如
AthenaAzureADSSO)。 -
对于 Metadata document(元数据文档),请使用 Choose file(选择文件)选项以上传您从 Azure AD 下载的身份提供者(IdP)元数据 XML 文件。
-
-
选择 Add provider(添加提供程序)。
创建一个用于访问 Athena 和 Amazon S3 的 IAM 角色
然后您需要创建一个用于访问 Athena 和 Amazon S3 的 IAM 角色。您需要将此角色分配给您的 Azure AD 用户,以便向他们提供对 Athena 的单点登录访问权限。
创建一个用于访问 Athena 和 Amazon S3 的 IAM 角色
-
在 IAM 控制台的导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
-
选择 SAML 2.0 federation(SAML 2.0 联合身份验证)。
-
在 Choose a SAML 2.0 provider(选择一个 SAML 2.0 提供者)部分中,对于 SAML provider(SAML 提供者),选择您创建的 SAML 身份提供者(例如 AthenaAzureADSSO)。
-
选择 Allow programmatic and Amazon Web Services Management Console access(允许编程和 Amazon Web Services Management Console 访问)。
-
对于
SAML:audAttribute(属性),执行下面的一项操作:-
如果您的应用程序不需要多重身份验证,请务必将 Value(值)设置为
https://signin.aws.amazon.com/saml(默认)。 -
如果您的应用程序要求使用 MFA,则对于 Value(值),输入
http://localhost/athena。
-
-
选择Next: Permissions(下一步: 权限)。
-
在 Attach permissions policies(附加权限策略)部分中,为您的应用程序附加所需的策略。本教程附加了
AmazonAthenaFullAccess和AmazonS3FullAccess策略。
-
请选择下一步:标签。
-
请选择下一步:审核。
-
对于 Role name (角色名称),输入您角色的名称(例如
AthenaAzureADRole)。 -
确认您选择的策略存在,然后选择 Create role(创建角色)。
允许 Azure 列出角色
要确保实现联合身份访问,Azure AD 服务必须要知道您账户中可用的角色。要启用此功能,您需要创建一个授予 ListRoles 权限的策略,然后为 Azure AD 服务创建一个 IAM 用户。在为 Azure AD 服务创建 IAM 用户时,您需要将 ListRoles 策略附加到该用户。
创建一个 ListRoles 策略
在这一步中,您需要使用 IAM 控制台创建一个策略以授予 ListRoles 权限。
创建一个 ListRoles 策略
-
在 IAM 控制台的导航窗格中,选择 Policies(策略),然后选择 Create policy(创建策略)。
-
在创建策略页面上,选择 JSON。
-
将下面的
ListRoles策略粘贴到 JSON 编辑器中。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" } ] } -
请选择下一步:标签。
-
请选择下一步:审核。
-
在 Review policy(检查策略)页面上,为此策略输入一个名称。此演练使用名称
AthenaListRolesAzure。
-
选择 Create policy(创建策略)。
为 Azure AD 服务创建一个用户并将 ListRoles 策略附加到该用户
您现在可以创建一个 IAM 用户,以便 Azure 可以用来列出可供其使用的角色。
为 Azure AD 服务创建一个用户并将 ListRoles 策略附加到该用户
-
在 IAM 控制台的导航窗格中,选择 Users(用户),然后选择 Add users(添加用户)。
-
在 Add user(添加用户)页面上,对于 User name(用户名称),输入一个用户名称。本教程使用的名称是 AthenaAzureADRoleProvision。
-
在 Select Amazon Access type(选择 Amazon 访问类型)部分中,选择 Access key - Programmatic access(访问密钥 - 编程访问)。
-
选择Next: Permissions(下一步: 权限)。
-
在 Set permissions (设置权限) 页面上,选择 Attach existing policies directly (直接附加现有策略)。
-
对于 Filter policies(筛选策略),输入您刚刚创建的 ListRoles 策略的名称(例如 AthenaListRolesAzure),然后选中该策略的复选框。
-
请选择下一步:标签。
-
选择 Next: Review (下一步: 审核)。
-
选择 Create user。
-
在 Success(成功)页面上,复制 Access key ID(访问密钥 ID)和 Secret access key(秘密访问密钥)。然后您需要将这些密钥添加到 Azure 中。
第 3 步:在 Azure AD 中配置角色预调配
然后您需要在 Azure AD 门户中,将 Amazon访问密钥添加到 Azure 并配置 Azure 预调配服务,以便它可以自动从 Amazon 导入角色。
在 Azure AD 门户中配置角色预调配
-
登录到 Azure AD 门户(https://portal.azure.com
)。 -
在导航窗格中,选择 Enterprise Applications(企业应用程序)。
-
选择您的企业应用程序。
-
在导航窗格中,选择 Provisioning(预调配)。
-
选择开始使用。
-
在 Provisioning(预调配)窗格中,对于 Provisioning Mode(预调配模式),选择 Automatic(自动)。
-
展开 Admin Credentials(管理员凭证)部分,然后输入所需信息。
-
对于 clientsecret,输入您在 IAM 控制台中为 Azure 创建的 IAM 用户的访问密钥 ID(在本演练中为 AthenaAzureADRoleProvision 的访问密钥)。
-
对于 Secret Token(秘密令牌),输入相应的秘密访问密钥。
-
-
选择 Test Connection(测试连接)并验证测试是否成功完成。
-
选择 Provisioning(预调配)窗格顶部的 Save(保存)。
-
选择 X 图标以关闭您输入了管理员凭证并测试了连接 Provisioning(预调配)窗格。您稍后可以在 Provisioning(预调配)主页面上选择 Edit provisioning(编辑预调配),从而返回此页面。
-
在 Provisioning(预调配)主页面上,选择 Start provisioning(开始预调配)。完成预调配过程可能需要几分钟的时间。要更新状态,您可以选择 Provisioning(预调配)页面顶部的 Refresh(刷新)。
预调配完成后,Azure AD 门户会在 Current cycle status(当前周期状态)下报告已经完成显示导入的角色数量。
第 4 步:在 Azure AD 中创建和配置用户
此时,您已创建了您的 Amazon SSO 应用程序。此外,由于您完成了预配置,Azure AD 会了解可供其使用的 IAM 角色。因此当您在 Azure AD 中创建用户时,您现在可以将这些用户分配给您的 Amazon SSO 应用程序以及授权访问 Athena 和 Amazon S3 的 IAM 角色。
在本节中,您将执行以下操作:
-
在 Azure AD 中创建测试用户 Athena Test User
-
将 Athena Test User 分配到您的 Amazon 单账户访问应用程序。
-
将 Athena Test User 分配到 AthenaAzureADRole,以确保它有权访问 Athena。
在 Azure AD 中创建一个测试用户
以下过程将在 Azure AD 门户中创建一个名为 Athena Test User 的 Athena 测试用户。
在 Azure AD 中创建一个测试用户
-
在 Azure 门户顶部,选择 Default Directory(默认目录)。
-
在 Default Directory(默认目录)导航窗格中,选择 Users(用户)。
-
选择 New user(新用户)以创建新的 Azure AD 测试用户。
-
选择 Create user(创建用户)或 Invite user(邀请用户)。
-
输入新用户的信息,然后选择 Create(创建)或 Invite(邀请)。在本教程中,我们使用 Invite(邀请)选项创建了一个名为 Athena Test User 的用户。
将 Athena 用户分配到您的 Azure AD 应用程序和 IAM 角色
现在您已经拥有了一个 Athena 测试用户,可以将其分配给您的 SSO 应用程序和 AthenaAzureADRole 角色,以允许该用户访问 Athena 和 Amazon S3。
将 Azure AD 用户分配到您的应用程序和 IAM 角色
-
在 Azure AD 门户中,选择 Default Directory(默认目录)、Enterprise applications(企业应用程序),然后选择您的应用程序。
-
在导航窗格中,选择 Users and Groups(用户和组),然后选择 Add user/group(添加用户/组)。
-
在 Add Assignment(添加分配)页面中,对于 Users(用户),选择 None Selected(未选择任何对象)。
-
在右侧的 Users(用户)窗格中,查找并选中您的 Athena 测试用户,然后选择 Select(选择)。
-
在 Add Assignment(添加分配)页面中,对于 Select a role(选择一个角色),选择 None Selected(未选择任何对象)。
-
在右侧的 Select a role(选择角色)窗格中,查找并选中您的 AthenaAzureADRole。这时角色和身份提供者名称均会显示。
-
选择 Select (选择)。
-
在 Add Assignment(添加分配)页面上,选择 Assign(分配)。
Athena Test User 会在 Amazon 单账户访问应用程序的用户列表中显示,并且分配了 AthenaAzureADRole 角色。
第 5 步: 配置 ODBC
要配置 ODBC 连接,您需要从 Azure 门户获取您的客户端和租户 ID,然后在 Microsoft Windows 中使用 ODBC 数据源程序输入这些值。
Azure AD 门户:获取您的客户端和租户 ID
您可以从 Azure 门户的App registrations(应用程序注册)部分获取您的客户端和租户 ID。具体操作方法详见以下步骤。
从 Azure AD 门户获取您的客户端和租户 ID
-
在 Azure AD 门户的 Default Directory(默认目录)页面上,在左侧导航窗格中选择 App registrations(应用程序注册)。
-
选择 All applications(所有应用程序)选项卡,然后选中您的应用程序。
-
在 Essentials(基本信息)部分,找到 Application (client) ID [应用程序(客户端)ID] 和 Directory (tenant) ID [目录(租户)ID] 对应的 UUID。
-
使用 Copy to clipboard(复制到剪贴板)图标来复制和存储这些值。您将在下一部分中使用这些值,以配置从 Athena ODBC 到 Azure AD 的连接。
Windows:为 Azure AD 配置 Athena ODBC
这一部分说明了如何在 Windows 中使用 ODBC 数据源程序为 Azure AD 配置 Athena ODBC 连接。
配置浏览器 Azure AD ODBC 到 Athena 的连接
-
为 Athena 安装 ODBC 驱动程序。有关下载链接,请参阅 通过 ODBC 连接到 Amazon Athena。
-
在 Windows 中,启动 ODBC 数据源程序。
-
在 ODBC 数据源管理器程序中,选择 Add(添加)。
-
选择 Simba Athena ODBC 驱动程序,然后选择 Finish(完成)。
-
在 SIMBA Athena ODBC 驱动程序 DSN 设置对话框中,输入描述的值。
-
对于 Data Source Name(数据源名称),输入数据源的名称(例如,
Athena ODBC 64)。 -
在 Description(说明)中,为数据源输入说明。
-
对于 Amazon Region(Amazon 区域),输入您正在使用的 Amazon 区域(例如
us-west-1)。 -
在 S3 Output Location(S3 输出位置)中,输入要存储输出的 Amazon S3 路径。
-
-
选择 Authentication Options(身份验证选项)。
-
在 Authentication Options(身份验证选项)对话框中,选择或输入描述的值。
-
对于 Authentication Type(身份验证类型),选择下列选项中的一个:
-
如果您使用 MFA,则选择 BrowserAzureAD。
-
如果您未使用 MFA,则选择 BrowserAzureAD 或 AzureAD。
-
-
对于 User(用户),输入 Azure AD 用户名称。
-
对于 Password(密码),请输入 Azure AD 密码。
-
对于 Tenant ID(租户 ID),输入您在 Azure AD 门户中从企业应用程序的 Overview(概述)页面复制的 Directory (tenant) ID [目录(租户)ID] 值。
-
对于 Client ID(客户端 ID),输入您在 Azure AD 门户中从企业应用程序的 Overview(概述)页面复制的 Application (client) ID [应用程序(客户端)ID] 值。
-
-
选择 OK(确定)。
-
选择 Test(测试)以测试连接,或者 OK(确定)以完成。
ODBC.INI 文件配置示例
完成后,您 Windows 目录中(例如 C:\\Windows\ODBC.INI)中的 ODBC.INI 文件应含有一个与以下类似的 DSN 配置条目:
[Athena BrowserAzureAD Test] Description=Simba Athena ODBC Driver (64-bit) DSN Driver=/opt/simba/athenaodbc/lib/64/libathenaodbc_sb64.so AwsRegion=[YOUR-REGION] Workgroup=[YOUR-WORKGROUP] S3OutputLocation=[YOUR-OUTPUTLOCATION] AuthenticationType=BrowserAzureAD UID=[AzureAD USERNAME] PWD=[AzureAD PASSWORD] idp_tenant=[YOUR TENANT ID] client_id=[YOUR CLIENT ID]