シークレット管理、暗号化、機密データへの安全なアクセスのための包括的な HashiCorp Vault コマンドとワークフロー。
インストールとセットアップ
| コマンド | 説明 |
|---|
vault version | Vault バージョンを表示 |
vault server -dev | 開発サーバーを起動 |
vault server -config=config.hcl | 設定ファイルから始める |
vault status | サーバーステータスを確認 |
認証とログイン
基本認証
| コマンド | 説明 |
|---|
vault auth -method=userpass username=myuser | ユーザー名/パスワードでログイン |
vault auth -method=ldap username=myuser | LDAPでログイン |
vault auth -method=github token=mytoken | GitHub でログイン |
vault auth -method=aws | AWS IAMでログイン |
vault auth -method=kubernetes | Kubernetesでログイン |
トークン管理
| コマンド | 説明 |
|---|
vault token create | 新しいトークンを作成 |
vault token create -ttl=1h | TTLでトークンを作成 |
vault token lookup | 現在のトークンを検索 |
vault token renew | 現在のトークンを更新 |
vault token revoke TOKEN | 特定のトークンを取り消す |
シークレット管理
キーバリューシークレット (v2)
| コマンド | 説明 |
|---|
vault kv put secret/myapp username=admin password=secret | シークレットを保存 |
vault kv get secret/myapp | シークレットを取得 |
vault kv get -field=password secret/myapp | 特定のフィールドを取得 |
vault kv delete secret/myapp | シークレットを削除 |
vault kv list secret/ | シークレットをリスト |
vault kv metadata get secret/myapp | メタデータを取得 |
シークレットバージョン
| コマンド | 説明 |
|---|
vault kv put secret/myapp @data.json | JSONファイルから読み込む |
vault kv get -version=2 secret/myapp | 特定のバージョンを取得 |
vault kv rollback -version=1 secret/myapp | バージョンにロールバック |
vault kv destroy -versions=2,3 secret/myapp | バージョンを破棄 |
vault kv undelete -versions=2 secret/myapp | 削除の取り消しバージョン |
データベースシークレットエンジン
データベース設定
| コマンド | 説明 |
|---|
vault secrets enable database | データベースエンジンを有効にする |
vault write database/config/my-mysql-database plugin_name=mysql-database-plugin connection_url="\\{\\{username\\}\\}:\\{\\{password\\}\\}@tcp(localhost:3306)/" allowed_roles="my-role" username="vaultuser" password="vaultpass" | MySQLを設定する |
vault write database/roles/my-role db_name=my-mysql-database creation_statements="CREATE USER '\\{\\{name\\}\\}'@'%' IDENTIFIED BY '\\{\\{password\\}\\}';GRANT SELECT ON *.* TO '\\{\\{name\\}\\}'@'%';" default_ttl="1h" max_ttl="24h" | ロールを作成 |
動的認証情報
| コマンド | 説明 |
|---|
vault read database/creds/my-role | データベース認証情報を生成 |
vault write database/rotate-root/my-mysql-database | ルート認証情報を回転 |
PKI(公開鍵インフラストラクチャ)
PKI セットアップ
| コマンド | 説明 |
|---|
vault secrets enable pki | PKIエンジンを有効化 |
vault secrets tune -max-lease-ttl=87600h pki | 最大 TTL を設定 |
vault write pki/root/generate/internal common_name=example.com ttl=87600h | ルートCA を生成 |
vault write pki/config/urls issuing_certificates="http://vault.example.com:8200/v1/pki/ca" crl_distribution_points="http://vault.example.com:8200/v1/pki/crl" | URLを設定 |
証明書管理
| コマンド | 説明 |
|---|
vault write pki/roles/example-dot-com allowed_domains=example.com allow_subdomains=true max_ttl=72h | ロールを作成 |
vault write pki/issue/example-dot-com common_name=test.example.com | 証明書を発行する |
vault write pki/revoke serial_number=39:dd:2e:90:b7:23:1f:8d:d3:7d:31:c5:1b:da:84:d0:5b:65:31:58 | 証明書を取り消す |
AWSシークレットエンジン
AWS設定
| コマンド | 説明 |
|---|
vault secrets enable aws | AWS エンジンを有効にする |
vault write aws/config/root access_key=AKIAI... secret_key=R4nm... | rootの認証情報を設定 |
vault write aws/roles/my-role credential_type=iam_user policy_document=-<<EOF \\{...\\} EOF | IAMロールを作成 |
AWS認証情報
| コマンド | 説明 |
|---|
vault read aws/creds/my-role | AWS認証情報を生成 |
vault write aws/sts/my-role ttl=15m | STS 認証情報を生成 |
トランジットシークレットエンジン
暗号化セットアップ
| コマンド | 説明 |
|---|
vault secrets enable transit | トランジットエンジンを有効にする |
vault write transit/keys/my-key type=aes256-gcm96 | 暗号化キーを作成 |
vault write transit/encrypt/my-key plaintext=$(base64 <<< "my secret data") | データを暗号化 |
vault write transit/decrypt/my-key ciphertext=vault:v1:8SDd3WHDOjf7mq69CyCqYjBXAiQQAVZRkFM13ok481zoCmHnSeDX9vyf7w== | データを復号化する |
キー管理
| コマンド | 説明 |
|---|
vault write transit/keys/my-key/rotate | 暗号化キーを回転 |
vault read transit/keys/my-key | 重要な情報を読む |
vault write transit/rewrap/my-key ciphertext=vault:v1:... | 最新のキーで再ラップ |
ポリシー
ポリシー管理
| コマンド | 説明 |
|---|
vault policy write my-policy policy.hcl | ポリシーの作成/更新 |
vault policy read my-policy | ポリシーを読む |
vault policy list | すべてのポリシーを一覧表示 |
vault policy delete my-policy | 削除ポリシー |
ポリシーの例
# Read operation on the k/v secrets
path "secret/data/*" \\\\{
capabilities = ["read"]
\\\\}
# Write operation on the k/v secrets
path "secret/data/myapp/*" \\\\{
capabilities = ["create", "update"]
\\\\}
# Deny all access to secret/admin
path "secret/data/admin" \\\\{
capabilities = ["deny"]
\\\\}
認証方式
認証方式の有効化
| コマンド | 説明 |
|---|
vault auth enable userpass | ユーザー名/パスワードを有効にする |
vault auth enable ldap | LDAP を有効にする |
vault auth enable github | GitHub を有効にする |
vault auth enable aws | AWS IAMを有効にする |
vault auth enable kubernetes | Kubernetes を有効にする |
認証方式の設定
| コマンド | 説明 |
|---|
vault write auth/userpass/users/myuser password=mypass policies=my-policy | ユーザーを作成 |
vault write auth/ldap/config url="ldap://ldap.example.com" userdn="ou=Users,dc=example,dc=com" | LDAPを設定する |
vault write auth/github/config organization=myorg | GitHub を設定する |
監査ログ
監査デバイスの有効化
| コマンド | 説明 |
|---|
vault audit enable file file_path=/vault/logs/audit.log | ファイル監査を有効にする |
vault audit enable syslog | syslogの監査を有効にする |
vault audit list | 監査デバイスを一覧表示 |
vault audit disable file/ | 監査デバイスを無効にする |
高可用性とクラスタリング
クラスタ操作
Would you like me to continue with the remaining translations?
| コマンド | 説明 |
|---|
vault operator init | Vault クラスターを初期化 |
vault operator unseal | Vault を解放 |
vault operator seal | シール・ボールト |
vault operator step-down | リーダーを辞任する |
vault operator raft list-peers | Raftピアをリスト |
| コマンド | 説明 |
|---|
vault operator raft snapshot save backup.snap | スナップショットを作成 |
vault operator raft snapshot restore backup.snap | スナップショットを復元 |
サーバー設定
storage "consul" \\\\{
address = "127.0.0.1:8500"
path = "vault/"
\\\\}
listener "tcp" \\\\{
address = "0.0.0.0:8200"
tls_disable = 1
\\\\}
api_addr = "http://127.0.0.1:8200"
cluster_addr = "https://127.0.0.1:8201"
ui = true
seal "awskms" \\\\{
region = "us-east-1"
kms_key_id = "12345678-1234-1234-1234-123456789012"
\\\\}
```### AWS KMSによる自動アンシール
| 変数 | 説明 |
|----------|-------------|
| `VAULT_ADDR` | Vault サーバーアドレス |
| `VAULT_TOKEN` | 認証トークン |
| `VAULT_NAMESPACE` | Vault 名前空間(Enterprise) |
| `VAULT_CACERT` | CAルート証明書ファイル |
| `VAULT_CLIENT_CERT` | クライアント証明書ファイル |
| `VAULT_CLIENT_KEY` | クライアントプライベートキーファイル |## 環境変数