帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
了解 Amazon EKS 如何创建 RBAC 角色和用户
创建 Kubernetes 集群时,会在该集群上创建多个默认 Kubernetes 身份,以便 Kubernetes 正常运行。Amazon EKS 会为其每个默认组件创建 Kubernetes 身份。这些身份为集群组件提供 Kubernetes 基于角色的授权控制(RBAC)。有关更多信息,请参阅 Kubernetes 文档中的使用 RBAC 授权
当您向集群安装可选附加组件时,可能会向您的集群添加其他 Kubernetes 身份。有关本主题未涉及身份的更多信息,请参阅附加组件文档。
您可以使用 Amazon Web Services Management Console 或 kubectl
命令行工具查看 Amazon EKS 在集群上创建的 Kubernetes 身份列表。所有用户身份都会出现在 kube
审计日志中,可通过 Amazon CloudWatch 向你提供。
- Amazon Web Services Management Console
-
先决条件
要使用Amazon Web Services Management Console查看 Amazon EKS 创建的身份
从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters
。 -
在 Clusters(集群)列表中,选择包含要查看的身份的集群。
-
选择资源选项卡。
-
在 Resource types(资源类型)下,选择 Authorization(授权)。
-
选择 ClusterRoles、ClusterRoleBindings、Roles 或 RoleBindings。所有以 eks 为前缀的资源均由 Amazon EKS 创建。Amazon EKS 创建的其他身份资源包括:
ClusterRole 和名为 aws-node 的 ClusterRoleBinding。aws-node 资源支持 Amazon VPC CNI plugin for Kubernetes,Amazon EKS 会将其安装在所有集群上。
-
名为 vpc-resource-controller-role 的 ClusterRole 和名为 vpc-resource-controller-rolebinding 的 ClusterRoleBinding。这些资源支持 Amazon VPC 资源控制器
,Amazon EKS 会将其安装在所有集群上。
除了控制台中的资源外,即使以下特殊用户身份在集群配置中不可见,但它们仍存在于您的集群上:
-
eks:cluster-bootstrap
:在集群引导期间用于kubectl
操作。 -
eks:support-engineer
:用于集群管理操作。
-
选择特定资源以查看有关该资源的详细信息。默认情况下,信息在 Structured view(结构化视图)中显示。在详细信息页面的右上角,您可以选择 Raw view(原始视图)以查看该资源的所有信息。
- Kubectl
-
先决条件
您用于列出集群上的 Kubernetes 资源的实体(Amazon Identity and Access Management(IAM)或 OpenID Connect(OIDC))必须由 IAM 或您的 OIDC 身份提供商进行身份验证。必须向实体授予权限,才能为您希望该实体使用的集群上的
Role
、ClusterRole
、RoleBinding
和ClusterRoleBinding
资源使用 Kubernetesget
和list
动词。有关向 IAM 实体授予集群访问权限的更多信息,请参阅向 IAM 用户和角色授予对 Kubernetes APIs 的访问权限。有关向经过您自己的 OIDC 提供商身份验证的实体授予集群访问权限的更多信息,请参阅通过外部 OIDC 提供者向用户授予对 Kubernetes 的访问权限。要使用
kubectl
查看 Amazon EKS 创建的身份为要查看的资源类型运行命令。所有以 eks 为前缀的返回资源均由 Amazon EKS 创建。除命令输出中返回的资源,即使以下特殊用户身份在集群配置中不可见,但它们仍存在于您的集群上:
-
eks:cluster-bootstrap
:在集群引导期间用于kubectl
操作。 -
eks:support-engineer
:用于集群管理操作。
ClusterRoles:
ClusterRoles
范围限定为您的集群,因此授予角色的任何权限都适用于集群上任何 Kubernetes 命名空间中的资源。以下命令返回 Amazon EKS 在您的集群上创建的所有 Kubernetes
ClusterRoles
。kubectl get clusterroles | grep eks
除了输出中返回的
ClusterRoles
(具有前缀)外,还存在以下ClusterRoles
。-
aws-node
:此ClusterRole
支持 Amazon VPC CNI plugin for Kubernetes,Amazon EKS 会将其安装在所有集群上。 -
vpc-resource-controller-role
:此ClusterRole
支持 Amazon VPC 资源控制器,Amazon EKS 会将其安装在所有集群上。
要查看
ClusterRole
的规范,请将以下命令中的eks:k8s-metrics
替换为上一条命令输出中返回的ClusterRole
。以下示例返回eks:k8s-metrics
ClusterRole
的规范。kubectl describe clusterrole
eks:k8s-metrics
示例输出如下。
Name: eks:k8s-metrics Labels: <none> Annotations: <none> PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- [/metrics] [] [get] endpoints [] [] [list] nodes [] [] [list] pods [] [] [list] deployments.apps [] [] [list]
ClusterRoleBindings:
ClusterRoleBindings
范围限定为您的集群。以下命令返回 Amazon EKS 在您的集群上创建的所有 Kubernetes
ClusterRoleBindings
。kubectl get clusterrolebindings | grep eks
除了输出中返回的
ClusterRoleBindings
外,还存在以下ClusterRoleBindings
。-
aws-node
:此ClusterRoleBinding
支持 Amazon VPC CNI plugin for Kubernetes,Amazon EKS 会将其安装在所有集群上。 -
vpc-resource-controller-rolebinding
:此ClusterRoleBinding
支持 Amazon VPC 资源控制器,Amazon EKS 会将其安装在所有集群上。
要查看
ClusterRoleBinding
的规范,请将以下命令中的eks:k8s-metrics
替换为上一条命令输出中返回的ClusterRoleBinding
。以下示例返回eks:k8s-metrics
ClusterRoleBinding
的规范。kubectl describe clusterrolebinding
eks:k8s-metrics
示例输出如下。
Name: eks:k8s-metrics Labels: <none> Annotations: <none> Role: Kind: ClusterRole Name: eks:k8s-metrics Subjects: Kind Name Namespace ---- ---- --------- User eks:k8s-metrics
Roles:
Roles
范围限定为 Kubernetes 命名空间。Amazon EKS 创建的所有Roles
范围限定为kube-system
命名空间。以下命令返回 Amazon EKS 在您的集群上创建的所有 Kubernetes
Roles
。kubectl get roles -n kube-system | grep eks
要查看
Role
的规范,请将以下命令中的eks:k8s-metrics
替换为上一条命令输出中返回的Role
名称。以下示例返回eks:k8s-metrics
Role
的规范。kubectl describe role
eks:k8s-metrics
-n kube-system示例输出如下。
Name: eks:k8s-metrics Labels: <none> Annotations: <none> PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- daemonsets.apps [] [aws-node] [get] deployments.apps [] [vpc-resource-controller] [get]
RoleBindings:
RoleBindings
范围限定为 Kubernetes 命名空间。Amazon EKS 创建的所有RoleBindings
范围限定为kube-system
命名空间。以下命令返回 Amazon EKS 在您的集群上创建的所有 Kubernetes
RoleBindings
。kubectl get rolebindings -n kube-system | grep eks
要查看
RoleBinding
的规范,请将以下命令中的eks:k8s-metrics
替换为上一条命令输出中返回的RoleBinding
。以下示例返回eks:k8s-metrics
RoleBinding
的规范。kubectl describe rolebinding
-n kube-systemeks:k8s-metrics
示例输出如下。
Name: eks:k8s-metrics Labels: <none> Annotations: <none> Role: Kind: Role Name: eks:k8s-metrics Subjects: Kind Name Namespace ---- ---- --------- User eks:k8s-metrics
-