Jesús Pérez 6a59d34bb1
chore: update provisioning configuration and documentation
Update configuration files, templates, and internal documentation
for the provisioning repository system.

Configuration Updates:
- KMS configuration modernization
- Plugin system settings
- Service port mappings
- Test cluster topologies
- Installation configuration examples
- VM configuration defaults
- Cedar authorization policies

Documentation Updates:
- Library module documentation
- Extension API guides
- AI system documentation
- Service management guides
- Test environment setup
- Plugin usage guides
- Validator configuration documentation

All changes are backward compatible.
2025-12-11 21:50:42 +00:00

374 lines
13 KiB
Plaintext

# KMS (Key Management Service) Recipes
# ======================================
# Encryption, decryption, key management, and backend operations
# ============================================================================
# Encryption Operations
# ============================================================================
# Encrypt file with RustyVault (fastest default backend)
@kms-encrypt FILE:
#!/usr/bin/env bash
echo "🔒 Encrypting {{FILE}} with RustyVault..."
provisioning kms encrypt {{FILE}} --backend rustyvault
echo "✅ File encrypted: {{FILE}}.enc"
@kms-encrypt-backend FILE BACKEND:
#!/usr/bin/env bash
echo "🔒 Encrypting {{FILE}} with {{BACKEND}}..."
provisioning kms encrypt {{FILE}} --backend {{BACKEND}}
echo "✅ File encrypted"
@kms-decrypt FILE:
echo "🔓 Decrypting {{FILE}}..."
provisioning kms decrypt {{FILE}}
echo "✅ File decrypted"
@kms-encrypt-string DATA:
#!/usr/bin/env bash
echo "🔒 Encrypting string..."
echo "{{DATA}}" | provisioning kms encrypt --backend rustyvault --stdin
@kms-decrypt-string ENCRYPTED:
#!/usr/bin/env bash
echo "🔓 Decrypting string..."
echo "{{ENCRYPTED}}" | provisioning kms decrypt --stdin
@kms-encrypt-context FILE CONTEXT:
#!/usr/bin/env bash
echo "🔒 Encrypting {{FILE}} with context: {{CONTEXT}}..."
provisioning kms encrypt {{FILE}} --backend rustyvault --context "{{CONTEXT}}"
echo "✅ File encrypted with AAD"
# Backend Management
# ============================================================================
# List available KMS backends
@kms-backends:
echo "📋 Available KMS Backends"
echo "========================="
provisioning kms backends
@kms-status:
echo "📊 KMS Status"
echo "============="
provisioning kms status
@kms-test BACKEND="rustyvault":
echo "🧪 Testing KMS backend: {{BACKEND}}"
echo "===================================="
provisioning kms test {{BACKEND}}
@kms-test-all:
echo "🧪 Testing All KMS Backends"
echo "============================"
echo ""
echo "Testing RustyVault..."
provisioning kms test rustyvault || echo "❌ RustyVault failed"
echo ""
echo "Testing Age..."
provisioning kms test age || echo "❌ Age failed"
echo ""
echo "Testing Vault..."
provisioning kms test vault || echo "❌ Vault failed"
echo ""
echo "Testing Cosmian..."
provisioning kms test cosmian || echo "❌ Cosmian failed"
echo ""
echo "Testing AWS KMS..."
provisioning kms test aws-kms || echo "❌ AWS KMS failed"
echo ""
echo "✅ Backend testing complete"
@kms-switch-backend BACKEND:
echo "🔄 Switching to {{BACKEND}} backend..."
provisioning config set kms.backend {{BACKEND}}
echo "✅ Default backend changed to {{BACKEND}}"
# Key Management
# ============================================================================
# Generate AES256 encryption key
@kms-generate-key:
#!/usr/bin/env bash
echo "🔑 Generating AES256 encryption key..."
provisioning kms generate-key --spec AES256
echo "✅ Key generated"
@kms-generate-key-spec SPEC:
#!/usr/bin/env bash
echo "🔑 Generating {{SPEC}} key..."
provisioning kms generate-key --spec {{SPEC}}
echo "✅ Key generated"
@kms-list-keys:
echo "🔑 Encryption Keys"
echo "=================="
provisioning kms list-keys
@kms-key-info KEY_ID:
echo "🔍 Key Information: {{KEY_ID}}"
echo "=============================="
provisioning kms key-info {{KEY_ID}}
@kms-rotate-key KEY_ID:
echo "🔄 Rotating key: {{KEY_ID}}..."
provisioning kms rotate-key {{KEY_ID}}
echo "✅ Key rotated successfully"
@kms-delete-key KEY_ID:
#!/usr/bin/env bash
echo "🗑️ Deleting key: {{KEY_ID}}..."
read -p "⚠️ This will permanently delete the key. Continue? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
provisioning kms delete-key {{KEY_ID}}
echo "✅ Key deleted"
else
echo "❌ Cancelled"
fi
# Configuration Encryption
# ============================================================================
# Encrypt configuration file (YAML/TOML)
@encrypt-config FILE:
echo "🔒 Encrypting configuration: {{FILE}}..."
provisioning config encrypt {{FILE}}
echo "✅ Configuration encrypted"
@decrypt-config FILE:
echo "🔓 Decrypting configuration: {{FILE}}..."
provisioning config decrypt {{FILE}}
echo "✅ Configuration decrypted"
@encrypt-config-inplace FILE:
#!/usr/bin/env bash
echo "🔒 Encrypting configuration in-place: {{FILE}}..."
provisioning config encrypt {{FILE}} --in-place
echo "✅ Configuration encrypted (original replaced)"
@view-encrypted-config FILE:
#!/usr/bin/env bash
echo "👁️ Viewing encrypted configuration: {{FILE}}"
echo "=============================================="
provisioning config decrypt {{FILE}} --stdout
# Bulk Operations
# ============================================================================
# Encrypt all .env files in directory
@encrypt-env-files DIR=".":
#!/usr/bin/env bash
echo "🔒 Encrypting all .env files in {{DIR}}..."
find {{DIR}} -name "*.env" -type f -exec sh -c 'echo "Encrypting {}"; provisioning kms encrypt "{}" --backend rustyvault' \;
echo "✅ All .env files encrypted"
@encrypt-configs DIR="config":
echo "🔒 Encrypting all configs in {{DIR}}..."
find {{DIR}} \( -name "*.yaml" -o -name "*.toml" \) -type f -exec sh -c 'echo "Encrypting {}"; provisioning config encrypt "{}"' \;
echo "✅ All configurations encrypted"
@decrypt-all-files DIR:
echo "🔓 Decrypting all encrypted files in {{DIR}}..."
find {{DIR}} -name "*.enc" -type f -exec sh -c 'echo "Decrypting {}"; provisioning kms decrypt "{}"' \;
echo "✅ All files decrypted"
@reencrypt-files DIR BACKEND:
#!/usr/bin/env bash
echo "🔄 Re-encrypting all files in {{DIR}} with {{BACKEND}}..."
echo "⚠️ This will decrypt and re-encrypt all .enc files"
read -p "Continue? (y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
find {{DIR}} -name "*.enc" -type f -exec sh -c 'f="{}"; provisioning kms decrypt "$f" && rm "$f" && provisioning kms encrypt "${f%.enc}" --backend {{BACKEND}}' \;
echo "✅ Re-encryption complete"
else
echo "❌ Cancelled"
fi
# Secrets Management Integration
# ============================================================================
# Encrypt secret value
@secret-encrypt NAME VALUE:
#!/usr/bin/env bash
echo "🔒 Encrypting secret: {{NAME}}..."
echo "{{VALUE}}" | provisioning kms encrypt --backend rustyvault --stdin > "secrets/{{NAME}}.enc"
echo "✅ Secret encrypted: secrets/{{NAME}}.enc"
@secret-decrypt NAME:
#!/usr/bin/env bash
echo "🔓 Decrypting secret: {{NAME}}..."
provisioning kms decrypt "secrets/{{NAME}}.enc" --stdout
# Advanced Operations
# ============================================================================
# Encrypt with envelope encryption (AWS KMS style)
@kms-envelope-encrypt FILE:
#!/usr/bin/env bash
echo "🔒 Encrypting {{FILE}} with envelope encryption..."
provisioning kms encrypt {{FILE}} --backend aws-kms --envelope
echo "✅ File encrypted with envelope encryption"
@kms-verify FILE:
echo "✅ Verifying encrypted file: {{FILE}}..."
provisioning kms verify {{FILE}}
@kms-benchmark BACKEND="rustyvault":
#!/usr/bin/env bash
echo "📊 Benchmarking {{BACKEND}} backend..."
provisioning kms benchmark --backend {{BACKEND}}
# Troubleshooting
# ============================================================================
# Test KMS connectivity and configuration
@kms-test-connectivity:
echo "🧪 Testing KMS Connectivity"
echo "============================"
echo ""
echo "1. Testing RustyVault (local)..."
provisioning kms test rustyvault
echo ""
echo "2. Testing Vault connectivity..."
provisioning kms test vault
echo ""
echo "3. Testing AWS KMS connectivity..."
provisioning kms test aws-kms
echo ""
echo "✅ Connectivity test complete"
@kms-config:
echo "⚙️ KMS Configuration"
echo "====================="
provisioning config get kms
@kms-diagnose:
echo "🔍 KMS Diagnostics"
echo "=================="
echo ""
echo "Current backend:"
provisioning config get kms.backend
echo ""
echo "Backend status:"
provisioning kms status
echo ""
echo "Available backends:"
provisioning kms backends
echo ""
echo "✅ Diagnostics complete"
# Quick Workflows
# ============================================================================
# Quick encrypt workflow (encrypt file with default backend)
@quick-encrypt FILE:
#!/usr/bin/env bash
echo "⚡ Quick Encrypt: {{FILE}}"
provisioning kms encrypt {{FILE}} --backend rustyvault
echo "✅ Done: {{FILE}}.enc"
@quick-decrypt FILE:
echo "⚡ Quick Decrypt: {{FILE}}"
provisioning kms decrypt {{FILE}}
echo "✅ Done"
@kms-setup:
#!/usr/bin/env bash
echo "🚀 Setting up KMS"
echo "================="
echo ""
echo "1. Testing backends..."
just kms-test-all
echo ""
echo "2. Generating encryption key..."
provisioning kms generate-key --spec AES256
echo ""
echo "3. Creating secrets directory..."
mkdir -p secrets
echo ""
echo "✅ KMS setup complete"
echo ""
echo "💡 Next steps:"
echo " - Encrypt configs: just encrypt-configs config/"
echo " - Encrypt secrets: just secret-encrypt NAME VALUE"
# Help
# ============================================================================
# Show KMS help
@kms-help:
echo "🔐 KMS RECIPES"
echo "=============="
echo ""
echo "🔒 ENCRYPTION OPERATIONS"
echo " just kms-encrypt <file> - Encrypt file (RustyVault)"
echo " just kms-encrypt-backend <file> <be> - Encrypt with specific backend"
echo " just kms-decrypt <file> - Decrypt file"
echo " just kms-encrypt-string <data> - Encrypt string inline"
echo " just kms-decrypt-string <encrypted> - Decrypt string"
echo " just kms-encrypt-context <file> <ctx> - Encrypt with AAD context"
echo ""
echo "🔧 BACKEND MANAGEMENT"
echo " just kms-backends - List available backends"
echo " just kms-status - Show backend status"
echo " just kms-test <backend> - Test specific backend"
echo " just kms-test-all - Test all backends"
echo " just kms-switch-backend <backend> - Change default backend"
echo ""
echo "🔑 KEY MANAGEMENT"
echo " just kms-generate-key - Generate AES256 key"
echo " just kms-generate-key-spec <spec> - Generate key with spec"
echo " just kms-list-keys - List encryption keys"
echo " just kms-key-info <id> - Show key details"
echo " just kms-rotate-key <id> - Rotate encryption key"
echo " just kms-delete-key <id> - Delete key (careful!)"
echo ""
echo "⚙️ CONFIGURATION ENCRYPTION"
echo " just encrypt-config <file> - Encrypt config file"
echo " just decrypt-config <file> - Decrypt config file"
echo " just encrypt-config-inplace <file> - Encrypt in-place"
echo " just view-encrypted-config <file> - View without writing"
echo ""
echo "📦 BULK OPERATIONS"
echo " just encrypt-env-files [dir] - Encrypt all .env files"
echo " just encrypt-configs [dir] - Encrypt all configs"
echo " just decrypt-all-files <dir> - Decrypt all .enc files"
echo " just reencrypt-files <dir> <backend> - Re-encrypt with new backend"
echo ""
echo "🔐 SECRETS MANAGEMENT"
echo " just secret-encrypt <name> <value> - Encrypt secret value"
echo " just secret-decrypt <name> - Decrypt and show secret"
echo ""
echo "🚀 QUICK WORKFLOWS"
echo " just quick-encrypt <file> - Fast encrypt"
echo " just quick-decrypt <file> - Fast decrypt"
echo " just kms-setup - Setup KMS for project"
echo ""
echo "🔧 TROUBLESHOOTING"
echo " just kms-test-connectivity - Test backend connectivity"
echo " just kms-config - Show configuration"
echo " just kms-diagnose - Diagnose issues"
echo ""
echo "📚 SUPPORTED BACKENDS"
echo " • rustyvault - Fast local encryption (default)"
echo " • age - Age encryption (SOPS)"
echo " • vault - HashiCorp Vault"
echo " • cosmian - Cosmian KMS"
echo " • aws-kms - AWS Key Management Service"
echo ""
echo "💡 EXAMPLES"
echo " # Encrypt configuration"
echo " just encrypt-config config/production.yaml"
echo ""
echo " # Encrypt with AWS KMS"
echo " just kms-encrypt-backend secrets.json aws-kms"
echo ""
echo " # Bulk encrypt environment files"
echo " just encrypt-env-files ."
echo ""
echo " # Setup KMS for new project"
echo " just kms-setup"