默认 Amazon EKS 创建的 Kubernetes 角色和用户 - Amazon EKS

默认 Amazon EKS 创建的 Kubernetes 角色和用户

创建 Kubernetes 集群时,会在该集群上创建多个默认 Kubernetes 身份,以便 Kubernetes 正常运行。Amazon EKS 会为其每个默认组件创建 Kubernetes 身份。这些身份为集群组件提供 Kubernetes 基于角色的授权控制(RBAC)。有关更多信息,请参阅 Kubernetes 文档中的使用 RBAC 授权

当您向集群安装可选附加组件时,可能会向您的集群添加其他 Kubernetes 身份。有关本主题未涉及身份的更多信息,请参阅附加组件文档。

您可以使用 AWS Management Console 或 kubectl 命令行工具查看 Amazon EKS 在集群上创建的 Kubernetes 身份列表。所有用户身份都会出现在 kube 审计日志中,可通过 Amazon CloudWatch 向你提供。

AWS Management Console
先决条件

您使用的 IAM 主体必须拥有 所需的权限 中描述的权限。

要使用AWS Management Console查看 Amazon EKS 创建的身份
  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. Clusters(集群)列表中,选择包含要查看的身份的集群。

  3. 选择资源选项卡。

  4. Resource types(资源类型)下,选择 Authorization(授权)。

  5. 选择 ClusterRolesClusterRoleBindingsRolesRoleBindings。所有以 eks 为前缀的资源均由 Amazon EKS 创建。Amazon EKS 创建的其他身份资源包括:

    • ClusterRole 和名为 aws-nodeClusterRoleBindingaws-node 资源支持 Amazon VPC CNI plugin for Kubernetes,Amazon EKS 会将其安装在所有集群上。

    • 名为 vpc-resource-controller-roleClusterRole 和名为 vpc-resource-controller-rolebindingClusterRoleBinding。这些资源支持 Amazon VPC 资源控制器,Amazon EKS 会将其安装在所有集群上。

    除了控制台中的资源外,即使以下特殊用户身份在集群配置中不可见,但它们仍存在于您的集群上:

    • eks:cluster-bootstrap:在集群引导期间用于 kubectl 操作。

    • eks:support-engineer:用于集群管理操作。

  6. 选择特定资源以查看有关该资源的详细信息。默认情况下,信息在 Structured view(结构化视图)中显示。在详细信息页面的右上角,您可以选择 Raw view(原始视图)以查看该资源的所有信息。

Kubectl
先决条件

您用于列出集群上的 Kubernetes 资源的实体(AWS Identity and Access Management(IAM)或 OpenID Connect(OIDC))必须由 IAM 或您的 OIDC 身份提供商进行身份验证。必须向实体授予权限,才能为您希望该实体使用的集群上的 RoleClusterRoleRoleBindingClusterRoleBinding 资源使用 Kubernetes getlist 动词。有关向 IAM 实体授予集群访问权限的更多信息,请参阅让 IAM 主体访问您的集群。有关向经过您自己的 OIDC 提供商身份验证的实体授予集群访问权限的更多信息,请参阅通过 OpenID Connect 身份提供商对集群的用户进行身份验证

要使用 kubectl 查看 Amazon EKS 创建的身份

为要查看的资源类型运行命令。所有以 eks 为前缀的返回资源均由 Amazon EKS 创建。除命令输出中返回的资源,即使以下特殊用户身份在集群配置中不可见,但它们仍存在于您的集群上:

  • eks:cluster-bootstrap:在集群引导期间用于 kubectl 操作。

  • eks:support-engineer:用于集群管理操作。

ClusterRolesClusterRoles 范围限定为您的集群,因此授予角色的任何权限都适用于集群上任何 Kubernetes 命名空间中的资源。

以下命令返回 Amazon EKS 在您的集群上创建的所有 Kubernetes ClusterRoles

kubectl get clusterroles | grep eks

除了输出中返回的 ClusterRoles(具有前缀)外,还存在以下 ClusterRoles

要查看 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]

ClusterRoleBindingsClusterRoleBindings 范围限定为您的集群。

以下命令返回 Amazon EKS 在您的集群上创建的所有 Kubernetes ClusterRoleBindings

kubectl get clusterrolebindings | grep eks

除了输出中返回的 ClusterRoleBindings 外,还存在以下 ClusterRoleBindings

要查看 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

RolesRoles 范围限定为 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]

RoleBindingsRoleBindings 范围限定为 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 eks:k8s-metrics -n kube-system

示例输出如下。

Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  Role
  Name:  eks:k8s-metrics
Subjects:
  Kind  Name             Namespace
  ----  ----             ---------
  User  eks:k8s-metrics