You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab部署中使用AWS Parameter Store存储的AWS账户凭证?

在GitLab部署流程中使用AWS Parameter Store存储的凭证

一、配置GitLab Runner的AWS访问权限

要从Parameter Store拉取凭证,首先得让GitLab Runner拥有对应的AWS访问权限,推荐两种配置方式:

EC2 Runner(优先选择)

如果你的GitLab Runner部署在AWS EC2实例上,直接给实例附加IAM角色即可,无需在GitLab中存储AWS密钥。角色需要包含SSM参数读取权限,示例IAM策略如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssm:GetParameter",
        "ssm:GetParametersByPath"
      ],
      "Resource": [
        "arn:aws:ssm:us-east-1:123456789012:parameter/prod/*",
        "arn:aws:ssm:us-east-1:123456789012:parameter/prod/db/password"
      ]
    }
  ]
}

根据你的实际参数路径和单个参数调整Resource字段即可。

非EC2 Runner

如果Runner不在AWS环境中,就在GitLab项目的Settings > CI/CD > Variables中添加AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY两个变量,记得勾选Protected和Masked选项,防止明文泄露。对应的IAM用户需要拥有上述SSM读取权限。

二、在CI配置中获取Parameter Store参数

在.gitlab-ci.yml的部署阶段,用AWS CLI拉取参数并注入环境变量:

单个参数获取

适合只需要拉取一两个参数的场景:

# 拉取加密存储的数据库密码,--with-decryption仅针对加密参数
DB_PASSWORD=$(aws ssm get-parameter --name "/prod/db/password" --with-decryption --query "Parameter.Value" --output text)
# 注入环境变量供后续步骤使用
export DB_PASSWORD=$DB_PASSWORD

批量拉取路径下的参数

如果多个参数集中在同一路径下(比如/prod/app/),可以批量拉取并自动生成环境变量:

# 先安装jq(如果Runner镜像没有预装的话)
apt-get update && apt-get install -y jq

# 拉取路径下所有参数,转换为环境变量脚本并执行
aws ssm get-parameters-by-path --path "/prod/app/" --with-decryption --query "Parameters[*].{Name:Name,Value:Value}" --output json | jq -r '.[] | "export \(.Name | split("/")[-1])=\(.Value)"' > params.sh
source params.sh

这段脚本会把参数名的最后一段作为环境变量名(比如/prod/app/API_KEY会变成API_KEY)。

三、在部署流程中使用凭证

拉取到的环境变量可以直接在后续部署命令中使用,举几个常见场景:

# 示例1:部署到ECS服务
aws ecs update-service --cluster prod-cluster --service app-service --force-new-deployment

# 示例2:Terraform部署时传入变量
terraform apply -var "db_password=$DB_PASSWORD" -auto-approve

# 示例3:启动Node.js应用,读取环境变量
node app.js

四、安全优化建议

  • 用自定义KMS密钥加密Parameter Store中的敏感参数,不要依赖AWS默认密钥,进一步提升安全性。
  • 限制IAM角色/用户的SSM权限范围,仅授权必要的参数路径,遵循最小权限原则。
  • 定期轮换AWS IAM凭证(如果使用的是密钥而非实例角色)。

内容的提问来源于stack exchange,提问作者NOUR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:50:36