亚马逊AWS官方博客
基于 TLS 1.2 TLS 1.3 的 SAML ADFS 实现控制台及 Redshift 用户的安全单点登录(二)
亚马逊云控制台配置
上一章我们已经配置了 AD 域及 ADFS 服务,在域中添加了用户 bob 并将他设置为组 AWS-Dev 和 RSDB-dev 的成员。本章将使用之前导出的 ADFS 元数据文件 FederationMetadata.xml 创建一个 idP(Identity Provider),然后创建名为 ADFS-Dev 的 IAM Role 并附加 Redshift 和 RDS 两个服务的控制台浏览权限以及 Redshift 数据库的访问权限。ADFS 将把域组 AWS-Dev 映射到名为 ADFS-Dev 的 IAM Role;把域组 RSDB=dev 映射为数据库组 dev。本章也包含了 Claim role 的相关配置,这样可以比较两者是如何协同工作的。
1. 使用前期下载的配置文件 xml 创建名为 adfs-saml 的 idP
控制台路径:Identity and Access Management (IAM)->Identity providers->Add provider
2. 创建用于访问 Redshift 的策略 adfs-redshift
控制台路径:Identity and Access Management (IAM) -> Policies -> Create policy -> JSON
[adfs-redshift]
以下示例中,Redshift 集群名称为 cluster-identifer。数据库名为 mydb,123456789101 为账号 ID。
3. 创建名为 ADFS-Dev 的 IAM Role
控制台路径:Identity and Access Management (IAM) -> Roles -> Create role -> SAML 2.0 federation
[ADFS-Dev]
我们允许控制台访问以及代码访问,因此选择 Allow programmatic and Amazon Web Services Management Console access,并且附加将刚才创建的策略 adfs-redshift 和系统内置策略 AmazonRedshiftReadOnlyAccess,AmazonRDSReadOnlyAccess
4. 回到 Windows 域服务器,在 PowerShell 中执行以下命令下载 SAML 元数据备用
5. 在 Server Manager 的工具管理器中点击“AD FS Management”为 ADFS 服务添加 Relying Party Trust
6. 添加 Claim Role
Relying Party Trust 向导完成之后自动进入添加 Claim Role 向导。我们将在此创建 6 条转换规则。IAM Role 与 ADFS Claim Role 配合完成身份认证,最终决定用户在控制台或者 Redshift 数据库所拥有的权限。本例中对控制台将有 Redshift 和 RDS 服务的只读权限;而数据库中的权限将从组 dev 继承。
6 条规则均借助向导中的模板完成,相关选项及截图如下:
- Transform an Incoming Claim -> [Name ID] -> Windows account name -> Name ID -> Persistent Identifier -> Pass through all claim values -> Finish
- Send LDAP Attributes as Claim -> [RoleSessionName] -> Active Directory ->
E-Mail-Addresses -> [https://thinkwithwp.com/SAML/Attributes/RoleSessionName]
Employee-ID -> [https://redshift.amazon.com/SAML/Attributes/DbUser]
-> Finish
- Send Claim Using a Custom Rule -> [Get AD Groups] ->
- Send Claim Using a Custom Rule -> [DbGroups] ->
- Send Claim Using a Custom Rule -> [Roles] ->
请注意替换账号 ID,示例中为 123456789101
- Send Claim Using a Custom Rule -> [AutoCreate] ->
7. 在 AD 域服务器的 Firefox 浏览器中验证控制台登录
https://dc.adfs.cn/adfs/ls/IdpInitiatedSignOn.aspx
可以看到,bob 通过 IAM Role ADFS-Dev 登录到控制台,完整的用户名称为 ADFS-Dev/bob@adfs.cn,并且可以浏览 Redshift 集群及 RDS 实例及其监控指标。
至此,我们已经完成了服务器端的所有安装配置。下一章将介绍 ODBC 以及 JDBC 常用工具的配置。最后通过一段代码展示如何在 java 中设置这些属性实现免用户连接 Redshift。