Kerberos 身份验证。钥匙扣和票

问题描述 投票:0回答:1

我有几个关于 Kerberos 的问题,它是如何工作的。

  1. 是否每个服务,例如使用 Kerberos 身份验证的 Postgres,都必须 有 KDC 生成的密钥表吗?或者可能没有 keytab 文件的服务上的 kerberos 身份验证?
  2. keytab 如何确定添加了新的用户主体?我的意思是,我已经为 Postgres 生成了密钥表并将其发送给 Postgres 服务并匹配 postgresql.conf 中的密钥表文件。然后我在 Postgres 数据库中创建了角色 Born(例如),并将其添加到 KDC kadmin 中。之后,我可以从另一台计算机(在 kinit Born 之后)连接到 Postgres 服务。但我在添加新校长 Born 之前制作了 keytab。 Postgres 的 keytab 如何找到 Born?如何从 kadmin 存储到另一台服务器上的 keytab Postgres 的新添加用户的信息?
postgresql kerberos keytab
1个回答
1
投票

是否每个服务,例如使用 Kerberos 身份验证的 Postgres,都必须具有由 KDC 生成的密钥表?或者可能没有 keytab 文件的服务上的 kerberos 身份验证?

是的,每个服务都必须有自己的 Kerberos 身份,并且必须知道它的密钥。密钥不一定存储在密钥表文件中(例如 Windows AD 机器使用密码),但它们通常是。

Postgres 仅使用密钥表与 KErberos 一起工作。但是有些不需要密钥表。

All 服务有自己的 Kerberos 主体和自己的密钥(如果您正在查看维基百科图表,则为 KS),它并不总是存储在密钥表的特定form中。

在 Windows Server 系统上托管的服务通常不使用密钥表,因为它们通过 Windows SSPI 使用 Kerberos,它使用服务用户帐户的密码, 或存储在 LSASS 中的“机器密码”,并派生 K S 来自该密码(就像用户在

kinit
期间如何从密码中获取密钥一样)。

然而,无论密钥是否来自密码,从根本上来说都是一回事。该服务仍然有自己的身份和自己的 Kerberos 密钥。 (这也意味着客户可能有一个 keytab 并使用

kinit
而不是密码。)

keytab 如何确定添加了新的用户主体?

没有。服务器的密钥表根本不关心用户;它标识服务器本身。它的目的有点像服务器的TLS证书和私钥(尽管机制完全不同)。

此外,关心 Postgres 用户不是 Kerberos 的工作。 Kerberos 主体到 Postgres 角色的映射发生在 after Kerberos 身份验证完成后。

换句话说,Postgres 不直接从 Kerberos 接收角色名称,它只接收 Kerberos 主体名称,并且必须通过自己的方式将其映射到 Postgres 角色。 Kerberos 身份验证成功但角色映射(即授权)失败是完全有效的。

© www.soinside.com 2019 - 2024. All rights reserved.