[AWS-EKS-IAM](https://res.cloudinary.com/practicaldev/image/fetch/s--ur3_A_v9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to-uploads.s3.amazonaws.com/uploads/articles/3ix10ze6s42rs6omzhux.jpeg)

从基础开始:

AWS Identity and Access Management (IAM) 提供跨整个 AWS 的细粒度访问控制。借助 IAM,您可以指定谁可以访问哪些服务和资源,以及在哪些条件下。

AWS Single Sign-On (AWS SSO) 是一种云服务,允许您授予用户跨多个 AWS 账户访问 AWS 资源(例如 Amazon EC2 实例)的权限

Amazon Elastic Kubernetes Service (Amazon EKS) 是一项托管服务,您可以使用它在 AWS 上运行 Kubernetes,而无需安装、操作和维护您自己的 Kubernetes 控制平面或节点。

基于角色的访问控制 (RBAC) 是一种基于企业内个人用户的角色来限制网络访问的方法。

对 Kubernetes 集群的身份验证

Amazon EKS 使用 IAM 为您的 Kubernetes 集群](https://docs.aws.amazon.com/eks/latest/userguide/cluster-auth.html)提供[身份验证(通过 AWS CLI 1.16.156 或更高版本中可用的 aws eks get-token 命令,或适用于 Kubernetes 的 AWS IAM Authenticator),但它仍然依赖在本地 Kubernetes 基于角色的访问控制 (RBAC) 上进行授权。

[RBAC](https://res.cloudinary.com/practicaldev/image/fetch/s--_SB896KP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/kvvi6yut4j9eusy2zuzr.png)

以下内容应该可以帮助您使用 SSO 配置 AWS EKS:

  • 确保集群管理员或有权运行 kubectl 命令的任何人将 SSO 角色添加到 aws-auth ConfigMap(这用于管理集群上的访问):
 kubectl create configmap my-config-aws-auth --from-file=path/to/file/aws-auth.properties

进入全屏模式 退出全屏模式

文件“aws-auth.properties”看起来像这样

apiVersion: v1 
kind: ConfigMap 
metadata: 
  name: aws-auth 
  namespace: kube-system 
data: 
  mapRoles: | 
    - rolearn: arn:aws:iam::11122223333:role/EKS-DevOpsAdmin 
      username: system:node:{{EC2PrivateDNSName}} 
      groups: 
        - system:bootstrappers 
        - system:nodes 
  mapUsers: | 
    - userarn: arn:aws:iam::11122223333:user/designated_user 
      username: designated_user 
      groups: 
        - system:masters

进入全屏模式 退出全屏模式

  • 确保您从 CLI/Shell/CMD 登录到 SSO 角色。运行 ($ 'aws sts get-caller-identity' ) 以验证

  • 如果您不确定如何登录 SSO 角色,请参阅此配置 AWS CLI 以使用 AWS Single Sign-On。基本上你需要运行aws sso login

  • 确保 SSO 角色有权在您要连接的集群上运行 eks:DescribeCluster。

  • 您可以使用AWS Policy Generator工具来创建控制对 Amazon Web Services (AWS) 产品和资源的访问的策略。

对于最低权限,请使用以下 IAM 政策:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EKSDescribeClusterPolicy",
      "Action": [
        "eks:DescribeCluster"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

进入全屏模式 退出全屏模式

要管理整个 AWS EKS 服务,您可以使用 AdministratorAccess 角色或 EKS 特定的管理策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EKSAdminPolicy",
      "Action": "eks:*",
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

进入全屏模式 退出全屏模式

  • 配置 kubectl 以便您可以连接到 Amazon EKS 集群:$aws eks update-kubeconfig --name cluster_name这会在/home/user/.kube/config中创建 kubeconfig,并且 kubeconfig 内部还有 aws eks get token 命令

上述说明适用于现有集群,您应该能够一一使用它们,以便通过 SSO 保护 AWS EKS 的人工身份和访问管理。

如果您有任何问题或反馈,请告诉我

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐