使用 ODBC 客户端为 Microsoft AD FS 用户配置对 Amazon Athena 的联合访问权限 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 ODBC 客户端为 Microsoft AD FS 用户配置对 Amazon Athena 的联合访问权限

要使用 ODBC 客户端为 Microsoft Active Directory 联合身份验证服务(AD FS)用户设置对 Amazon Athena 的联合访问权限,您首先要在 AD FS 和 Amazon 账户之间建立信任。获得信任后,您的 AD 用户便可使用其 AD 凭证对 Amazon 进行联合身份验证,并担任 Amazon Identity and Access Management(IAM)角色权限以访问 Athena API 等 Amazon 资源。

要创建这种信任,您需要将 AD FS 作为 SAML 提供商添加到 Amazon Web Services 账户 中,并创建可供联合用户担任的 IAM 角色。在 AD FS 端,您可以将 Amazon 添加为依赖方并编写 SAML 声明规则,以便将正确的用户属性发送到 Amazon 进行授权(尤其是 Athena 和 Amazon S3)。

配置 AD FS 对 Athena 的访问权限涉及以下主要步骤:

1. 设置 IAM SAML 提供商和角色

2. 配置 AD FS

3. 创建 Active Directory 用户和组

4. 配置 AD FS ODBC 与 Athena 的连接

1. 设置 IAM SAML 提供商和角色

在本节中,您需要将 AD FS 作为 SAML 提供商添加到 Amazon 账户中,并创建可供联合用户担任的 IAM 角色。

设置 SAML 提供商
  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Identity providers(身份提供程序)。

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

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

    选择 SAML。
  5. 对于 Provider name(提供程序名称),输入 adfs-saml-provider

  6. 在浏览器中,输入以下地址以下载适用于 AD FS 服务器的联合身份验证 XML 文件。要执行此步骤,您的浏览器必须具有访问 AD FS 服务器的权限。

    https://adfs-server-name/federationmetadata/2007-06/federationmetadata.xml
  7. 在 IAM 控制台中,对于 Metadata document(元数据文档),选择 Choose file(选择文件),然后将联合身份验证元数据文件上传到 Amazon。

  8. 要完成操作,请选择 Add provider(添加提供商)。

接下来,创建联合用户可担任的 IAM 角色。

为联合用户创建 IAM 角色
  1. 请在 IAM 控制台的导航窗格中,选择 Roles(角色)。

  2. 选择创建角色

  3. 对于 Trusted entity type(受信任的实体类型),选择 SAML 2.0 Federation(SAML 2.0 联合身份验证)。

  4. 对于 SAML 2.0-based provider(基于 SAML 2.0 的提供商),选择您创建的 adfs-saml-provider 提供商。

  5. 选择允许编程访问和 Amazon 管理控制台访问,然后选择下一步

    选择 SAML 作为受信任的实体类型。
  6. Add permissions(添加权限)页面上,筛选此角色所需的 IAM 权限策略,然后选中相应的复选框。本教程附加了 AmazonAthenaFullAccessAmazonS3FullAccess 策略。

    为角色附加 Athena 完全访问策略。
    为角色附加 Amazon S3 完全访问策略。
  7. 选择下一步

  8. Name, review, and create(名称、审核和创建)页面中,在 Role name(角色名称)中输入角色的名称。本教程使用的名称为 adfs-data-access

    Step 1: Select trusted entities(步骤 1:选择受信任实体)中,Principal(主体)字段应自动填充为 "Federated:" "arn:aws:iam::account_id:saml-provider/adfs-saml-provider"Condition 字段应包含 "SAML:aud""https://signin.aws.amazon.com/saml"

    受信任实体 JSON。

    Step 2: Add permissions(步骤 2:添加权限)将显示已附加到该角色的策略。

    附加到角色的策略列表。
  9. 选择创建角色。横幅消息会确认角色是否创建。

  10. Roles(角色)页面上,选择您刚刚创建的角色名称。该角色的摘要页面会显示已附加的策略。

    角色的摘要页面。

2. 配置 AD FS

现在,您可以将 Amazon 添加为依赖方并编写 SAML 声明规则,以便将正确的用户属性发送到 Amazon 进行授权。

基于 SAML 的联合身份验证有两个参与方:IdP(Active Directory)和依赖方(Amazon),后者是使用来自 IdP 的身份验证的服务或应用程序。

要配置 AD FS,请先添加依赖方信任,然后为依赖方配置 SAML 声明规则。AD FS 通过声明规则形成发送给依赖方的 SAML 断言。SAML 断言表明有关 AD 用户的信息是真实信息,并且已对用户进行身份验证。

添加依赖方信任

要在 AD FS 中添加依赖方信任,您可以使用 AD FS 服务器管理器。

在 AD FS 中添加依赖方信任
  1. 登录 AD FS 服务器。

  2. Start(开始)菜单上,打开 Server Manager(服务器管理器)。

  3. 选择 Tools(工具),然后选择 AD FS Management(AD FS 管理)。

    依次选择 Tools(工具)、AD FS Management(AD FS 管理)。
  4. 在导航窗格中的 Trust Relationships(信任关系)下,选择 Relying Party Trusts(依赖方信任)。

  5. Actions(操作)下,选择 Add Relying Party Trust(添加依赖方信任)。

    选择 Add Relying Party Trust(添加依赖方信任)。
  6. 添加信赖方信任向导页面上,选择开始

    选择启动。
  7. Select Data Source(选择数据来源)屏幕上,选择 Import data about the relying party published online or on a local network(导入有关在线或在本地网络上发布的信赖方的数据)。

  8. 对于 Federation metadata address (host name or URL) [联合身份验证元数据地址(主机名或 URL)],请输入 URL https://signin.aws.amazon.com/static/saml-metadata.xml

  9. 选择下一步

    配置数据来源。
  10. Specify Display Name(指定显示名称)页面上,为 Display name(显示名称)输入依赖方的显示名称,然后选择 Next(下一步)。

    输入依赖方显示名称。
  11. Configure Multi-factor Authentication Now(立即配置多重身份验证)页面上,本教程选择 I do not want to configure multi-factor authentication for this relying party trust at this time(现在不想为此依赖方信任配置多重身份验证)。

    为增强安全性,我们建议您配置多重身份验证以帮助保护 Amazon 资源。由于本教程使用示例数据集,因此不会启用多重身份验证。

    配置多重身份验证。
  12. 选择下一步

  13. Choose Issuance Authorization Rules(选择颁发授权规则)页面上,选择 Permit all users to access this relying party(允许所有用户访问此信赖方)。

    此选项允许 Active Directory 中的所有用户将 AD FS 作为依赖方与 Amazon 结合使用。您应考虑安全要求并对此配置进行相应调整。

    配置用户对依赖方的访问权限。
  14. 选择下一步

  15. Ready to Add Trust(准备添加信任)页面上,选择 Next(下一步)将依赖方信任添加到 AD FS 配置数据库。

    选择下一步。
  16. Finish(完成)页面上,选择 Close(关闭)。

    选择关闭。

为依赖方配置 SAML 声明规则

在此任务中,您将创建两组声明规则。

第一组规则 1-4 包含 AD FS 声明规则,这些规则需要基于 AD 组成员关系担任 IAM 角色。如果您想建立对 Amazon Web Services Management Console 的联合访问权限,那么这些规则与您创建的规则相同。

第二组规则 5-6 是 Athena 访问控制所需的声明规则。

创建 AD FS 声明规则
  1. 在“AD FS 管理”控制台导航窗格中,依次选择 Trust Relationships(信任关系)、Relying Party Trusts(依赖方信任)。

  2. 查找您在上一节中创建的依赖方。

  3. 右键单击依赖方并选择 Edit Claim Rules(编辑声明规则),或从 Actions(操作)菜单中选择 Edit Claim Rules(编辑声明规则)。

    选择 Edit Claim Rules(编辑声明规则)。
  4. 选择添加规则

  5. 在“添加转换声明规则向导”的 Configure Rule(配置规则)页面上,输入以下信息以创建声明规则 1,然后选择 Finish(完成)。

    • 对于 Claim Rule name(声明规则名称),输入 NameID

    • 对于 Rule template(规则模板),使用 Transform an Incoming Claim(转换传入声明)。

    • 对于 Incoming claim type(传入声明类型),选择 Windows account name(Windows 账户名称)。

    • 对于 Outgoing claim type(传出声明类型),选择 Name ID(名称 ID)。

    • 对于传出名称 ID 格式,请选择持久性标识符

    • 选择 Pass through all claim values(传递所有声明值)。

    创建第一条声明规则。
  6. 选择 Add Rule(添加规则),然后输入以下信息以创建声明规则 2,然后选择 Finish(完成)。

    • 对于 Claim Rule name(声明规则名称),输入 RoleSessionName

    • 对于 Rule template(规则模板),使用 Send LDAP Attribute as Claims(将 LDAP 属性作为声明发送)。

    • 对于特性存储,请选择 Active Directory

    • 对于 Mapping of LDAP attributes to outgoing claim types(将 LDAP 属性映射到传出声明类型),添加属性 E-Mail-Addresses。对于 Outgoing Claim Type(传出声明类型),输入 https://aws.amazon.com/SAML/Attributes/RoleSessionName

    创建第二条声明规则。
  7. 选择 Add Rule(添加规则),然后输入以下信息以创建声明规则 3,然后选择 Finish(完成)。

    • 对于 Claim Rule name(声明规则名称),输入 Get AD Groups

    • 对于 Rule template(规则模板),使用 Send Claims Using a Custom Rule(通过自定义规则发送声明)。

    • 对于 Custom rule(自定义规则),输入以下代码:

      c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]=> add(store = "Active Directory", types = ("http://temp/variable"), query = ";tokenGroups;{0}", param = c.Value);
      创建第三条声明规则。
  8. 选择添加规则。输入以下信息以创建声明规则 4,然后选择 Finish(完成)。

    • 对于 Claim Rule name(声明规则名称),输入 Role

    • 对于 Rule template(规则模板),使用 Send Claims Using a Custom Rule(通过自定义规则发送声明)。

    • 对于 Custom rule(自定义规则),输入以下代码以及您之前创建的 SAML 提供商的账号和账户名称:

      c:[Type == "http://temp/variable", Value =~ "(?i)^aws-"]=> issue(Type = "https://aws.amazon.com/SAML/Attributes/Role", Value = RegExReplace(c.Value, "aws-", "arn:aws:iam::AWS_ACCOUNT_NUMBER:saml-provider/adfs-saml-provider,arn:aws:iam:: AWS_ACCOUNT_NUMBER:role/"));
    创建第四条声明规则。

3. 创建 Active Directory 用户和组

现在,您可以创建要访问 Athena 的 AD 用户以及置放这些用户的 AD 组,以便按组控制访问级别。创建对数据访问模式进行分类的 AD 组后,您可以将用户添加到这些组中。

创建要访问 Athena 的 AD 用户
  1. 在“服务器管理器”控制面板上,选择 Tools(工具),然后选择 Active Directory Users and Computers(Active Directory 用户和计算机)。

    依次选择 Tools(工具)、Active Directory Users and Computers(Active Directory 用户和计算机)。
  2. 在导航窗格中,选择用户

  3. Active Directory Users and Computers(Active Directory 用户和计算机)工具栏上,选择 Create user(创建用户)选项。

    选择 创建用户。
  4. New Object – User(新对象 – 用户)对话框中,对于 First name(名字)、Last name(姓氏)和 Full name(全名),输入名称。本教程使用的是 Jane Doe

    输入用户名称。
  5. 选择下一步

  6. 对于 Password(密码),输入密码,然后重新键入以确认。

    为简单起见,本教程取消选择 User must change password at next sign on(用户下次登录时必须更改密码)。在真实场景中,您应要求新建用户更改其密码。

    输入密码。
  7. 选择下一步

  8. 选择完成

    选择完成。
  9. Active Directory Users and Computers(Active Directory 用户和计算机)中,选择用户名称。

  10. 在用户的 Properties(属性)对话框中,对于 E-mail(电子邮件),输入电子邮件地址。本教程使用的是 jane@example.com

    输入电子邮箱地址。
  11. 选择确定

创建 AD 组来表示数据访问模式

您可以创建 AD 组,其成员在登录 Amazon 时担任 adfs-data-access IAM 角色。以下示例创建了一个名为 aws-adfs-data-access 的 AD 组。

创建 AD 组
  1. 在“服务器管理器”控制面板上,从 Tools(工具)菜单中,选择 Active Directory Users and Computers(Active Directory 用户和计算机)。

  2. 在工具栏上,选择 Create new group(创建新组)选项。

    选择 Create New Group(创建新组)。
  3. New Object – Group(新对象 – 组)对话框中,输入以下信息:

    • 对于 Group Name(组名称),输入 aws-adfs-data-access

    • 对于 Group scope(组范围),选择 Global(全局)。

    • 对于 Group type(组类型),选择 Security(安全)。

    在 AD 中创建全局安全组。
  4. 选择确定

将 AD 用户添加到相应的组

现在,您已创建 AD 用户和 AD 组,可将该用户添加到该组。

将 AD 用户添加到 AD 组
  1. 在“服务器管理器”控制面板上,在 Tools(工具)菜单中,选择 Active Directory Users and Computers(Active Directory 用户和计算机)。

  2. 对于 First name(名字)和 Last name(姓氏),选择一个用户(例如 Jane Doe)。

  3. 在用户的 Properties(属性)对话框中,在 Member Of(隶属于)选项卡上,选择 Add(添加)。

    选择 添加。
  4. 根据要求添加一个或多个 AD FS 组。本教程添加了 aws-adfs-data-access 组。

  5. Select Groups(选择组)对话框中,对于 Enter the object names to select(输入要选择的对象名称),输入您创建的 AD FS 组名称(例如 aws-adfs-data-access),然后选择 Check Names(检查名称)。

    选择 Check Names(检查名称)。
  6. 选择确定

    在用户的 Properties(属性)对话框中,AD 组名称将在 Member of(隶属于)列表中显示。

    AD 组已添加到用户属性。
  7. 选择 Apply(应用),然后选择 OK(确定)。

4. 配置 AD FS ODBC 与 Athena 的连接

创建 AD 用户和组后,您就可以使用 Windows 中的 ODBC 数据来源程序为 AD FS 配置 Athena ODBC 连接。

配置 AD FS ODBC 与 Athena 的连接
  1. 为 Athena 安装 ODBC 驱动程序。有关下载链接,请参阅 通过 ODBC 连接到 Amazon Athena

  2. 在 Windows 中,依次选择 Start(开始)、ODBC Data Sources(ODBC 数据来源)。

  3. ODBC 数据来源管理器程序中,选择 Add(添加)。

    选择 Add(添加)以添加 ODBC 数据来源。
  4. Create New Data Source(创建新数据来源)对话框中,选择 Simba Athena ODBC 驱动程序,然后选择 Finish(完成)。

    选择 Simba Athena ODBC Driver(Simba Athena ODBC 驱动程序)。
  5. Simba Athena ODBC Driver DSN Setup(Simba Athena ODBC 驱动程序 DSN 设置)对话框中,输入下列值:

    • 对于 Data Source Name(数据来源名称),输入数据来源的名称(例如, Athena-odbc-test)。

    • Description(说明)中,为数据来源输入说明。

    • Amazon Web Services 区域 中,输入您正在使用的 Amazon Web Services 区域(例如 us-west-1)。

    • S3 Output Location(S3 输出位置)中,输入要存储输出的 Amazon S3 路径。

    为 Simba Athena ODBC Driver DSN Setup(Simba Athena ODBC 驱动程序 DSN 设置)输入值。
  6. 选择 Authentication Options(身份验证选项)。

  7. Authentication Options(身份验证选项)对话框中,指定下列值:

    • 对于 Authentication Type(身份验证类型),选择 ADFS

    • 对于 User(用户),输入用户的电子邮件地址(例如 jane@example.com)。

    • 对于 Password(密码),输入用户 ADFS 密码的值。

    • 对于 IdP Host(IdP 主机),输入 AD FS 服务器名称(例如 adfs.example.com)。

    • 对于 IdP Port(IdP 端口),使用默认值 443

    • 选择 SSL Insecure(SSL 不安全)选项。

    配置身份验证选项。
  8. 选择 OK(确定)以关闭 Authentication Options(身份验证选项)。

  9. 选择 Test(测试)以测试连接,或者 OK(确定)以完成。