slogan3

Help me een GitHub Actions-workflow maken dat omgevingsspecifieke geheimen veilig beheert.

description

Door deze prompt te gebruiken, kun je ervoor zorgen dat gevoelige informatie veilig wordt behandeld in verschillende omgevingen, het risico op datalekken vermindert en de naleving van beveiligingspraktijken verbetert.

prompt

try_prompt

Ik heb hulp nodig bij het ontwerpen van een GitHub Actions-workflow die tijdens mijn CI/CD-proces op een veilige manier omgevingsspecifieke geheimen beheert. Projecttype: {{project_type}}. Te onderst ... more
generate_helper
disclaimerOnPageApi image_legal_disclaimer...

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een GitHub Actions-workflow die omgevingsspecifieke geheimen ophaalt en beheert via HashiCorp Vault, met encryptie voor een Node.js-project. Deze workflow ondersteunt de omgevingen ontwikkeling en productie en zorgt voor een veilige handling van geheimen. ```yaml name: CI/CD Workflow on: push: branches: - main - develop env: VAULT_ADDR: ${{ secrets.VAULT_ADDR }} # URL van je HashiCorp Vault VAULT_TOKEN: ${{ secrets.VAULT_TOKEN }} # Vault token, veilig opgeslagen in GitHub Secrets ENVIRONMENT: ${{ github.ref == 'refs/heads/main' && 'production' || 'development' }} jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Installeer Node.js uses: actions/setup-node@v3 with: node-version: '16' # Pas de versie aan indien nodig - name: Installeer dependencies run: npm install - name: Authenticeer bij HashiCorp Vault run: | # Bijvoorbeeld: geen extra stap nodig als VAULT_TOKEN al is ingesteld echo "Vault authenticatie succesvol" - name: Haal omgevingsspecifieke geheimen op uit Vault id: fetch_secrets run: | # Voorbeeld: geheime sleutels ophalen SECRET_KEY=$(vault kv get -field=secret_key secret/${{ env.ENVIRONMENT }}) API_KEY=$(vault kv get -field=api_key secret/${{ env.ENVIRONMENT }}) # Exporteren als GitHub Actions-omgevingsvariabelen echo "SECRET_KEY=${SECRET_KEY}" >> $GITHUB_ENV echo "API_KEY=${API_KEY}" >> $GITHUB_ENV - name: Encrypteer geheimen voor veilige opslag (optioneel) if: false # Vervang door waar nodig, bijvoorbeeld voor encryptie voor externe opslag run: | # Bijvoorbeeld: gebruik OpenSSL om geheimen te encrypten echo "${SECRET_KEY}" | openssl enc -aes-256-cbc -a -salt -out secret_key.enc -pass pass:jeWachtwoord - name: Voer tests run: npm test - name: Build project run: npm run build - name: Deploy naar omgeving env: SECRET_KEY: ${{ env.SECRET_KEY }} API_KEY: ${{ env.API_KEY }} run: | # Gebruik de opgehaalde geheime variabelen voor deployment echo "Deploy naar ${{ env.ENVIRONMENT }} met geheime sleutels" # Voorbeeld: gebruik geheime sleutels in je deployment scripts # npm run deploy -- --secret-key=$SECRET_KEY --api-key=$API_KEY ``` **Belangrijke punten:** - **Veiligheid:** De geheime sleutels worden opgehaald uit HashiCorp Vault en opgeslagen in GitHub Actions-omgeving variabelen, waardoor ze niet in de repository of logs zichtbaar zijn. - **Encryptie:** Indien je geheime data wilt encrypten voor opslag of overdracht, kun je OpenSSL of andere encryptietools gebruiken zoals getoond. - **Secrets in GitHub:** Zorg dat `VAULT_ADDR` en `VAULT_TOKEN` veilig zijn opgeslagen in GitHub Secrets. - **Aanpassingen:** Pas de Vault paths en fields aan op basis van jouw Vault configuratie. - **Omgevingsafhankelijkheid:** De variabele `ENVIRONMENT` bepaalt automatisch of je werkt in ontwikkeling of productie. Wil je dat ik het verder aanpas of meer details toevoeg?
provider: deepseek
model: deepseek-chat
Hier is een veilige GitHub Actions-workflow voor Node.js met HashiCorp Vault voor geheimbeheer: ```yaml name: CI/CD Pipeline met Vault on: push: branches: [ main, develop ] pull_request: branches: [ main ] env: VAULT_ADDR: https://uw-vault-server:8200 NODE_VERSION: '18' jobs: deploy-dev: runs-on: ubuntu-latest environment: ontwikkeling steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - name: Installeer afhankelijkheden run: npm ci - name: Authenticeer met Vault uses: hashicorp/vault-action@v2 with: url: ${{ env.VAULT_ADDR }} method: jwt role: development-role secrets: | secret/data/development/app secrets | APP_CONFIG ; secret/data/development/database secrets | DB_CONFIG - name: Decrypt en laad omgevingsvariabelen run: | echo "$APP_CONFIG" | base64 --decode > app-config.json echo "$DB_CONFIG" | base64 --decode > db-config.json - name: Voer tests uit run: npm test env: NODE_ENV: test - name: Deploy naar ontwikkeling run: | # Voeg uw deploy script toe npm run deploy:dev deploy-prod: runs-on: ubuntu-latest environment: productie if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - name: Installeer afhankelijkheden run: npm ci - name: Authenticeer met Vault uses: hashicorp/vault-action@v2 with: url: ${{ env.VAULT_ADDR }} method: jwt role: production-role secrets: | secret/data/production/app secrets | APP_CONFIG ; secret/data/production/database secrets | DB_CONFIG ; secret/data/production/api-keys secrets | API_KEYS - name: Decrypt en valideer configuratie run: | echo "$APP_CONFIG" | base64 --decode > app-config.json echo "$DB_CONFIG" | base64 --decode > db-config.json echo "$API_KEYS" | base64 --decode > api-keys.json - name: Voer security scan uit run: npm run security-scan - name: Deploy naar productie run: | npm run deploy:prod ``` **Belangrijke beveiligingsmaatregelen:** 1. **Vault JWT Authentication**: ```yaml # GitHub OIDC token voor veilige authenticatie permissions: id-token: write contents: read ``` 2. **Omgevingsspecifieke secrets**: - Ontwikkeling: `secret/data/development/` - Productie: `secret/data/production/` 3. **Encryptie configuratie in Vault**: ```bash # Vault transit engine voor encryptie vault secrets enable transit vault write transit/keys/ci-cd-key type=aes256-gcm96 ``` 4. **GitHub Environment protection**: - Configureer environment secrets in GitHub - Vereis review voor productie deployment **Setup vereisten**: 1. Configureer Vault JWT auth backend 2. Maak policies voor development/production roles 3. Sla encrypted secrets op in Vault KV v2 engine 4. Configureer GitHub OIDC provider in Vault De workflow gebruikt base64 encoding voor extra beveiliging en scheidt ontwikkel- en productiegeheimen volledig.