使用 SSO 的 AWS EKS 的安全人类身份和访问管理
[
](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) 上进行授权。
[
](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 的人工身份和访问管理。
如果您有任何问题或反馈,请告诉我
更多推荐

所有评论(0)