场景: 我正在 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 并可以从那里获取秘密
问题
我不想以纯文本形式透露任何信息,如果有人有更好的方法,请告诉我
谢谢
问题
作为一个解决方案,我所做的是将角色分配给可以访问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
]
}