帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
创建访问条目
注意事项
在创建访问条目之前,请考虑以下事项:
-
身份验证模式设置正确。请参阅 更改身份验证模式以使用访问条目。
-
访问条目包含一个(且仅限一个)现有 IAM 主体的 Amazon 资源名称(ARN)。一个 IAM 主体不能包含在多个访问条目中。您指定的 ARN 的其他注意事项:
-
IAM 最佳实践建议使用具有短期凭证的 IAM 角色而不是具有长期凭证的 IAM 用户访问您的集群。有关更多信息,请参阅《IAM 用户指南》中的 要求人类用户使用带有身份提供者的联合身份验证才能使用临时凭证访问 AWS。
-
如果 ARN 适用于 IAM 角色,则可以包含路径。
aws-auth
ConfigMap
条目中的 ARN 不能包含路径。例如,您的 ARN 可以是arn:aws:iam::
或111122223333
:role/development/apps/
my-role
arn:aws:iam::
。111122223333
:role/my-role
-
如果访问条目的类型不是
STANDARD
(请参阅下文关于类型的注意事项),则 ARN 必须位于与您的集群相同的 AWS 账户。如果类型为STANDARD
,则 ARN 可以位于与您的集群所在的账户相同或不同的 AWS 账户。 -
在创建访问条目后,您将无法更改 IAM 主体。
-
如果您删除了具有此 ARN 的 IAM 主体,则访问条目不会自动删除。对于已删除的 IAM 主体,我们建议您删除具有 ARN 的访问条目。如果您不删除访问条目并重新创建 IAM 主体,即使该访问条目具有相同的 ARN,也将无法运行。这是因为尽管重新创建的 IAM 主体的 ARN 相同,但对于重新创建的 IAM 主体,
roleID
或userID
(您可以用aws sts get-caller-identity
AWS CLI 命令查看)与原始 IAM 主体不同。即使您看不到 IAM 主体的roleID
或userID
访问条目,Amazon EKS 也会将其与访问条目一起存储。
-
-
每个访问条目都有一种类型。您可以将
EC2 Linux
(用于与 Linux 或 Bottlerocket 自行管理的节点一起使用的 IAM 角色)、EC2 Windows
(用于与 Windows 自行管理的节点一起使用的 IAM 角色)、FARGATE_LINUX
(用于与 AWS Fargate (Fargate) 一起使用的 IAM 角色)或STANDARD
指定为一种类型。如果您不指定类型,则 Amazon EKS 会自动将类型设置为STANDARD
。无需为用于托管节点组或 Fargate 配置文件的 IAM 角色创建访问条目,因为无论您的集群处于哪个平台版本,Amazon EKS 都会将这些角色的条目添加到aws-auth
ConfigMap
中。在创建访问条目后,您将无法更改类型。
-
如果访问条目的类型为
STANDARD
,则可以为该访问条目指定用户名。如果您没有为用户名指定值,Amazon EKS 会根据访问条目的类型以及您指定的 IAM 主体是 IAM 角色还是 IAM 用户,为您设置以下值之一。除非您出于特定原因要指定自己的用户名,否则我们建议您不要指定用户名,而是让 Amazon EKS 为您自动生成用户名。如果您指定自己的用户名:-
不能以
system:
、eks:
、aws:
、amazon:
或iam:
开头。 -
如果该用户名用于 IAM 角色,我们建议您在用户名的末尾添加
{{SessionName}}
。如果您在用户名中添加{{SessionName}}
,则该用户名必须在 {{SessionName}} 之前加一个冒号。如果分派此角色,则分派此角色时指定的会话名称将自动传递到集群,并显示在 CloudTrail 日志中。例如,您不能将用户名设置为john{{SessionName}}
。用户名必须是:john{{SessionName}}
或jo:hn{{SessionName}}
。冒号只能在{{SessionName}}
前面。下表中由 Amazon EKS 生成的用户名包含一个 ARN。由于 ARN 包含冒号,因此符合此要求。如果用户名中未包含{{SessionName}}
,则不需要使用冒号。
IAM 主体类型 类型 Amazon EKS 自动设置的用户名值 用户 STANDARD
用户的 ARN。例如:
arn:aws:iam::
111122223333
:user/my-user
角色 STANDARD
分派角色时此角色的 STS ARN。Amazon EKS 会将
{{SessionName}}
附加到该角色中。例如:
arn:aws:sts::
111122223333
:assumed-role/my-role
/{{SessionName}}如果您指定的角色的 ARN 包含路径,Amazon EKS 会在生成的用户名中将其移除。
角色 EC2 Linux
或EC2 Windows
system:node:{{EC2PrivateDNSName}}
角色 FARGATE_LINUX
system:node:{{SessionName}}
创建访问条目后,您可以更改用户名。
-
-
如果访问条目的类型为
STANDARD
,并且您想使用 Kubernetes RBAC 授权,则可以在访问条目中添加一个或多个组名。创建访问条目后,您可以添加和移除组名。要让 IAM 主体能够访问集群上的 Kubernetes 对象,您必须创建和管理 Kubernetes 基于角色的授权(RBAC)对象。在集群上创建 KubernetesRoleBinding
或ClusterRoleBinding
对象,将组名指定为kind: Group
的subject
。Kubernetes 授权 IAM 主体访问您在 KubernetesRole
或ClusterRole
对象中指定的任何集群对象,这些对象也在绑定的roleRef
中指定。如果您指定组名,我们建议您熟悉 Kubernetes 基于角色的授权(RBAC)对象。有关更多信息,请参阅 Kubernetes 文档中的使用 RBAC 授权。 重要
Amazon EKS 不会确认您的集群上存在的任何 Kubernetes RBAC 对象是否包含您指定的任何组名。
或者除了 Kubernetes 授权 IAM 主体访问集群上的 Kubernetes 对象之外,您可以将 Amazon EKS 访问策略关联到访问条目。Amazon EKS 授权 IAM 主体使用访问策略中的权限访问您集群上的 Kubernetes 对象。您可以将访问策略的权限范围限定到您指定的 Kubernetes 命名空间。使用访问策略不需要您管理 Kubernetes RBAC 对象。有关更多信息,请参阅 将访问策略与访问条目关联起来。
-
如果您创建类型为
EC2 Linux
或EC2 Windows
的访问条目,则创建访问条目的 IAM 主体必须拥有iam:PassRole
权限。有关更多信息,请参阅《IAM 用户指南》中的向用户授予权限以将角色传递给 AWS 服务。 -
与标准 IAM 行为类似,访问条目创建和更新最终是一致的,并且在初始 API 调用成功返回后可能需要几秒钟才能生效。您在设计应用程序时,必须考虑到这些可能的延迟。在应用程序的关键、高可用性代码路径中,我们不建议创建或更新访问条目。而应在不常运行的、单独的初始化或设置例程中进行 更改。另外,在生产工作流程依赖这些更改之前,请务必验证更改已传播。
-
访问条目不支持服务相关角色。如果主体 ARN 是服务相关角色,则无法创建访问条目。您可以通过服务相关角色的 ARN(格式为
arn:aws:iam::*:role/aws-service-role/*
)来识别它们。
您可以使用 AWS Management Console 或 AWS CLI 创建访问条目。