在具有双向信任的多域多林环境中将Kerberos用于SNC

2020-09-24 17:43发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我需要您的建议。 我们有一个具有多个AD域的客户,他们彼此信任(双向信任)。 因此,假设我们在顶层具有 corporation.com 作为资源域(根),并且我们获得了 corporate.de 以及 corporation.uk corporation .fr 作为德国,英国和法国的子域。

我们现在需要针对该客户的SAP环境,基于Kerberos(和Web的SPNEGO)设置SNC。

问题:

我们是否需要为每个域创建一个密钥表,还是仅为根域中的每个SAP系统创建一个服务帐户并仅在根域中注册SPN就足够了?

想法:

对于SAP系统上的SNC,我们将创建一个 SAPSNCSKERB.pse ,其中仅包含 ServiceAccount @ CORPORATION的一个密钥标签。 COM ,然后将SPN设置为 SAP/

我认为来自 CORPORATION.DE 的用户将能够连接到SAP 也可以通过以下方式通过SNC进行系统:

  1. SAP服务器的SNC名称为 snc/identity/as = p:CN = ,O = Corporation
  2. 客户端将使用 作为SPN,并向其KDC查询SAP/ @ CORPORATION.DE
  3. CORPORATION.DE 的KDC找不到SPN,而是询问全局目录(整个森林)
  4. ...发生了一些AD魔术...?
  5. 客户端从为 USER@CORPORATION.DE ,但使用 ServiceAccount@CORPORATION.COM 的密码进行了加密,SAP AS可以使用以下密码对其进行解密: 其keytab/PSE。
  6. 服务票证包含用户的Kerberos主体名称

那行得通吗?

谢谢,卡斯滕

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我需要您的建议。 我们有一个具有多个AD域的客户,他们彼此信任(双向信任)。 因此,假设我们在顶层具有 corporation.com 作为资源域(根),并且我们获得了 corporate.de 以及 corporation.uk corporation .fr 作为德国,英国和法国的子域。

我们现在需要针对该客户的SAP环境,基于Kerberos(和Web的SPNEGO)设置SNC。

问题:

我们是否需要为每个域创建一个密钥表,还是仅为根域中的每个SAP系统创建一个服务帐户并仅在根域中注册SPN就足够了?

想法:

对于SAP系统上的SNC,我们将创建一个 SAPSNCSKERB.pse ,其中仅包含 ServiceAccount @ CORPORATION的一个密钥标签。 COM ,然后将SPN设置为 SAP/

我认为来自 CORPORATION.DE 的用户将能够连接到SAP 也可以通过以下方式通过SNC进行系统:

  1. SAP服务器的SNC名称为 snc/identity/as = p:CN = ,O = Corporation
  2. 客户端将使用 作为SPN,并向其KDC查询SAP/ @ CORPORATION.DE
  3. CORPORATION.DE 的KDC找不到SPN,而是询问全局目录(整个森林)
  4. ...发生了一些AD魔术...?
  5. 客户端从为 USER@CORPORATION.DE ,但使用 ServiceAccount@CORPORATION.COM 的密码进行了加密,SAP AS可以使用以下密码对其进行解密: 其keytab/PSE。
  6. 服务票证包含用户的Kerberos主体名称

那行得通吗?

谢谢,卡斯滕

付费偷看设置
发送
5条回答
绿领巾童鞋
1楼 · 2020-09-24 18:01.采纳回答

嗨!

按照承诺,我们现在已经对此进行了测试,这就是结果。

在具有双向林信任或具有多个子域(传递信任)的一个林环境的情况下,只需创建服务帐户并在林根中注册SPNego和SNC的SPN 域。 即使对于SNC,我们也仅使用目录林根域中的Keytab创建了SAPSNCSKERB.pse。

但是,为了允许来自不同可信AD林的客户端请求可信林根域中Kerberos服务(SPN)的服务票证,您需要确保将域名添加到SNC-Name 在SAP登录中。

示例:p:CN = @ FORESTROOTDOMAIN.TLD

即使您在同一林中还是在不同林中都有客户,他们也可以通过SLC通过询问全局编录服务器来获取服务票证。

希望我的贡献可以帮助其他客户和合作伙伴成功地管理多域/多林实施,同时使用户和SPN创建的工作量降到最低。

当然,这仅适用于受信任的林/域。

如果没有这种信任,则只需为每个域创建一个单独的服务用户和SPN。 只需从SAP登录中的SNC名称中剪切域,这将强制SLC添加用户的当前USERDNSDOMAIN。 示例:p:CN =

SAP管理员将自己的snc/identity/定义为X.509 DN也很常见,例如p:CN = ,O = Organization,C = Country

不要惊慌,上述解决方案在这种情况下也适用,因为SLC只是负责CN部分。

信息:唯一的例外适用于我之前提到的多林/域解决方案。 使用登录组(消息服务器)时,将从相应应用程序服务器的配置文件参数动态获取SNC名称。 在这种情况下,您需要确保将snc/identity/as设置为p:CN = @ FORESTROOTDOMAIN.TLD

干杯,Carsten

huskylover
2楼-- · 2020-09-24 17:53

嗨!

非常感谢您的反馈。
我相信这会对很多人有所帮助:D

致谢,

大道至简
4楼-- · 2020-09-24 17:58

嗨,杰弗森,

没问题,谢谢您的回答,我非常感谢。 同时,我们在项目中取得了一些进展,至少在ASABAP和Java上的SPNego实现部分。 在这里,它仅使用目录林根域的一个Keytab。 同一林中的所有子域,甚至其他一些域/林(双向信任)也可以正常工作。 似乎全局编录将客户ST请求转发到知道SPN的根DC-我相信这仅是由于信任才能起作用。

不幸的是,由于项目(许可,用户等)的延迟,我们尚未通过Secure Login Client对SNC进行相同的测试。

因此,您的意思是在始终使用相同密码的同时创建不同的Keytab,听起来很有趣,我将尝试一下,这对于SNC部件可能是必需的。

我会及时通知您。

宇峰
5楼-- · 2020-09-24 18:00

嘿,杰斐逊,

对此表示感谢。 当然,我已经看过该文档,但是其中没有任何有用的详细信息。 我也看过Donka的博客,这就是我要问的原因。 因为她在博客中说:

选项1:当域之间信任时,仅在中央域上创建一个服务帐户并为此帐户配置相应的服务主体名称就足够了。

在另一边,她说:

无论域之间是否存在信任关系,当我们有多个要集成到我们的Kerberos/SPNego实现中的Microsoft域时,都必须为这些域中的每个域创建一个Keytab。 之所以需要这种配置,是因为必须将SAP AS ABAP服务器配置为信任这些域中的每一个域

也许我错过了一些事情,但是我的问题是,如果我在中央域中只有一个服务帐户,那么如何为每个域创建密钥表?这是创建密钥表的命令:sapgenpse keytab -p SAPSNCSKERB.pse -a @

您看到挑战了吗?

卡斯滕

一周热门 更多>