gitlab - 将 Hashicorp Vault 与 GitLab 管道一起使用的最佳方式是什么?
问题描述
假设我想用 Vault 中的值创建一个变量。
variables:
$SSH_PRIVATE_KEY: `vault kv get -field=private_key project/production`
before_script:
- echo "$SSH_PRIVATE_KEY"
是否可以?
还有其他方法可以在管道中使用 Vault 机密吗?
解决方案
2019 年 7 月的原始答案:
您可以看到它在脚本步骤之前/之后使用,最后带有撤销的令牌。
看gitlab.eng.cleardata.com
pub/pipelines/gcp-ci.yml
一个例子:
# Obtains credentials via vault (the gitlab-runner authenticates to vault using its AWS credentials)
# Configures the `gcloud` sdk and `kubectl` to authenticate to our *production* cluster
#
# Note: Do not override the before_script or the after_script in your job
#
.auth-prod: &auth-prod
image: cleardata/bionic
before_script:
- |
export CLUSTER_NAME=production
export CLUSTER_LOCATION=us-central1
export CLUSTER_PROJECT_ID=cleardata-production-cluster
- vault login -method=aws -path=gitlab-ci -no-print header_value=gitlab.eng.cleardata.com
- GCP_CREDS=$(vault read -field=private_key_data gitlab-ci/gcp/cleardata-production-cluster/key/deployment-key)
- gcloud auth activate-service-account --key-file=<(base64 -d <<<$GCP_CREDS)
- gcloud auth configure-docker
- gcloud beta container clusters get-credentials $CLUSTER_NAME --region $CLUSTER_LOCATION --project $CLUSTER_PROJECT_ID
after_script:
- vault token revoke -self
2020 年 3 月更新:GitLab 12.9 支持此功能
HashiCorp Vault GitLab CI/CD 托管应用程序
GitLab 希望让用户轻松进行现代机密管理。作为 GitLab CI 托管应用程序流程的一部分,我们现在为用户提供在 Kubernetes 集群中安装 Vault 的能力。
这将支持 Helm 图表安装中项目级别的密钥、令牌和其他机密的安全管理。
2020 年 4 月:GitLab 12.10:
从 HashiCorp Vault 检索 CI/CD 机密
在此版本中,GitLab 添加了对轻量级 JSON Web 令牌 (JWT) 身份验证的支持,以与您现有的 HashiCorp Vault 集成。
现在,您可以利用 HashiCorp 的 JWT 身份验证方法无缝地为 CI/CD 作业提供机密信息,而无需在 GitLab 中手动将机密信息作为变量提供。
请参阅GitLab 13.4(2020 年 9 月)
仅限高级/白银:
在 CI 作业中使用 HashiCorp Vault 机密
在 GitLab 12.10 中,GitLab 为 GitLab Runner 引入了获取机密并将其注入 CI 作业的功能。GitLab 现在通过在文件中构建新语法来扩展JWT Vault 身份验证方法。这使您可以更轻松地通过 GitLab 配置和使用 HashiCorp Vault。
secrets
.gitlab-ci.yml
https://about.gitlab.com/images/13_4/vault_ci.png -- 在 CI 作业中使用 HashiCorp Vault 机密
请参阅GitLab 13.9(2021 年 2 月)
Vault JWT(JSON Web Token)支持 GitLab 环境。
为了简化与 HashiCorp Vault 的集成,我们提供了 Vault JWT 令牌支持。从启动开始,您可以根据 JWT 中的数据限制访问。此版本为您提供了限制对凭据的访问的新维度:作业目标环境。
此版本扩展了现有的 Vault JWT 令牌以支持基于环境的限制。由于
environment
名称可以由运行管道的用户提供,因此我们建议您将新的基于环境的限制与现有ref_type
值一起使用,以获得最大的安全性。
推荐阅读
- r - R中的数据框根据某些行名删除行
- spring - 如何从 Spring Boot webapp 运行 commads
- android - 当我尝试从 recyclerView 调用函数时应用程序崩溃
- python - 如何在一天的最早值和一天的最新值之间获取缺失的时间戳?
- vue.js - 更改默认 vuetify-loader 变量 scss 文件路径
- java - 如何在 Primefaces 中压缩多个 pdf 文件?
- grails - 启动时未创建 Camunda 表
- python - 将 java.lang.string 转换为 PYthon 字符串/字典
- javascript - 画布性能图块集渲染
- r - 试图将数据写入 newick 格式 R