AD FS - Amazon Redshift

AD FS

本教程将向您展示如何将 AD FS 用作身份提供者(IdP)来访问 Amazon Redshift 集群。

第 1 步:设置 AD FS 和您的 AWS 账户相互信任

以下过程介绍如何建立信任关系。

  1. 创建或使用现有的 Amazon Redshift 集群,以使 AD FS 用户连接到该集群。要配置连接,需要此集群的某些属性,例如集群标识符。有关更多信息,请参阅创建集群

  2. 在 Microsoft 管理控制台上设置 AD FS 以控制 Amazon Redshift 访问:

    1. 选择 ADFS 2.0,然后选择添加信赖方信任。在添加信赖方信任向导页面上,选择开始

    2. 选择数据源页面上,选择导入有关在线或在本地网络上发布的信赖方的数据

    3. 对于联合元数据地址(主机名或 URL),请输入 https://signin.aws.amazon.com/saml-metadata.xml。元数据 XML 文件是将 AWS 描述为信赖方的标准 SAML 元数据文档。

    4. 指定显示名称页面上,输入显示名称的值。

    5. 选择颁发授权规则页面上,选择一个颁发授权规则以允许或拒绝所有用户访问该信赖方。

    6. 准备好添加信任页面上,查看您的设置。

    7. 完成页面上,选择向导关闭时打开此信赖方信任的“编辑声明规则”对话框

    8. 在上下文(右键单击)菜单上,选择信赖方信任

    9. 对于您的信赖方,打开上下文(右键单击)菜单,然后选择编辑声明规则。在编辑声明规则页面上,选择添加规则

    10. 对于声明规则模板,请选择转换传入声明,然后在编辑规则 - NameId 页面上执行以下操作:

      • 对于声明规则名称,请输入 NameId

      • 对于传入声明名称,请选择 Windows 账户名

      • 对于传出声明名称,请选择名称 ID

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

      • 选择传递所有声明值

    11. 编辑声明规则页面上,选择添加规则。在选择规则模板页面上,对于声明规则模板,请选择以声明方式发送 LDAP 特性

    12. 配置规则页面上,执行以下操作:

      • 对于声明规则名称,请输入 RoleSessionName

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

      • 对于 LDAP 特性,请选择电子邮件地址

      • 对于传出声明类型,选择 https://aws.amazon.com/SAML/Attributes/RoleSessionName

    13. 编辑声明规则页面上,选择添加规则。在选择规则模板页面上,对于声明规则模板,请选择使用自定义规则发送声明

    14. 编辑规则 - 获取 AD 组页面上,对于声明规则名称,请输入获取 AD 组

    15. 对于自定义规则,请输入以下内容。

      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);
    16. 编辑声明规则页面上,选择添加规则。在选择规则模板页面上,对于声明规则模板,请选择使用自定义规则发送声明

    17. 编辑规则 - 角色页面上,对于声明规则名称,请键入角色

    18. 对于自定义规则,请输入以下内容。

      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::123456789012:saml-provider/ADFS,arn:aws:iam::123456789012:role/ADFS-"));

      请注意 SAML 提供商的 ARN 和要担任的角色。在该示例中,arn:aws:iam:123456789012:saml-provider/ADFS 是 SAML 提供商的 ARN,arn:aws:iam:123456789012:role/ADFS- 是角色的 ARN。

  3. 确保您已下载 federationmetadata.xml 文件。检查以确认文档内容不包含无效的字符。这是在配置与 AWS 的信任关系时使用的元数据文件。

  4. 在 IAM 控制台上创建 IAM SAML 身份提供者。您提供的元数据文档是您在设置 Azure 企业应用程序时保存的联合元数据 XML 文件。有关详细步骤,请参阅《IAM 用户指南》中的创建和管理 IAM 身份提供者(控制台)

  5. 在 IAM 控制台上为 SAML 2.0 联合身份创建 IAM 角色。有关详细步骤,请参阅 IAM 用户指南中的创建用于 SAML 的角色

  6. 创建一个 IAM 策略,您可以将其附加到您在 IAM 控制台上为 SAML 2.0 联合身份验证创建的 IAM 角色。有关详细步骤,请参阅《IAM 用户指南》中的创建 IAM 策略(控制台)。有关 Azure AD 示例,请参阅设置 JDBC 或 ODBC 单点登录身份验证

第 2 步:设置 JDBC 或 ODBC,以便向 AD FS 进行身份验证

JDBC

以下过程介绍如何设置与 AD FS 的 JDBC 关系。

  • 将数据库客户端配置为通过 JDBC 并使用 AD FS 单点登录连接到集群。

    您可以使用任何采用 JDBC 驱动程序的客户端通过 AD FS 单点登录进行连接,也可以使用像 Java 这样的语言通过脚本进行连接。有关安装和配置信息,请参阅为 Amazon Redshift 配置 JDBC 驱动程序版本 2.1 连接

    例如,您可以使用 SQLWorkbench/J 作为客户端。当您配置 SQLWorkbench/J 时,数据库的 URL 使用以下格式。

    jdbc:redshift:iam://cluster-identifier:us-west-1/dev

    如果您使用 SQLWorkbench/J 作为客户端,请执行以下步骤:

    1. 启动 SQL Workbench/J。在选择连接配置文件页面中,添加一个配置文件组,例如,ADFS

    2. 对于连接配置文件,请输入您的连接配置文件名称,例如 ADFS

    3. 选择管理驱动程序,然后选择 Amazon Redshift。选择旁边的打开文件夹图标,然后选择适当的 JDBC .jar 文件。

    4. 选择连接配置文件页面上,向连接配置文件添加信息,如下所示:

      • 对于用户,请输入您的 AD FS 用户名。这是您用于单点登录的账户的用户名,该账户有权限访问您在尝试进行身份验证时使用的集群。

      • 对于密码,请输入您的 AD FS 密码。

      • 对于驱动程序,请选择 Amazon Redshift (com.amazon.redshift.jdbc.Driver)

      • 对于 URL,请输入 jdbc:redshift:iam://your-cluster-identifier:your-cluster-region/your-database-name

    5. 选择扩展属性。对于 plugin_name,请输入 com.amazon.redshift.plugin.AdfsCredentialsProvider。该值指定驱动程序将 AD FS 单点登录作为身份验证方法。

ODBC
设置 ODBC 以在 AD FS 中进行身份验证
  • 将数据库客户端配置为通过 ODBC 并使用 AD FS 单点登录连接到集群。

    Amazon Redshift 提供了适用于 Linux、Windows 和 macOS 操作系统的 ODBC 驱动程序。在安装 ODBC 驱动程序之前,请确定您的 SQL 客户端工具是 32 位还是 64 位。安装符合 SQL 客户端工具要求的 ODBC 驱动程序。

    在 Windows 上的 Amazon Redshift ODBC 驱动程序 DSN 安装页的连接设置下,输入以下信息:

    • 对于数据源名称,输入 your-DSN。这将指定用作 ODBC 配置文件名称的数据源名称。

    • 对于身份验证类型,选择身份提供者:SAML。这是 ODBC 驱动程序在通过 AD FS 单点登录进行身份验证时使用的身份验证方法。

    • 对于集群 ID,请输入 your-cluster-identifier

    • 对于区域,请输入 your-cluster-region

    • 对于数据库,请输入 your-database-name

    • 对于用户,请输入 your-adfs-username。这是您用于单点登录的 AD FS 账户的用户名,该账户有权访问您在尝试进行身份验证时使用的集群。请仅将其用于身份验证类型身份提供者: SAML 的情况。

    • 对于密码,请输入 your-adfs-password。请仅将其用于 Auth type (身份验证类型)Identity Provider: SAML (身份提供者: SAML) 的情况。

    在 macOS 和 Linux 上,按如下方式编辑 odbc.ini 文件:

    注意

    所有条目不区分大小写。

    • 对于 clusterid,请输入 your-cluster-identifier。这是已创建的 Amazon Redshift 集群的名称。

    • 对于区域,请输入 your-cluster-region。这是已创建的 Amazon Redshift 集群的 AWS 区域。

    • 对于数据库,请输入 your-database-name。这是您尝试在 Amazon Redshift 集群上访问的数据库的名称。

    • 对于区域设置,请输入 en-us。这是显示错误消息的语言。

    • 对于 iam,请输入 1。此值指定要使用 IAM 凭证进行身份验证的驱动程序。

    • 对于 plugin_name,请执行以下操作之一:

      • 对于具有 MFA 的 AD FS 单点登录配置,请输入 BrowserSAML。这是 ODBC 驱动程序在 AD FS 中进行身份验证时使用的身份验证方法。

      • 对于 AD FS 单点登录配置,请输入 ADFS。这是 ODBC 驱动程序在通过 Azure AD 单点登录进行身份验证时使用的身份验证方法。

    • 对于 uid,请输入 your-adfs-username。这是您用于单点登录的 Microsoft Azure 账户的用户名,该账户有权限访问您在尝试进行身份验证时使用的集群。请仅将其用于 plugin_nameADFS 的情况。

    • 对于密码,请输入 your-adfs-password。请仅将其用于 plugin_nameADFS 的情况。

    在 macOS 和 Linux 上,还要编辑配置文件设置以添加以下导出。

    export ODBCINI=/opt/amazon/redshift/Setup/odbc.ini
    export ODBCINSTINI=/opt/amazon/redshift/Setup/odbcinst.ini