使用AD Federation Service授权AWS用户进行权利分配

Jeff Wierer的文章“ 使用Windows Active Directory,ADFS和SAML 2.0启用到AWS的联合身份验证”的免费翻译,并进行了补充和说明。

1.源数据
2.准备
3. AD配置
4.安装ADFS
5.配置ADFS
6.配置AWS
7.测试
8.已知错误及其解决方案



1.源数据

提升了AD Windows 2016
作者使用了Amazon Windows 2008R2上的EC2,我在本地Windows 2016网络中有一个可以访问Internet的虚拟机。
AWS账户(将支付所有费用)
直臂
用途:允许AD用户根据AD组以指定的权限(获取角色)登录AWS。

方案:



1.用户(将是Bob)打开页面(https://ADFS.domain.name/adfs/ls/IdpInitiatedSignOn.aspx)

2. Bob被授权(ADFS请求AD中的必填字段)

3. Bob的浏览器从ADFS接收SAML格式的必要数据

4.浏览器将接收到的数据发送到SAML授权服务(https://signin.aws.amazon.com/saml)

5. Bob浏览器获取AWS控制台的登录URL

2.准备

2.1。 您已经提出了AD,并开始了不同组中的用户。

2.2。 提升IIS( 如何提升IIS 的作用

2.3。 生成自签名SSL证书。 ( 如何生成自签名SSL证书 )立即将其安装到默认站点。

3. AD配置

3.1。 您需要创建两个组AWS-Production和AWS-Billing

3.2。 创建用户Bob(注意!!!用户必须填写电子邮件字段:bob@youdomain.com,否则进入AWS控制台时会收到错误消息)

3.3。 将Bob添加到已创建的AWS生产和AWS账单组

3.4。 创建另一个ADFSSVC用户。 用于连接AD的特殊服务帐户。

4.安装ADFS

有几种版本的ADFS

  • ADFS 1.0-Windows Server 2003 R2(其他下载)
  • ADFS 1.1-Windows Server 2008和Windows Server 2008 R2
  • ADFS 2.0-Windows Server 2008和Windows Server 2008 R2(从Microsoft.com下载)
  • ADFS 2.1-Windows Server 2012
  • ADFS 3.0-Windows Server 2012 R2 [5]

  • ADFS 4.0-Windows Server 2016-我们的选择
  • ADFS 5.0-Windows Server 2019

作者下载并安装了ADFS v2。
我们将提高ADFS的作用
那里没有困难,三个屏幕截图将帮助您单击按钮next>

屏幕截图
图片
图片
图片
我已经安装了它,所以看起来有点不同。
接下来,下一步,安装...

5.配置ADFS

此链接使您可以调用ADFS配置器

图片

图片

图片

使用当前用户连接到AD。

图片

在这里,我们需要在IIS中生成的证书(第2.3节)和将来的ADFS的名称(adfs.you-domain.com),显示行是“您的公司名称”

图片

我们选择在3.4 节中创建的服务帐户ADFSSVC

图片

创建一个新的数据库

图片

正在检查...

图片
安装前检查...单击配置

图片

做完了

控制台首先在Windows搜索词中搜索“ AD Management”。

图片

图片

接下来,转到“ 信任关系”并选择“ 依赖方信任”

右键-> 添加依赖方信任

图片

选择了解索赔

图片

选择“导入依赖方在线发布的数据...”,并输入https://signin.aws.amazon.com/static/saml-metadata.xml行,该文件对每个人都是相同的,由AWS提供。

图片

您可以自行决定是否命名为“ AWS GO ”,也可以保持不变。

图片

我们选择“允许所有用户...”允许所有访问。

图片

重新检查并完成。

图片

右键单击我们的中继,然后选择“编辑索赔发布策略”

图片

我们开始添加规则:

5.1获取用户名。 模板: 转换收到的索赔,然后填写以下字段:

一个 声明规则名称: NameId
b。 收到的索赔类型: Windows帐户名
c。 外寄声明类型: 姓名ID
d。 传出名称ID格式: 永久性标识符
e。 传递所有索赔值:已选中

图片

做完了

5.2获取用户的角色列表。 模板: 将LDAP属性作为声明发送

图片

领域:

一个 声明规则名称: RoleSessionName
b。 属性存储: Active Directory
c。 LDAP属性: 电子邮件地址
d。 支出声明类型:

 https://aws.amazon.com/SAML/Attributes/RoleSessionName 

图片

完成

5.3重要说明:在此规则中,将检索用户的所有角色并将其映射到IAM中的相似角色(即,以AWS -...开头的角色)。 此规则检索所有AD成员身份。 模板: 使用自定义规则发送声明

图片

领域
一个 声明规则名称: 获取广告组
b。 自定义角色:

 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); 

图片

要添加下一条规则,您将需要在第6步之后返回(或者您可以添加它并随后更改ID)

5.4添加另一个类似于5.3的规则,它将像这样:

一个 声明规则名称: Roless
b。 自定义角色:

 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-")); 

图片

在这里,您需要将IAM AWS的值123456789012更改为自己的值

图片

这将在第6节中描述。

6.配置AWS

所有操作都在AWS控制台中进行:)

6.1创建SAML提供程序

一个 IAM- >身份提供程序->创建提供程序
提供程序类型-SAML
提供程序名称-ADFS
元数据文档-需要在以下位置的FS服务器上获取(下载)此图块:https://FederationMetadata/2007-06/FederationMetadata.xml
如果文件不可用,请参见第8点-已知错误及其解决方案

图片

b。 为我们的用户创建两个角色。
IAM角色角色->创建角色

图片

绘制必要的策略(例如,针对将监视资金的用户的计费(默认策略),或者您可以预先创建自己的策略并在此处分配)

图片

必要时分配标签...

图片

输入名称:“-”之后的名称必须与AD中“-”之后的名称相匹配ASFS- Billing = AWS- Billing,在这种情况下,您的用户将属于正确的组。

然后点击创建角色

图片

7.测试

7.1在您喜欢的浏览器中,转到服务器页面https://localhost/adfs/ls/IdpInitiatedSignOn.aspx (将需要确认自签名证书)

具有相似内容的页面将打开。

图片

输入我们的用户AD的数据

图片

然后,我们通过用户将在AWS中担任的角色的角色建议重定向到AWS页面

图片

这是因为我们的Bob一次位于两个AD组中(AWS生产和AWS计费)。

我们选择AWS计费,并查看必要的设置(我们可以查看和编辑预算,但无权根据我们为其定义的角色创建EC2)

图片

8.已知错误及其解决方案

8.1门户没有响应或找不到必要的页面。 例如:

 https://localhost/adfs/ls/IdpInitiatedSignOn.aspx 

解决方案:在ADFS服务器上,必须运行PowerShell命令。

 Set-AdfsProperties -EnableIdPInitiatedSignonPage $true 

您可以立即将徽标放在欢迎页面上

 Set-AdfsWebTheme -TargetName default -Illustration @{path="C:\path\adfslogo.jpg"} 

8.2重定向到AWS控制台时,您将收到以下形式的错误:

 RoleSessionName is required in AuthnResponse (Service: AWSSecurityTokenService; Status Code: 400; Error Code: InvalidIdentityToken; Request ID: e4ddf8cd-d7b7-11e9-8729-09c90d2561b0). Please try again 

解决方案:您的用户很可能在AD中没有电子邮件字段

图片

解决方案2:在AD中编写组和在AWS中扮演角色可能存在错误

Source: https://habr.com/ru/post/zh-CN466859/


All Articles