gpt4 book ai didi

amazon-web-services - 试图从容器内攻击 EKS 集群

转载 作者:行者123 更新时间:2023-12-05 06:50:55 24 4
gpt4 key购买 nike

总结:创建 EKS 集群。尝试从 docker 容器运行命令。获取错误。

设置。

按照 AWS 教程设置 EKS 集群

  1. 通过 CFT 创建 VPC 和支持基础设施
  2. 创建 IAM 角色和策略:myAmazonEKSClusterRole/AmazonEKSClusterPolicy
  3. 通过以 SSO 身份登录的控制台创建 EKS 集群
  4. 等待集群准备就绪
  5. 从被认证为 SSO 的笔记本电脑/CLI,执行

aws eks update-kubeconfig --name my-cluster

  1. 执行kubectl get svc,得到好的结果

  2. 在 IAM 中创建身份提供商并关联 EKS 集群 OpenID 连接提供商 URL

  3. 创建 CNI 角色和策略:myAmazonEKSCNIRole

  4. 通过aws eks update-addon 命令将角色关联到集群

  5. 创建节点角色 myAmazonEKSNodeRole 并附加策略:AmazonEKSWorkerNodePolicy 和 AmazonEC2ContainerRegistryReadOnly

  6. 在 AWS 中创建 key 对

  7. 将节点组添加到配置了上述角色和 key 对的集群

  8. 等到节点组激活

此时,如果我使用 kubectl 或 helm 进行测试,我就可以操纵集群。然而,我仍然以 SSO 用户身份进行身份验证,并从我的笔记本电脑上运行。

继续前进。我想从 docker 容器中操作集群。所以我继续执行以下步骤。

EKS 集群在 AWS 账户 B 中。

  1. 在 AWS 账户 B (RoleInAccountB) 中创建角色。角色在账户 B 中具有管理员访问策略。
  2. 在账户 A 和账户 B 之间建立信任,以便账户 A 中的用户可以承担账户 B 中的角色

在本地计算机上,在容器外部(SSO 身份验证)

  1. 下载 aws-auth-cm.yaml 并对其进行自定义以添加新角色:
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
- groups:
- system:masters
rolearn: arn:aws:iam::<Account B>:role/RoleInAccountB
username: DOESNTMATTER
  1. 执行kubectl apply -f aws-auth-cm.yaml
  2. 观察节点以确保它们准备就绪 kubectl get nodes –watch
  3. 验证配置 kubectl describe configmap -n kube-system aws-auth看起来不错。
  4. SSH 到账户 A 中的 EC2
  5. 在 EC2 上运行 docker 容器(镜像安装了先决条件依赖项,例如 aws cli、kubectl 等)

从容器中

  1. 担任账户 B 角色
  2. 通过 aws cli 将角色添加到 kube config

aws eks update-kubeconfig --name my-cluster --role-arn arn:aws:iam::accountB:role/RoleInAccountB

  1. 执行测试以检查对集群的权限 kubectl get svc

收到错误“错误:您必须登录到服务器(未经授权)”

更新:我从 ec2(容器外)试过这个。我得到了相同的结果。

想知道下面的指导是否是我下一步必须尝试的。 https://github.com/kubernetes-sigs/aws-iam-authenticator/blob/master/README.md

2021 年 3 月 19 日更新仍然没有真正解决问题。我发现,如果我在创建集群之前承担一个角色(控制台或 cli),那么我可以稍后在容器/ec2 中担任该角色并很好地操作集群。这是预料之中的,但它已成为我的工作。仍在寻找更改集群权限以允许其他角色(未创建集群的角色)执行命令的正确方法。

最佳答案

最好在运行 aws eks update-kubeconfig 之前先了解您当前的身份上下文,aws sts get-caller-identity 的输出是什么第 9 步之前和之后的帐户 A?

另一件值得尝试的事情是打开生成的 KUBECONFIG 文件,查找辅助命令(如 aws-iam-authenticatoraws eks get-token)并绕过kubectl认证处理逻辑直接执行

这就是帮助者的样子

aws eks get-token --cluster-name my-cluster --role arn:aws:iam::accountB:role/RoleInAccountB

aws-iam-authenticator token -i my-cluster -r arn:aws:iam::accountB:role/RoleInAccountB

输出结果是什么?

第三,您可以使用 AWS 命名配置文件,使用 role_arn/source_arn 组合来获取在帐户之间透明承担的 AWS IAM 角色。

https://docs.aws.amazon.com/cli/latest/topic/config-vars.html#using-aws-iam-roles

关于amazon-web-services - 试图从容器内攻击 EKS 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66284211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com