GitLabCI/CD变量与秘密管理Skill gitlab-ci-variables-secrets

此技能用于在GitLab CI/CD中安全配置和管理变量与秘密,包括预定义变量、自定义变量、变量作用域、保护和掩码变量、文件类型变量以及集成外部秘密提供商如HashiCorp Vault、Azure Key Vault和AWS Secrets Manager。它确保安全凭据处理,提高DevOps流程的安全性和效率,关键词:GitLab CI/CD, 变量管理, 秘密管理, DevOps, 云安全, CI/CD, 秘密集成。

CI/CD 0 次安装 0 次浏览 更新于 3/25/2026

name: gitlab-ci-variables-secrets user-invocable: false description: 当配置GitLab CI/CD变量、管理秘密或与外部秘密提供商集成时使用。涵盖安全凭据处理。 allowed-tools:

  • Read
  • Write
  • Edit
  • Bash
  • Grep
  • Glob

GitLab CI - 变量与秘密

在GitLab流水线中安全配置CI/CD变量和管理秘密。

变量类型

预定义变量

build:
  script:
    - echo "分支:$CI_COMMIT_BRANCH"
    - echo "提交:$CI_COMMIT_SHA"
    - echo "流水线:$CI_PIPELINE_ID"
    - echo "项目:$CI_PROJECT_NAME"
    - echo "注册表:$CI_REGISTRY_IMAGE"

自定义变量

variables:
  NODE_ENV: production
  DATABASE_URL: "postgres://localhost/app"

build:
  variables:
    BUILD_TARGET: dist
  script:
    - npm run build --target=$BUILD_TARGET

变量作用域

全局变量

variables:
  GLOBAL_VAR: "随处可用"

作业级变量

deploy:
  variables:
    DEPLOY_ENV: production
  script:
    - ./deploy.sh $DEPLOY_ENV

环境作用域变量

在GitLab UI中配置:设置 > CI/CD > 变量

  • 作用域到特定环境(生产、暂存)
  • 作用域到特定分支(主分支、开发分支)

保护和掩码变量

在gitlab-ci.yml中

variables:
  PUBLIC_KEY:
    value: "pk_test_xxx"
    description: "Stripe公钥"

在GitLab UI中

设置变量时:

  • 保护变量:仅在受保护的分支/标签上可用
  • 掩码变量:在作业日志中隐藏(需要特定格式)
  • 扩展变量:允许在值中引用其他变量

文件类型变量

deploy:
  script:
    - cat $KUBECONFIG  # 文件变量内容
    - kubectl apply -f deployment.yaml

外部秘密提供商

HashiCorp Vault

job:
  secrets:
    DATABASE_PASSWORD:
      vault:
        engine:
          name: kv-v2
          path: secret
        field: password
        path: production/db

Azure Key Vault

job:
  secrets:
    API_KEY:
      azure_key_vault:
        name: my-api-key
        version: latest

AWS Secrets Manager

job:
  secrets:
    AWS_SECRET:
      aws_secrets_manager:
        name: prod/api-key
        version_id: latest

OIDC认证

deploy:aws:
  id_tokens:
    AWS_TOKEN:
      aud: https://gitlab.com
  script:
    - >
      aws sts assume-role-with-web-identity
      --role-arn $AWS_ROLE_ARN
      --web-identity-token $AWS_TOKEN

最佳实践

  1. 切勿在.gitlab-ci.yml中硬编码秘密
  2. 对生产凭据使用保护变量
  3. 掩码敏感值以防止日志暴露
  4. 优先使用OIDC而非长期凭据
  5. 将变量作用域限制到所需最小环境
  6. 对证书和密钥使用文件类型变量