ASD

Secrets Management

Implementa gestión segura de secretos en pipelines de CI/CD usando Vault, AWS Secrets Manager u otras soluciones nativas de plataforma. Úsalo al manejar credenciales sensibles, rotar secretos o asegurar entornos de CI/CD.

Reemplaza a: Hardcodear credenciales en el código o pipelines

Estrellas
38.8k

en todo el repo

Actividad
41

0–100, la ruta de este skill

Actualizado
hace 3 meses

último commit aquí

Commits
0

últimos 90 días

Contexto
1.9k tok

53 tok en reposo

Paquete
1 archivo

7 KB

Instalar

Funciona con cualquier agente que lea SKILL.md

npx -y skills add wshobson/agents --skill secrets-management --agent claude-code

Se instala solo en este repositorio.

Este skill makes network requests, needs API credentials.

Qué hace

  • Configura integración de HashiCorp Vault, AWS Secrets Manager, Azure Key Vault o Google Secret Manager en pipelines de CI/CD
  • Genera plantillas de GitHub Actions y GitLab CI para inyectar secretos como variables de entorno enmascaradas
  • Implementa rotación automática de secretos con ejemplos en Python/boto3 y procesos manuales
  • Configura Kubernetes External Secrets Operator con SecretStore y ExternalSecret
  • Añade escaneo de secretos con TruffleHog en pre-commit hooks y pipelines CI/CD

Úsalo cuando

  • Almacenar API keys y credenciales
  • Gestionar contraseñas de bases de datos y certificados TLS
  • Rotar secretos automáticamente
  • Implementar acceso con mínimo privilegio

No lo uses cuando

    Qué lo activa

    Di cualquiera de estas frases y el agente debería cargar este skill.

    • Configura Vault para inyectar secretos en mi pipeline de GitHub Actions
    • Ayúdame a rotar automáticamente las credenciales de la base de datos en AWS
    • Necesito implementar escaneo de secretos con TruffleHog en mi CI/CD
    • Cómo integro AWS Secrets Manager con Terraform para mi RDS

    SKILL.md

    En inglés

    Secrets Management

    Secure secrets management practices for CI/CD pipelines using Vault, AWS Secrets Manager, and other tools.

    Purpose

    Implement secure secrets management in CI/CD pipelines without hardcoding sensitive information.

    When to Use

    • Store API keys and credentials
    • Manage database passwords
    • Handle TLS certificates
    • Rotate secrets automatically
    • Implement least-privilege access

    Secrets Management Tools

    HashiCorp Vault

    • Centralized secrets management
    • Dynamic secrets generation
    • Secret rotation
    • Audit logging
    • Fine-grained access control

    AWS Secrets Manager

    • AWS-native solution
    • Automatic rotation
    • Integration with RDS
    • CloudFormation support

    Azure Key Vault

    • Azure-native solution
    • HSM-backed keys
    • Certificate management
    • RBAC integration

    Google Secret Manager

    • GCP-native solution
    • Versioning
    • IAM integration

    HashiCorp Vault Integration

    Setup Vault

    # Start Vault dev server
    vault server -dev
    
    # Set environment
    export VAULT_ADDR='http://127.0.0.1:8200'
    export VAULT_TOKEN='root'
    
    # Enable secrets engine
    vault secrets enable -path=secret kv-v2
    
    # Store secret
    vault kv put secret/database/config username=admin password=secret
    

    GitHub Actions with Vault

    name: Deploy with Vault Secrets
    
    on: [push]
    
    jobs:
      deploy:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
    
          - name: Import Secrets from Vault
            uses: hashicorp/vault-action@v2
            with:
              url: https://vault.example.com:8200
              token: ${{ secrets.VAULT_TOKEN }}
              secrets: |
                secret/data/database username | DB_USERNAME ;
                secret/data/database password | DB_PASSWORD ;
                secret/data/api key | API_KEY
    
          - name: Use secrets
            run: |
              echo "Connecting to database as $DB_USERNAME"
              # Use $DB_PASSWORD, $API_KEY
    

    GitLab CI with Vault

    deploy:
      image: vault:1.17
      before_script:
        - export VAULT_ADDR=https://vault.example.com:8200
        - export VAULT_TOKEN=$VAULT_TOKEN
        - apk add curl jq
      script:
        - |
          DB_PASSWORD=$(vault kv get -field=password secret/database/config)
          API_KEY=$(vault kv get -field=key secret/api/credentials)
          echo "Deploying with secrets..."
          # Use $DB_PASSWORD, $API_KEY
    

    Reference: See references/vault-setup.md

    AWS Secrets Manager

    Store Secret

    aws secretsmanager create-secret \
      --name production/database/password \
      --secret-string "super-secret-password"
    

    Retrieve in GitHub Actions

    - name: Configure AWS credentials
      uses: aws-actions/configure-aws-credentials@v4
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
        aws-region: us-west-2
    
    - name: Get secret from AWS
      run: |
        SECRET=$(aws secretsmanager get-secret-value \
          --secret-id production/database/password \
          --query SecretString \
          --output text)
        echo "::add-mask::$SECRET"
        echo "DB_PASSWORD=$SECRET" >> $GITHUB_ENV
    
    - name: Use secret
      run: |
        # Use $DB_PASSWORD
        ./deploy.sh
    

    Terraform with AWS Secrets Manager

    data "aws_secretsmanager_secret_version" "db_password" {
      secret_id = "production/database/password"
    }
    
    resource "aws_db_instance" "main" {
      allocated_storage    = 100
      engine              = "postgres"
      instance_class      = "db.t3.large"
      username            = "admin"
      password            = jsondecode(data.aws_secretsmanager_secret_version.db_password.secret_string)["password"]
    }
    

    GitHub Secrets

    Organization/Repository Secrets

    - name: Use GitHub secret
      env:
        API_KEY: ${{ secrets.API_KEY }}
        DATABASE_URL: ${{ secrets.DATABASE_URL }}
      run: |
        # Secrets are injected as env vars — never print them to logs
        ./deploy.sh
    

    Environment Secrets

    deploy:
      runs-on: ubuntu-latest
      environment: production
      steps:
        - name: Deploy
          env:
            PROD_API_KEY: ${{ secrets.PROD_API_KEY }}
          run: |
            # Secret injected as env var — never print to logs
            ./deploy.sh
    

    Reference: See references/github-secrets.md

    GitLab CI/CD Variables

    Project Variables

    deploy:
      script:
        - echo "Deploying with $API_KEY"
        - echo "Database: $DATABASE_URL"
    

    Protected and Masked Variables

    • Protected: Only available in protected branches
    • Masked: Hidden in job logs
    • File type: Stored as file

    Best Practices

    1. Never commit secrets to Git
    2. Use different secrets per environment
    3. Rotate secrets regularly
    4. Implement least-privilege access
    5. Enable audit logging
    6. Use secret scanning (GitGuardian, TruffleHog)
    7. Mask secrets in logs
    8. Encrypt secrets at rest
    9. Use short-lived tokens when possible
    10. Document secret requirements

    Secret Rotation

    Automated Rotation with AWS

    import boto3
    import json
    
    def lambda_handler(event, context):
        client = boto3.client('secretsmanager')
    
        # Get current secret
        response = client.get_secret_value(SecretId='my-secret')
        current_secret = json.loads(response['SecretString'])
    
        # Generate new password
        new_password = generate_strong_password()
    
        # Update database password
        update_database_password(new_password)
    
        # Update secret
        client.put_secret_value(
            SecretId='my-secret',
            SecretString=json.dumps({
                'username': current_secret['username'],
                'password': new_password
            })
        )
    
        return {'statusCode': 200}
    

    Manual Rotation Process

    1. Generate new secret
    2. Update secret in secret store
    3. Update applications to use new secret
    4. Verify functionality
    5. Revoke old secret

    External Secrets Operator

    Kubernetes Integration

    apiVersion: external-secrets.io/v1beta1
    kind: SecretStore
    metadata:
      name: vault-backend
      namespace: production
    spec:
      provider:
        vault:
          server: "https://vault.example.com:8200"
          path: "secret"
          version: "v2"
          auth:
            kubernetes:
              mountPath: "kubernetes"
              role: "production"
    
    ---
    apiVersion: external-secrets.io/v1beta1
    kind: ExternalSecret
    metadata:
      name: database-credentials
      namespace: production
    spec:
      refreshInterval: 1h
      secretStoreRef:
        name: vault-backend
        kind: SecretStore
      target:
        name: database-credentials
        creationPolicy: Owner
      data:
        - secretKey: username
          remoteRef:
            key: database/config
            property: username
        - secretKey: password
          remoteRef:
            key: database/config
            property: password
    

    Secret Scanning

    Pre-commit Hook

    #!/bin/bash
    # .git/hooks/pre-commit
    
    # Check for secrets with TruffleHog
    docker run --rm -v "$(pwd):/repo" \
      trufflesecurity/trufflehog:3.88 \
      filesystem --directory=/repo
    
    if [ $? -ne 0 ]; then
      echo "❌ Secret detected! Commit blocked."
      exit 1
    fi
    

    CI/CD Secret Scanning

    secret-scan:
      stage: security
      image: trufflesecurity/trufflehog:3.88
      script:
        - trufflehog filesystem .
      allow_failure: false
    

    Related Skills

    • github-actions-templates - For GitHub Actions integration
    • gitlab-ci-patterns - For GitLab CI integration
    • deployment-pipeline-design - For pipeline architecture

    Reproducido de wshobson/agents bajo licencia MIT. Leer esta página en markdown.

    Archivos

    1 archivo en el paquete. Solo se lee SKILL.md al activarse — las referencias se cargan si el skill decide que las necesita.

    Antes de instalar

    Requiere acceso a un proveedor de secretos (Vault, AWS/Azure/GCP) y, según el caso, CLI como vault, aws o herramientas como TruffleHog/GitGuardian.

    Necesita en el PATH:awsdocker

    Variables de entorno:API_KEYDATABASE_URLDB_PASSWORDDB_USERNAMEGITHUB_ENVSECRETVAULT_TOKEN

    Detalles

    Creador
    wshobson
    Categoría
    Seguridad
    Licencia
    MIT
    Recursos incluidos
    Solo SKILL.md
    Repositorio
    wshobson/agents
    Código fuente
    Ver SKILL.md

    Etiquetas

    Más de wshobson/agents

    Este repo incluye 180 skills. Si instalas uno, normalmente ya tienes los demás.

    Úsalo al seleccionar y colocar iconos, imágenes, SVGs, diagramas o infografías de apoyo aprobados en un PPTX editable.

    Costo de contexto al activarse
    344 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo cuando pidan optimizar un prompt, mejorar su rendimiento, diseñar una plantilla, aplicar chain-of-thought, few-shot prompting o técnicas avanzadas de prompt engineering para producción.

    Costo de contexto al activarse
    1.3k tok
    Tamaño del paquete
    10 archivos
    Última actualización
    el mes pasado
    herramientas desarrollo

    Úsalo al redactar o reparar una especificación JSON con coordenadas explícitas para un PPTX editable.

    Costo de contexto al activarse
    489 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo para validar o reparar un PPTX editable en cuanto a geometría, accesibilidad, editabilidad nativa, linaje de fuente e integridad del paquete OOXML.

    Costo de contexto al activarse
    409 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo para analizar un PPTX de referencia en modo solo lectura: estructura, tema, tipografía, ritmo de layout, diagnósticos, catálogos de plantillas derivados o inspección segura del paquete OOXML.

    Costo de contexto al activarse
    689 tok
    Tamaño del paquete
    8 archivos
    Última actualización
    hace 26 días
    documentos

    Úsalo al preparar la narrativa, las fuentes y el contexto de diseño para un nuevo deck PPTX editable.

    Costo de contexto al activarse
    415 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 26 días
    documentos

    Skills relacionados

    Domina las mejores prácticas de seguridad en smart contracts para prevenir vulnerabilidades comunes e implementar patrones seguros en Solidity.

    Costo de contexto al activarse
    891 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 2 meses
    seguridad

    Configura un gating humano para las acciones de revisión de agentes IA en Claude Code, con un rastro de aprobación auditable criptográficamente y gates aplicados con Cedar.

    Costo de contexto al activarse
    1.4k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    el mes pasado
    seguridad

    Domina patrones de autenticación y autorización (JWT, OAuth2, sesiones, RBAC) para construir sistemas de control de acceso seguros y escalables.

    Costo de contexto al activarse
    669 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 2 meses
    seguridad