К основному содержанию
скилл CX Codex

hashicorp-vault — скилл для Claude Code: секреты и PKI в Vault

Скилл для работы с HashiCorp Vault: секретные движки, методы аутентификации, политики и выпуск сертификатов прямо из чата с агентом.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add BagelHole/DevOps-Security-Agent-Skills --skill hashicorp-vault -a claude-code
Открыть на GitHub

Что делает hashicorp-vault

Скилл даёт агенту готовые команды Vault CLI и конфиги: включение KV v2, database и AWS-движков, настройка PKI, AppRole, Kubernetes и OIDC, запись политик. Агент подставит нужный путь и параметры, а не будет сочинять синтаксис с нуля.

Внутри — примеры на HCL и bash, а также интеграция с приложением: клиент hvac на Python и sidecar-инжектор в Kubernetes. Для работы нужен сервер Vault (dev или production), установленный Vault CLI и сетевой доступ к нему. Без этого скилл бесполезен, потому что все команды бьют по живому API.

Раздел про production обрывается на середине YAML-манифеста, поэтому по sidecar-инжектору рассчитывайте дочитать документацию Vault сами. Политики в примерах построены на deny-правилах — если перенесёте их в свой кластер как есть, доступ к чужим путям закроется сразу.

Какие задачи решает

  • включить KV v2 и разложить секреты по путям
  • выдавать приложению временные креды к PostgreSQL вместо статичного пароля
  • настроить AppRole для CI без хранения root-токена
  • выпустить внутренний сертификат через PKI-движок
  • описать политику с явными deny на чужие секреты

Примеры запросов агенту

  • включи KV v2 на пути secret и запиши туда конфиг myapp
  • настрой database-движок для PostgreSQL и роль readonly с TTL 1h
  • создай политику myapp с read на secret/data/myapp/* и deny на остальное

Как установить hashicorp-vault

1Через Skills CLI (Vercel)

npx skills add BagelHole/DevOps-Security-Agent-Skills --skill hashicorp-vault -a claude-code

2Вручную: положить файлы

~/.claude/skills/hashicorp-vault/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/hashicorp-vault/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о hashicorp-vault

Как установить hashicorp-vault в Claude?

Выполните npx skills add BagelHole/DevOps-Security-Agent-Skills --skill hashicorp-vault -a claude-code. После этого файл скилла окажется по пути ~/.claude/skills/hashicorp-vault/SKILL.md.

Что делает скилл hashicorp-vault?

Помогает агенту настраивать HashiCorp Vault: секретные движки, методы аутентификации, политики, выпуск сертификатов и динамические креды для баз данных.

Что нужно, чтобы скилл заработал?

Сервер Vault — dev или production, установленный Vault CLI и сетевой доступ к серверу. Для dev-режима хватит vault server -dev и переменных VAULT_ADDR и VAULT_TOKEN.

Исходный текст

SKILL.md · MIT
---
name: hashicorp-vault
description: Manage secrets and PKI with HashiCorp Vault. Configure secret engines, authentication methods, and policies. Use when implementing centralized secrets management, dynamic credentials, or certificate management.
license: MIT
metadata:
  author: devops-skills
  version: "1.0"
---

# HashiCorp Vault

Centrally manage secrets, encryption, and access with HashiCorp Vault.

## When to Use This Skill

Use this skill when:
- Centralizing secrets management
- Implementing dynamic credentials
- Managing PKI and certificates
- Encrypting sensitive data
- Meeting compliance requirements

## Prerequisites

- Vault server (dev or production)
- Vault CLI installed
- Network access to Vault

## Quick Start

### Development Server

```bash
# Start dev server
vault server -dev

# Set environment
export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN='root'

# Verify connection
vault status
```

### Production Deployment

```hcl
# config.hcl
storage "raft" {
  path = "/opt/vault/data"
  node_id = "vault-1"
}

listener "tcp" {
  address = "0.0.0.0:8200"
  tls_cert_file = "/opt/vault/tls/vault.crt"
  tls_key_file = "/opt/vault/tls/vault.key"
}

api_addr = "https://vault.example.com:8200"
cluster_addr = "https://vault.example.com:8201"

ui = true
```

```bash
# Initialize Vault
vault operator init -key-shares=5 -key-threshold=3

# Unseal (run 3 times with different keys)
vault operator unseal <key-1>
vault operator unseal <key-2>
vault operator unseal <key-3>

# Login
vault login <root-token>
```

## Secret Engines

### KV Secrets

```bash
# Enable KV v2
vault secrets enable -path=secret kv-v2

# Write secret
vault kv put secret/myapp/config \
  username="admin" \
  password="s3cr3t"

# Read secret
vault kv get secret/myapp/config
vault kv get -field=password secret/myapp/config

# Update secret
vault kv put secret/myapp/config \
  username="admin" \
  password="new-password"

# List secrets
vault kv list secret/

# Delete secret
vault kv delete secret/myapp/config

# Version history
vault kv metadata get secret/myapp/config
```

### Database Secrets

```bash
# Enable database engine
vault secrets enable database

# Configure PostgreSQL connection
vault write database/config/postgresql \
  plugin_name=postgresql-database-plugin \
  connection_url="postgresql://{{username}}:{{password}}@localhost:5432/mydb" \
  allowed_roles="readonly,readwrite" \
  username="vault" \
  password="vault-password"

# Create role
vault write database/roles/readonly \
  db_name=postgresql \
  creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; \
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
  default_ttl="1h" \
  max_ttl="24h"

# Get credentials
vault read database/creds/readonly
```

### AWS Secrets

```bash
# Enable AWS engine
vault secrets enable aws

# Configure root credentials
vault write aws/config/root \
  access_key=AKIA... \
  secret_key=secret... \
  region=us-east-1

# Create role
vault write aws/roles/deploy \
  credential_type=iam_user \
  policy_document=-<<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:*"],
      "Resource": ["arn:aws:s3:::my-bucket/*"]
    }
  ]
}
EOF

# Get credentials
vault read aws/creds/deploy
```

### PKI Secrets

```bash
# Enable PKI engine
vault secrets enable pki
vault secrets tune -max-lease-ttl=87600h pki

# Generate root CA
vault write -field=certificate pki/root/generate/internal \
  common_name="example.com" \
  ttl=87600h > ca_cert.crt

# Configure URLs
vault write pki/config/urls \
  issuing_certificates="https://vault.example.com:8200/v1/pki/ca" \
  crl_distribution_points="https://vault.example.com:8200/v1/pki/crl"

# Create role
vault write pki/roles/web-server \
  allowed_domains="example.com" \
  allow_subdomains=true \
  max_ttl="720h"

# Issue certificate
vault write pki/issue/web-server \
  common_name="web.example.com" \
  ttl="24h"
```

## Authentication Methods

### AppRole

```bash
# Enable AppRole
vault auth enable approle

# Create role
vault write auth/approle/role/myapp \
  token_policies="myapp-policy" \
  token_ttl=1h \
  token_max_ttl=4h \
  secret_id_ttl=10m

# Get role ID
vault read auth/approle/role/myapp/role-id

# Generate secret ID
vault write -f auth/approle/role/myapp/secret-id

# Login
vault write auth/approle/login \
  role_id=<role-id> \
  secret_id=<secret-id>
```

### Kubernetes

```bash
# Enable Kubernetes auth
vault auth enable kubernetes

# Configure
vault write auth/kubernetes/config \
  kubernetes_host="https://kubernetes.default.svc" \
  kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt

# Create role
vault write auth/kubernetes/role/myapp \
  bound_service_account_names=myapp \
  bound_service_account_namespaces=default \
  policies=myapp-policy \
  ttl=1h
```

### OIDC

```bash
# Enable OIDC auth
vault auth enable oidc

# Configure
vault write auth/oidc/config \
  oidc_discovery_url="https://accounts.google.com" \
  oidc_client_id="your-client-id" \
  oidc_client_secret="your-client-secret" \
  default_role="default"

# Create role
vault write auth/oidc/role/default \
  bound_audiences="your-client-id" \
  allowed_redirect_uris="http://localhost:8250/oidc/callback" \
  user_claim="sub" \
  policies="default"
```

## Policies

### Policy Definition

```hcl
# myapp-policy.hcl
# Read secrets
path "secret/data/myapp/*" {
  capabilities = ["read", "list"]
}

# Database credentials
path "database/creds/myapp-db" {
  capabilities = ["read"]
}

# PKI certificates
path "pki/issue/web-server" {
  capabilities = ["create", "update"]
}

# Deny access to other secrets
path "secret/data/other/*" {
  capabilities = ["deny"]
}
```

```bash
# Create policy
vault policy write myapp myapp-policy.hcl

# List policies
vault policy list

# Read policy
vault policy read myapp
```

## Application Integration

### Python

```python
import hvac

# Initialize client
client = hvac.Client(url='http://localhost:8200')

# AppRole authentication
client.auth.approle.login(
    role_id='role-id',
    secret_id='secret-id'
)

# Read secret
secret = client.secrets.kv.v2.read_secret_version(
    path='myapp/config',
    mount_point='secret'
)
password = secret['data']['data']['password']

# Get database credentials
db_creds = client.secrets.database.generate_credentials(
    name='myapp-db'
)
```

### Kubernetes Sidecar

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: myapp
  annotations:
    vault.hashicorp.com/agent-inject: "true"
    vault.hashicorp.com/role: "myapp"
    vault.hashicorp.com/agent-inject-secret-config: "secret/data/myapp/config"
    vault.hashicorp.com/agent-inject-template-config: |
      {{- with secret "secret/data/myapp/config" -}}
      export DB_PASSWORD="{{ .Data.data.password }}"
      {{- end }}
spec:
  serviceAccountName: myapp
  containers:
    - name: myapp
      image: myapp:latest
      command: ["/bin/sh", "-c", "source /vault/secrets/config && ./start.sh"]
```

## Common Issues

### Issue: Sealed Vault
**Problem**: Vault is sealed after restart
**Solution**: Implement auto-unseal with cloud KMS or HSM

### Issue: Token Expired
**Problem**: Application token has expired
**Solution**: Implement token renewal, use shorter-lived tokens

### Issue: Permission Denied
**Problem**: Cannot access secrets
**Solution**: Review policies, check token capabilities

## Best Practices

- Use short-lived tokens
- Implement auto-unseal
- Enable audit logging
- Use namespaces for isolation
- Rotate root tokens regularly
- Implement least-privilege policies
- Use dynamic secrets where possible
- Regular backup and DR testing

## Related Skills

- [aws-secrets-manager](../aws-secrets-manager/) - AWS native secrets
- [sops-encryption](../sops-encryption/) - File encryption
- [kubernetes-hardening](../../hardening/kubernetes-hardening/) - K8s security

© devops-skills · MIT · BagelHole/DevOps-Security-Agent-Skills

Похожие скиллы

Всё по теме «Безопасность» →
infisical-agent Infisical Помогает настроить демон Infisical Agent: аутентификация, YAML-конфиг, Go-шаблоны и запись секретов в файлы. Пригодится, когда приложение читает конфиг, а не переменные окружения. CX Codex +1 813установок k8s-manifest-generator Seth Hobson Скилл создаёт Kubernetes-манифесты для приложений и конфигурации. Пригодится, когда нужны Deployment, Service, ConfigMap, Secret или PersistentVolumeClaim. CX Codex 11 166установок kubernetes-skill LukasNiessen Помогает создавать и проверять манифесты Kubernetes без галлюцинаций. Находит ошибки в безопасности, сетевых политиках и ресурсах. CX Codex +1 1 400установок config-scan jwynia Скилл проверяет конфигурационные файлы, Docker, Kubernetes и Terraform на небезопасные настройки. Пригодится перед выкаткой в прод. CX Codex +1 337установок secrets-management Seth Hobson Скилл помогает хранить и подключать секреты в CI/CD через Vault, AWS Secrets Manager и платформенные хранилища. Подойдёт для ключей, паролей и ротации. CX Codex 13 122установок secrets-vault-manager Alireza Rezvani Скилл помогает настроить управление секретами на уровне инфраструктуры: Vault, облачные хранилища, ротацию и аудит доступа. 697установок

Из того же набора127

container-hardening Настраивает запуск контейнеров без root-прав, монтирует файловую систему только для чтения и формирует манифесты Kubernetes securityContext. CX Codex +1 433установок vulnerability-scanning Скилл для поиска и приоритизации уязвимостей в системах и зависимостях: Nessus, OpenVAS, Qualys, Nuclei. Пригодится при аудите и комплаенсе. CX Codex +1 424установок postgresql Помогает администрировать PostgreSQL: настраивать репликацию, резервные копии и параметры производительности. Пригодится при развёртывании и тюнинге БД. CX Codex +1 419установок ssl-tls-management Скилл для работы с SSL/TLS: выпуск сертификатов Let's Encrypt, автопродление, cert-manager в Kubernetes и подбор шифров. Пригодится, когда настраиваешь HTTPS или чинишь истёкший сертификат. CX Codex +1 420установок backup-recovery Скилл настраивает резервное копирование и восстановление через rsync и Restic. Пригодится при настройке бэкапов на диск, в AWS S3 или Backblaze B2 по правилу 3-2-1. CX Codex +1 406установок database-backups Скилл для ИИ-агента: помогает настроить автоматические бэкапы PostgreSQL, MySQL и MongoDB и проверить, что из них реально восстанавливаются данные. CX Codex +1 405установок sops-encryption Скилл учит агента шифровать конфиги и секреты Kubernetes через Mozilla SOPS с ключами AWS KMS, GCP KMS или PGP. Пригодится, когда секреты лежат в Git. CX Codex +1 403установок performance-tuning Скилл для настройки производительности Linux: подбор параметров ядра, поиск узких мест, работа с планировщиком I/O и памятью. Пригодится, когда сервер тормозит или готовится к нагрузке. CX Codex +1 403установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой