如何在 Fargate 容器中以非 root 身份访问 AWS ServiceAccount 令牌?

rab*_*ens 5 amazon-s3 amazon-web-services kubernetes aws-fargate amazon-eks

我设置了一个完全使用 Fargate 上的 pod 的 EKS 集群。我想在需要访问 S3 的容器中以非 root 用户身份运行某些内容。为此,我创建ServiceAccount并添加了一个具有适当 S3 策略的 IAM 角色。

我启动了一个简单的 pod,它只是无限期地等待,并kubectl exec以 root 身份放到容器中的 bash 中。在那里,我安装了 AWS CLI 并在命令行上尝试了一些 s3 操作,效果很好,因此 pod 可以与 S3 通信并获取数据。

现在,我的实际工作负载以非 root 身份运行,并且必须访问 S3 上的内容,但当它尝试访问它时,它会失败,因为令牌的权限设置为 600 并且属于 root。容器中的非 root 用户也不能sudo,这是有意的。这意味着我得到“许可被拒绝”。

是否可以授予非根用户访问 Fargate Pod 中的 serviceaccount 令牌的权限,或者我是否必须允许我的用户访问sudo启动chmod脚本中的 644 令牌?

rab*_*ens 10

通过权限 600 安装令牌的事实实际上是一个已知问题。解决方法是指定一个fsGroup.

这样的事情对我有用:

---
apiVersion: v1
kind: Pod
metadata:
  name: foo
  labels:
    name: foo
spec:
  containers:
    - name: foo
      image: foo:bar
      resources:
        limits:
          memory: "128Mi"
          cpu: "500m"
      command:
        - "/do-something.sh"
  securityContext:
    fsGroup: 65534
  serviceAccountName: serviceAccountWithAccessToS3
Run Code Online (Sandbox Code Playgroud)