HashiCorpは、HashiCorp Vault Secrets Operator for Kubernetesの 一般提供を開始した。このKubernetes Operatorは、Vaultのシークレット管理ツールとKubernetes Secretsキャッシュを組み合わせたものだ。このオペレーターはシークレットのローテーションも処理し、様々なシークレット固有のカスタムリソース用のコントローラーを備えている。
Vault Secrets Operatorsは、そのカスタムリソース定義(CRDs)のセットへの変更を監視する。各CRDによって、オペレータはVault SecretをKubernetes Secretに同期できる。このオペレータは、ソースであるVaultシークレットをKubernetesシークレットに直接書き込む。これにより、ソースに加えられたすべての変更が適切にレプリケーションされることが保証される。Kubernetesカスタムリソースを使用して、サービスによって使用されるシークレットを管理する。アプリケーションは、Kubernetesネイティブな方法でシークレットを消費できる。
オペレータは、VaultConnection
、VaultAuth
、VaultDynamicSecret
、VaultPKISecret
など、サポートされているすべてのシークレット・カスタマ・リソース(CRs)をサポートする。この例では、VaultConnection
CR を活用している。
apiVersion: secrets.hashicorp.com/v1beta1kind: VaultConnectionmetadata: namespace: vso-example name: examplespec: # address to the Vault server. address: http://vault.vault.svc.cluster.local:8200
この例では、VaultDynamicSecret
CR をデータベース秘密エンジンと共に使用する。以下の例では、新しいクレデンシャルを作成するために、http://127.0.0.1:8200/v1/db/creds/my-postgresql-role
への要求を作成する。
---apiVersion: secrets.hashicorp.com/v1beta1kind: VaultDynamicSecretmetadata: namespace: vso-example name: examplespec: vaultAuthRef: example mount: db path: creds/my-postgresql-role destination: create: true name: dynamic1
GAリリースには、新しい認証方法の追加を含む多くの新機能が含まれている。これまでは、Kubernetesの認証方式のみが利用可能だった。GAリリースでは、認証方式としてJSON Web Token(JWT)、AppRole、AWSがサポートされた。
GAリリースには、AKS、GKE、EKS、OpenShiftといった一般的なKubernetesクラウド・サービスの検証も含まれている。もう1つの新しい機能強化は、Vault Secrets Operatorが、デプロイが削除されたときにキャッシュされたVaultクライアントトークンの取り消しを試みるようになったことだ。
VaultとのTLS/mTLS通信と同様に、すべてのVaultシークレットエンジンがサポートされている。シークレットローテーションは、Deployment
、ReplicaSet
、およびStatefulSet
Kubernetesリソースタイプでサポートされている。静的シークレットのローテーションは、以下を使用して実行できる。
vault kv put kvv2/webapp/config username="static-user2" password="static-password2"
オペレータのデプロイは、Helmチャート Kustomizeを通してサポートされている。一旦デプロイされると、オペレーターは多くのパーミッションを必要とする。これらには、Secret
、ServiceAccount
、およびDeployment
オブジェクトに対するパーミッションが含まれる。指定されたネームスペース内のオブジェクトに対しては、必要に応じてアクセスを制限できる。
Kubernetes にSecrets API を使って直接保存されたシークレットは、API サーバーの基礎となるデータストアに暗号化されずに保存される。Kubernetesのドキュメントでは、静止時の暗号化の設定、RBACルールの有効化、必要なコンテナのみにシークレットへのアクセスを制限すること、または外部のシークレットストア・プロバイダーを使用することを推奨している。Secrets Store CSI Driverは、Vaultのサポートに加えて、AWS、Azure、GCPプロバイダーもサポートしている。
ベータ・リリースはHashiCorp Vault 1.13リリースで初めて導入され、GAリリースはVault 1.14リリースに合わせられた。リリースの詳細は、HashiCorpブログまたはGitHubリポジトリで確認できる。