secrets-management — скилл для Claude Code: установка
Скилл помогает хранить и подключать секреты в CI/CD через Vault, AWS Secrets Manager и платформенные хранилища. Подойдёт для ключей, паролей и ротации.
/plugin marketplace add wshobson/agents
/plugin install cicd-automation@claude-code-workflowsЧто делает secrets-management
Скилл описывает работу с секретами в CI/CD без их хранения в Git. Он охватывает API-ключи, пароли баз данных, TLS-сертификаты и токены с коротким сроком жизни. В материалах есть примеры для HashiCorp Vault, AWS Secrets Manager, GitHub Secrets и GitLab CI/CD Variables.
Внутри есть команды Vault, конфигурации GitHub Actions и GitLab CI, пример Terraform для AWS Secrets Manager, интеграция External Secrets Operator с Kubernetes и pre-commit-проверка через TruffleHog. Также разобраны ротация секретов, маскирование в логах, аудит и доступ с минимальными правами.
Для работы нужны соответствующие инструменты и доступы: Vault, AWS CLI, Terraform, Kubernetes или TruffleHog, если вы используете эти сценарии. Ставьте скилл, когда секреты участвуют в деплое или их нужно регулярно менять; для проекта без CI/CD он избыточен.
Какие задачи решает
- хранить ключи и пароли вне репозитория
- подключить секреты Vault к GitHub Actions
- получать значения из AWS Secrets Manager
- настроить ротацию паролей базы данных
- проверять коммиты через TruffleHog
Примеры запросов агенту
- Настрой GitHub Actions с Vault для `DB_USERNAME`, `DB_PASSWORD` и `API_KEY`.
- Покажи конфигурацию Terraform, которая получает пароль из AWS Secrets Manager.
- Добавь pre-commit-проверку секретов через TruffleHog.
Как установить secrets-management
1Через маркетплейс плагинов
/plugin marketplace add wshobson/agents/plugin install cicd-automation@claude-code-workflows2Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill secrets-management -a claude-code3Вручную: положить файлы
~/.claude/skills/secrets-management/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/secrets-management/
1Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill secrets-management -a codex2Вручную: положить файлы
.agents/skills/secrets-management/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add wshobson/agents --skill secrets-management -a cursor2Вручную: положить файлы
.cursor/skills/secrets-management/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install wshobson/agents secrets-management2Вручную: положить файлы
.github/skills/secrets-management/SKILL.mdКомандой платформы
gemini skills install https://github.com/wshobson/agents --path plugins/cicd-automation/skills/secrets-managementВручную: положить файлы
.devin/skills/secrets-management/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Похожие
Вопросы о secrets-management
Как установить secrets-management в Claude Code?
Добавьте marketplace командой /plugin marketplace add wshobson/agents, затем установите плагин командой /plugin install cicd-automation@claude-code-workflows. Также доступна установка через npx skills add wshobson/agents --skill secrets-management -a claude-code.
Что делает secrets-management?
Скилл помогает проектировать хранение секретов для CI/CD, подключать их к задачам деплоя и настраивать ротацию. В примерах используются Vault, AWS Secrets Manager, GitHub и GitLab.
Какие хранилища секретов он поддерживает?
В материалах разобраны HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, Google Secret Manager и платформенные секреты GitHub и GitLab.
Исходный текст
SKILL.md · MIT
---
name: secrets-management
description: Implement secure secrets management for CI/CD pipelines using Vault, AWS Secrets Manager, or native platform solutions. Use when handling sensitive credentials, rotating secrets, or securing CI/CD environments.
---
# 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
```bash
# 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
```yaml
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
```yaml
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
```
## AWS Secrets Manager
### Store Secret
```bash
aws secretsmanager create-secret \
--name production/database/password \
--secret-string "super-secret-password"
```
### Retrieve in GitHub Actions
```yaml
- 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
```hcl
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
```yaml
- 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
```yaml
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
```
## GitLab CI/CD Variables
### Project Variables
```yaml
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
```python
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
```yaml
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
```bash
#!/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
```yaml
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
© Seth Hobson · MIT · wshobson/agents