帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
通过外部 OIDC 提供者向用户授予对 Kubernetes 的访问权限
Amazon EKS 支持使用 OpenID Connect(OIDC)身份提供者作为对您的集群的用户进行身份验证的方法。OIDC 身份提供者可与 Amazon Identity and Access Management(IAM)一起使用或作为其替代方法。有关使用 IAM 的更多信息,请参阅向 IAM 用户和角色授予对 Kubernetes APIs 的访问权限。配置集群身份验证后,您可以创建 Kubernetes roles
和 clusterroles
以将权限分配给角色,然后使用 Kubernetes rolebindings
和 clusterrolebindings
将角色绑定到身份。有关更多信息,请参阅 Kubernetes 文档中的使用 RBAC 授权
注意事项
-
您可以将一个 OIDC 身份提供者与您的集群关联。
-
Kubernetes 没有提供 OIDC 身份提供者。您可以使用现有的公共 OIDC 身份提供者,也可以运行您自己的身份提供者。有关经认证提供商的列表,请参阅 OpenID 网站上的 OpenID 认证
。 -
OIDC 身份提供者的发布者 URL 必须可公开访问,以便 Amazon EKS 能够发现签名密钥。Amazon EKS 不支持拥有自签名证书的 OIDC 身份提供者。
-
您不能在集群上禁用 IAM 身份验证,因为在将节点加入集群时仍需要使用。
-
Amazon EKS 集群仍必须由 Amazon IAM 主体创建,而不是由 OIDC 身份提供者用户创建。这是因为集群创建者与 Amazon EKS API 进行交互,而不是与 Kubernetes API 进行交互。
-
如果为控制面板启用了 CloudWatch 日志,则将在集群的审核日志中列出经 OIDC 身份提供者验证的用户。有关更多信息,请参阅 启用或禁用控制面板日志。
-
您无法使用来自 OIDC 提供者的账户登录 Amazon Web Services Management Console。您只能通过使用 Amazon Identity and Access Management 账户登录 Amazon Web Services Management Console,从而在控制台中查看 Kubernetes 资源。
关联 OIDC 身份提供者
您需要提供者提供以下信息,然后才能将 OIDC 身份提供者与集群关联:
- 发布者 URL
-
OIDC 身份提供者的 URL,该 URL 允许 API 服务器发现用于验证令牌的公共签名密钥。该 URL 必须以
https://
开头,并应与提供商的 OIDC ID 令牌中的iss
声明相对应。根据 OIDC 标准,允许使用路径组件,但不允许使用查询参数。通常,URL 只包含一个主机名称,如https://server.example.org
或https://example.com
。该 URL 应指向.well-known/openid-configuration
以下的级别,并且必须可通过 Internet 网公开访问。 - 客户端 ID(也称为受众)
-
向 OIDC 身份提供商发出身份验证请求的客户端应用程序的 ID。
您可以使用 eksctl
或 Amazon Web Services Management Console 关联身份提供商。
示例 IAM 策略
如果要阻止 OIDC 身份提供者与集群关联,请创建以下 IAM 策略并将其与 Amazon EKS 管理员的 IAM 账户关联。有关更多信息,请参阅 IAM 用户指南中的创建 IAM 策略和添加 IAM 身份权限,以及服务授权参考中的 Amazon Elastic Kubernetes Service 的操作、资源和条件键。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "denyOIDC", "Effect": "Deny", "Action": [ "eks:AssociateIdentityProviderConfig" ], "Resource": "arn:aws:eks:
cn-north-1
.amazonaws.com.cn:111122223333
:cluster/*" }, { "Sid": "eksAdmin", "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ] }
如果 clientID
为 kubernetes
而 issuerUrl
为 https://cognito-idp.cn-north-1amazonaws.com.cn/*
,则以下示例策略允许进行 OIDC 身份提供者关联。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCognitoOnly", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:
cn-north-1
:111122223333
:cluster/my-instance
", "Condition": { "StringNotLikeIfExists": { "eks:issuerUrl": "https://cognito-idp.cn-north-1
.amazonaws.com.cn/*" } } }, { "Sid": "DenyOtherClients", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:cn-north-1
:111122223333
:cluster/my-instance
", "Condition": { "StringNotEquals": { "eks:clientId": "kubernetes
" } } }, { "Sid": "AllowOthers", "Effect": "Allow", "Action": "eks:*", "Resource": "*" } ] }
经合作伙伴验证的 OIDC 身份提供商
Amazon EKS 与为兼容的 OIDC 身份提供商提供支持的合作伙伴网络保持着合作关系。参考以下合作伙伴的文档,了解如何将身份提供商与 Amazon EKS 集成的详细信息。
合作伙伴 | 产品 | 文档 |
---|---|---|
PingIdentity |
Amazon EKS 旨在为您提供广泛的选项来涵盖所有使用案例。如果您开发的商业支持的 OIDC 兼容身份提供商未在此处列出,请通过 aws-container-partners@amazon.com