Skills Agentes

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
39.8k

en todo el repo

Actividad
37

0–100, la ruta de este skill

Actualizado
hace 6 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 183 skills. Si instalas uno, normalmente ya tienes los demás. Ver el pack agents entero y su comando de instalación

    Instala y opera Hermes Tweet, un plugin de Hermes Agent para investigar X/Twitter, leer timelines, analizar tweets y ejecutar operaciones privadas o de cambio de estado con aprobación previa.

    Costo de contexto al activarse
    1.4k tok
    Tamaño del paquete
    3 archivos
    Última actualización
    hace 2 meses
    redes sociales

    Úsalo para mantener un almacén Markdown de conocimiento donde cada afirmación compilada se rastrea hasta una fuente inmutable y el drift se detecta con git diff sin gastar tokens.

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

    Úsalo al diseñar o revisar un esquema específico de PostgreSQL: buenas prácticas, tipos de datos, indexación, restricciones, patrones de rendimiento y funciones avanzadas.

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

    Úsalo cuando un proyecto guarda su estado en Superself: lee `self context` al iniciar sesión, vincula el trabajo a una work unit, reporta con evidencia y registra decisiones confirmadas.

    Costo de contexto al activarse
    1.3k tok
    Tamaño del paquete
    1 archivo
    Última actualización
    hace 2 meses
    productividad

    Ú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
    hace 2 meses
    herramientas desarrollo

    Audita y reescribe prosa para que deje de sonar generada por máquina. Incluye modo solo-detección, modo reescritura y modo edición en el lugar, con perfiles opcionales de voz y contexto.”

    Costo de contexto al activarse
    1.9k tok
    Tamaño del paquete
    4 archivos
    Última actualización
    hace 2 meses
    redaccion contenido

    Skills relacionados

    Comprende técnicas de anti-reversing, ofuscación y protección de software: evasión de malware, anti-debugging en CTF, binarios empaquetados y detección de entornos virtualizados.

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

    Construye árboles de ataque completos para visualizar rutas de amenaza, identificar brechas de defensa y comunicar riesgos de seguridad a stakeholders.

    Costo de contexto al activarse
    653 tok
    Tamaño del paquete
    2 archivos
    Última actualización
    hace 5 meses
    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 5 meses
    seguridad