コンテンツにスキップ

HashiCorp Vault

認証

ログイン

vault login [認証トークン]

トークンを省略すれば対話的に聞いてくる

ログイン中のtoken情の報等

vault token lookup

OIDCでCLIログイン

vault login -method=oidc [-path=***] role=****

初期処理

init

vault operator init

Unseal KeyとRoot Tokenが出力されるのでメモしておく

unseal

vault operator unseal

Unseal keyの入力を求められるのでinit実行時に出力されたキーを入力する。
Sealed trueがSealed falseになるまで繰り返す。

secret engine

secret一覧

vault secrets list

secret engineの有効化

データ保持用の入れ物を作るイメージ。
KVシークレットエンジンであれば以下の通り。

vault secrets enable -path=my-secret kv

これでmy-secretというパスにKVシークレットエンジンが作成される。

KV secret engine

キー一覧

vault kv list <secret-engine-name>

データ保存

データはkey-value形式。ややこしいけど。

vault kv put -mount=<secret-engine-name> <key-name> key1=value1 key2=value2 ...

これも一緒

vault kv put <secret-engine-name>/<key-name> key1=value1 key2=value2 ...

繰り返し実行すればversion更新される。

データ参照

vault kv get -mount=<secret-engine-name> <key-name>

これも一緒

vault kv get <secret-engine-name>/<key-name>

RESTであれば

curl -H "X-Vault-Token: ${token}" http://server:port/v1/<secret-engine-name>/data/<key-name>

curl -H "X-Vault-Token: ${token}" http://192.168.0.75:8200/v1/kv/data/zzz?version=1とか。
KV - Secrets Engines - HTTP API | Vault | HashiCorp Developer

PKI

有効化

/ $ vault secrets enable -path=pki_sample pki
Success! Enabled the pki secrets engine at: pki_sample/

issuer一覧

/ $ vault list pki_lab_int/issuers
Keys
----
1625dc5e-653d-8bc3-6a5f-164246fe7ab2
1770468e-7743-43e3-35ef-255f5aca7753

内容確認

/ $ vault read pki_lab_int/issuer/1625dc5e-653d-8bc3-6a5f-164246fe7ab2
Key                               Value
---                               -----
ca_chain                          [-----BEGIN CERTIFICATE-----
MIIEfjCCA2agAwIBAgIUM4lyZwTrGN3K8ZJoix2D912FZU0wDQYJKoZIhvcNAQEL
....
-----END CERTIFICATE-----
 -----BEGIN CERTIFICATE-----
MIIDGzCCAgOgAwIBAgIUdYawx0+vKEcx4k2xCeZ37JqO900wDQYJKoZIhvcNAQEL
....
-----END CERTIFICATE-----
]
certificate                       -----BEGIN CERTIFICATE-----
MIIEfjCCA2agAwIBAgIUM4lyZwTrGN3K8ZJoix2D912FZU0wDQYJKoZIhvcNAQEL
....
-----END CERTIFICATE-----
crl_distribution_points           []
delta_crl_distribution_points     []
enable_aia_url_templating         false
issuer_id                         1625dc5e-653d-8bc3-6a5f-164246fe7ab2
issuer_name                       n/a
issuing_certificates              []
key_id                            b53e1bd2-8965-527c-94c7-745207b42650
leaf_not_after_behavior           err
manual_chain                      <nil>
ocsp_servers                      []
revocation_signature_algorithm    n/a
revoked                           false
usage                             crl-signing,issuing-certificates,ocsp-signing,read-only

デフォルトissuer更新

/ $ vault write pki_lab_int/config/issuers default=<対象のIssuer ID>

TTL等設定確認

/ $ vault read sys/mounts/pki_lab_int/tune
Key                            Value
---                            -----
allowed_response_headers       [Last-Modified Location Replay-Nonce Link]
default_lease_ttl              768h
description                    n/a
force_no_cache                 false
max_lease_ttl                  768h
passthrough_request_headers    [If-Modified-Since]

最大TTL更新

/ $ vault secrets tune -max-lease-ttl=87600h pki_lab_int
Success! Tuned the secrets engine at: pki_lab_int/

auth

一覧

vault auth list

token確認

vault token lookup

role

リスト

pathはvault auth listの出力で確認できる。

vault list auth/path/role

内容確認(policyなど)

vault read auth/path/role/key

削除

vault delete auth/path/role/key

token

token作成

vault token create

policy指定なら

vault token create -policy=foobar

tokenの情報

作成時に得られるトークンを引数に実行すればpolicyやttlを確認できる

vault token lookup <token>

あるいは-accessorを指定

vault token lookup -accessor <accessor>

accessor一覧の取得

vault list auth/token/accessors

identity/entity

Implement identity entities and groups | Vault | HashiCorp Developer

ID一覧

vault list identity/entity/id
vault list identity/entity-alias/id

ID詳細

vault list identity/entity/idの一覧の一つに対して

vault read identity/entity/id/<ENTITY-ID>

で出力する。
Entity Aliasについても同様。

policy

一覧

vault policy list

作成/更新

vault policy write my-policy-name <<__EOL__
path ... {
    ...
}
__EOL__

参照

vault policy read my-policy-name

hvac

Hashicorp Vault用Pythonライブラリ

コンストラクタ

証明書検証オフはverify=Falseを加えればOK

import urllib3
import os
import hvac

urllib3.disable_warnings()

client = hvac.Client(
    url='https://vault.example.org',
    token=os.environ['VAULT_TOKEN'],
    verify=False
)

OIDC

JWT/OIDC — hvac 2.3.0 documentation

policy

Policy — hvac 2.3.0 documentation