如何在kubernetes中创建基本身份验证?

时间:2019-06-26 16:14:28

标签: kubernetes

我想在kubernetes中创建基本身份验证。每个文档都说我应该创建CSV或文件,然后在其中输入用户名和密码。但是我不想使用我想要一些数据库或kubernetes处理的文件。 我该如何进行基本身份验证?

1 个答案:

答案 0 :(得分:0)

如果您不想使用静态密码文件,则可以基于令牌进行身份验证。

第一个选项:

服务帐户令牌

服务帐户是自动启用的身份验证器,它使用签名的承载令牌来验证请求。 插件使用两个标志(可选):

服务帐户通常由API服务器自动创建,并通过ServiceAccount Admission Controller与集群中运行的Pod关联。承载令牌安装在知名位置的Pod中,并允许集群内进程与API服务器通信。可以使用 PodSpec 的serviceAccountName字段将帐户与Pod明确关联。

服务帐户承载令牌非常有效,可以在集群外部使用,并且可以用于为希望与Kubernetes API通讯的长期工作创建身份。要手动创建服务帐户,只需使用kubectl create serviceaccount(NAME)命令。这样会在当前名称空间中创建一个服务帐户以及一个关联的机密。

创建的机密包含API服务器的公共CA和签名的JSON Web令牌(JWT)。

已签名的 JWT 可用作承载令牌,以验证给定的服务帐户。有关令牌如何包含在请求中的信息,请参见上文。通常,这些机密会安装在Pod中,以供集群内访问API服务器,但也可以从集群外部使用。

存在一些缺点,因为服务帐户令牌存储在机密中,任何对这些机密具有读权限的用户都可以将其认证为服务帐户。授予服务帐户权限和读取机密功能时要小心。

第二:

安装 OpenID Connect (可在此处找到完整的文档:oidc)。

OpenID Connect(OIDC)是某些服务提供商(尤其是Azure Active Directory,Salesforce和Google)支持的OAuth2的超集。该协议在OAuth2之上的主要补充是一个带有访问令牌(称为ID令牌)的字段。此令牌是 JSON Web令牌(JWT),其中包含服务器签名的众所周知的字段,例如用户的电子邮件。

为识别用户,身份验证器将OAuth2令牌响应中的 id_token (不是access_token)用作承载令牌。

由于验证您身份所需的所有数据都位于 id_token 中,因此Kubernetes无需“回电”给身份提供商。在每个请求都是无状态的模型中,这为身份验证提供了非常可扩展的解决方案。

Kubernetes具有“ Web界面”以触发身份验证过程。没有用于收集凭据的浏览器或界面,这就是为什么您需要首先向身份提供者进行身份验证的原因。 如果不使用kubectl代理命令或注入 id_token 的反向代理,没有简单的方法可以向Kubernetes仪表板进行身份验证。

您可以在这里找到更多信息:kubernetes-authentication