Jihu GitLab CI x Vault, haga un buen trabajo en la gestión del cumplimiento y la seguridad de las claves empresariales

Tabla de contenido

Acerca de la bóveda

El principio de integración de Jihu GitLab CI y Vault

Dos formas de integrar Jihu GitLab CI con Vault

Uso de secretos: palabra clave de bóveda

Modo CLI


"Un dique de mil millas se derrumba en un hormiguero". La gestión de claves es para todo el ciclo de vida del desarrollo de software lo que un hormiguero es para un largo terraplén. La filtración de claves se ha convertido en un factor importante que provoca que las empresas sean atacadas por chantaje . Las claves de gestión de seguridad y cumplimiento no solo pueden evitar eficazmente que las empresas sufran pérdidas económicas importantes, sino también crear una buena cultura de seguridad corporativa, ayudando a las empresas a acelerar la entrega de software y al mismo tiempo garantizar el cumplimiento de la seguridad.

La gestión de claves debe cubrir todo el ciclo de vida del desarrollo de software. Por ejemplo, es necesario evitar la codificación rígida de las claves durante la fase de codificación, evitar que las claves se impriman en el registro de construcción durante la fase de construcción y escanear si las claves se imprimen en el registro de construcción durante la fase de construcción. Se necesita código modificado (o historial) durante la fase de prueba. Contiene información clave, etc. El propio GitLab tiene funciones de administración de claves maduras. Por ejemplo, en la etapa CI/CD Pipeline, las variables de entorno de CI se pueden usar para almacenar claves y también se pueden integrar métodos de escaneo de seguridad para la detección de claves en CI/CD Pipeline para detectar problemas en tiempo Cambie la información clave en el código para evitar fugas. Para obtener información sobre Jihu GitLab CI y administración de claves, puede ver el artículo Jihu GitLab CI/CD SSHKEY Mask . Para obtener artículos sobre el escaneo de seguridad de claves de Jihu GitLab, puede ver 1 línea de código para habilitar la "detección de claves" para proporcionar información confidencial. Datos más bloqueo de protección .

Este artículo demostrará la integración de Jihu GitLab CI y Vault para la gestión de seguridad y cumplimiento de claves.

Acerca de la bóveda

Vault es un sistema de gestión de cifrado y claves basado en identidad de código abierto lanzado por Hashorp. Utilice el principio de Denegar todo predeterminado para administrar claves como clave API, nombre de usuario y contraseña (contraseña), token de acceso (token) y certificados (certificados). Para obtener más información sobre Vault, consulte el sitio web oficial de Vault .

El principio de integración de Jihu GitLab CI y Vault

  1. Configure la clave en la bóveda (ya sea UI, CLI o API);

  2. Generar JWT para uso de CI Job;

  3. Runner se conecta con Hashicorp y utiliza JWT para la autenticación;

  4. Vault valida JWT;

  5. Vault verifica el reclamo encuadernado y la política de bóveda correspondiente;

  6. Vault devuelve el token de acceso;

  7. Runner lee información clave de Vault para su uso.

Dos formas de integrar Jihu GitLab CI con Vault

Puede usar  secrets palabras clave o CLI para usar Vault en GitLab CI.

secrets:vault Uso de palabras clave

secrets Es la palabra clave utilizada en GitLab CI para leer claves de herramientas externas de administración de claves. Puede usarlo  secrets:vault para leer la información clave almacenada en el servidor de la bóveda.

Por ejemplo, el motor kv (v2) se utiliza en la bóveda para almacenar el nombre de usuario y la contraseña del almacén de imágenes del contenedor:

# 写入用户名和密码
$ vault kv put jh/docker-registry/credentials username=jh-gitlab password=passw0rd

# 读取用户名和密码
vault  read -format=json jh/data/docker-registry/credentials | jq -r '.data.data'
{
  "password": "passw0rd",
  "username": "jh-gitlab"
}

Almacene las variables de entorno relacionadas con la bóveda en variables de GitLab CI:

  • VAULT_SERVER_URL:vaultdirección del servidor;

  • VAULT_AUTH_ROLE: El rol creado en la bóveda se utiliza para vincularse a la política correspondiente para lograr una gestión y un control refinados de las claves de almacenamiento;

  • VAULT_AUTH_PATH: La ruta de montaje del método de autenticación en Vault Auth, el valor predeterminado es  jwt.

.gitlab-ci.yml El contenido del archivo es el siguiente:

stages:  
  - vault
  
get_credentials:  
  stage: vault  
  tags:    
    - vault  
  image:     
    name: vault:1.13.3  
  secrets:    
    DATABASE_PASSWORD:      
      vault: docker-registry/credentials/password@jh  
  script:    
    - echo $DATABASE_PASSWORD

Ver los resultados de la compilación de CI/CD Pipeline:

Puede ver que Jihu GitLab CI lee con éxito la información de la bóveda y la guarda en  DATABASE_PASSWORD el archivo nombrado. La ruta es como se muestra en la captura de pantalla del cuadro rojo.

Modo CLI

Al igual que acceder a Valut localmente a través de la CLI, puede usar varios comandos de la bóveda para agregar, eliminar, modificar y consultar claves. Sigo tomando la información clave escrita anteriormente como ejemplo para demostrar el uso de CLI en GitLab CI.

.gitlab-ci.yml El contenido del archivo es el siguiente:

get_credentials:  
  stage: vault  
  tags:    
    - vault  
  image: vault:1.13.3  
  script:  
    #  vault 服务器的地址  
    - export VAULT_ADDR=http://163.228.231.126:8200   
    #  vault 认证授权所用的 token
    - export VAULT_TOKEN="$(vault write -field=token auth/jwt/login role=jh jwt=$CI_JOB_JWT)"     
    # 从 vault 读取密钥信息  
    - export PASSWORD="$(vault kv get -field=password jh/docker-registry/credentials)"    
    # 打印密钥信息
    - echo $PASSWORD

Ver los resultados de la compilación de CI/CD Pipeline:

Puede ver que Jihu GitLab CI lee correctamente la información de la bóveda.

Tenga en cuenta que la información clave leída directamente mediante la CLI se puede  echo imprimir mediante comandos. Debe evitar imprimir la información clave durante la compilación de CI/CD Pipeline o tomar el primer método para evitar que se pierda la información clave durante la CI/CD. CD Pipeline build Fugas durante el proceso.

referencia:

  1.  Documentación del sitio web oficial de la bóveda de Jihu GitLab

  2.  Documento de configuración detallado de GitLab y Vault escrito por Yin Xuefeng, arquitecto de soluciones de preventa de Jihu GitLab

Supongo que te gusta

Origin blog.csdn.net/weixin_44749269/article/details/132816996
Recomendado
Clasificación