从 HELM Charts 访问 AWS

问题描述 投票:0回答:2

场景: 我正在 kubernetes 中运行应用程序并使用 HELM 图表进行部署,我的 env 文件位于 AWS Secret Manager 中,我想从 InitContainers 填充 env。 我有一个 python 脚本,实际上可以从 AWS Secret Manager 中提取机密并创建 env 文件,但这需要 AWS 访问权限(我已经创建了专门允许 AWS Secret Manager 的角色)

问题是我不想在 helm 图表中以纯文本方式打开 AWS 访问,我正在寻找一种安全的方式来提供 AWS 访问

可能的解决方案: 我应该在 HELM Charts 中设置环境,以便 Init 容器可以承担角色并执行 python 脚本

我可以使用 Hashicorp Vault 并可以从那里获取秘密

问题

  • 我不想在我的 HELM 图表中添加任何访问权限
  • 如果我使用 hashcorpVault,那么我需要在 HELM 图表中提供解封密钥或用户令牌

我不想以纯文本形式透露任何信息,如果有人有更好的方法,请告诉我

谢谢

问题

  • 我不想在我的 HELM 图表中添加任何访问权限
  • 如果我使用 hashcorpVault,那么我需要在 HELM 图表中提供解封密钥或用户令牌
amazon-web-services kubernetes-helm hashicorp-vault aws-secrets-manager
2个回答
1
投票

作为一个解决方案,我所做的是将角色分配给可以访问AWS秘密管理器的工作节点,这样我不需要在初始化容器中公开我的密钥

module "secret_manager_readonly" {
source                      = "../modules/v1.3.7/iam"
  create                      = var.secret_manager_readonly_create
  this_policy_name            = "secret_manager_readonly"
  policy_description          = "secret_manager_readonly"
  this-json-tpl               = var.secret_manager_readonly_policy_json
  this-stsrole-json-filename  = var.this-stsrole-json-filename
  profile_name                = "SecretManagerProfile"
  tags                        = var.tags       
}

我在工人中扮演的角色

resource "aws_iam_role_policy_attachment" "attachment" {
  for_each = toset([
    "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly",
    "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy",
    "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy",
    data.aws_iam_policy.secret_manager_readonly.arn
  ])

  role       = module.atom_iam_eks_node.role_name
  policy_arn = each.value
  depends_on = [
    module.atom_iam_eks_node,
    data.aws_iam_policy.secret_manager_readonly
  ]
}

0
投票

如果您使用 EKS,您可以联合访问权限,以便容器可以在集群(您的 Python 应用程序)内承担角色。

否则,您可以将您的机密存储为 k8s 机密并对其进行加密(如果您配置,EKS 可以轻松完成此操作)

您可以直接通过 CSI driver

从 SecretManager 挂载 Secret

您还可以使用其他解决方案,例如 Mozilla sops。

© www.soinside.com 2019 - 2024. All rights reserved.