繁体   English   中英

Kubernetes 服务账户和 AWS IAM 角色的秘密

[英]Kubernetes Service Account and AWS IAM Role for Secrets

我有一个 EKS 集群设置,我正在尝试访问我的 AWS 机密管理器中可用的一些机密,目前我已授予一个角色 (AWS-IAM) 访问所有必需机密的权限,并且我正在使用以下 k8s 清单我得到了错误。

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: spark-pi
  namespace: spark-pi
  annotations: 
    eks.amazonaws.com/role-arn: arn:aws:iam::XXXXXXXXXXX:role/spark-secret-role
automountServiceAccountToken: true
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: spark-pi-role
  namespace: spark-pi  
rules:
- apiGroups: [""]
  resources: ["pods", "services", "configmaps"]
  verbs: ["get", "list", "watch", "create", "delete", "update", "patch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: spark-pi-role-binding
  namespace: spark-pi
subjects:
- kind: ServiceAccount
  name: spark-pi
  namespace: spark-pi
roleRef:
  kind: Role
  name: spark-pi-role
  apiGroup: rbac.authorization.k8s.io 

我能够成功提交 Spark 作业,但是在检查 POD 日志时出现错误。 用户:arn:aws:sts::XXXXXXXXXXXX:assumed-role/eks-node-role/i-0XXXXXXXXXXXX 无权执行:secretsmanager:GetSecretValue on resource:arn:aws:secretsmanager:us-west-2:XXXXXXXXXX:秘密:dev/somesecret(服务:AWSSecretsManager;状态代码:400;错误代码:AccessDeniedException;

不确定为什么它承担 EKS 节点角色,当我将必需的角色和权限附加到服务帐户时,我也已经创建了托管策略(附加到角色)来访问 AWS 机密。

RBAC 本身仅用于 kubernetes 访问管理。 您已经定义了一个附加了 AWS 角色的 ServiceAccount,这很好。

您能否分享附加到角色role/spark-secret-role的 AWS 策略? 请与我们分享 Pod 清单,您需要将 ServiceAccount 附加到 Pod 本身。 否则,Pod 不会将 ServiceAccount 与附加的 AWS 角色一起使用。

您还需要在 AWS 中创建 OIDC ID 提供商 (IdP)。

整个事情被称为 IRSA(服务账户的 IAM 角色)您可以在这篇 AWS 博客文章中找到所有必要的信息: https://aws.amazon.com/de/blogs/opensource/introducing-fine-grained-iam-roles -服务帐户/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM