扱いに困るKubernetesのSecret。HashiCorp Vaultで『良い感じに』管理しましょう!
【書籍概要】
Kubernetesを使っている皆さんは、SecretリソースにパスワードやAPIトークン、クラウドへの接続情報などを格納してPodに渡しますよね。でも、SecretリソースのYAMLに含まれるのは、Base64エンコードしただけの文字列です。平文と変わらないセキュリティレベルのため、Gitリポジトリに入れてしまうのは絶対にNGです。
じゃあ、どうやってこのSecretリソースを安全に管理しましょうか。そこで役に立つのが、HashiCorp Vaultです。HashiCorp Vaultはアイデンティティベースのシークレットマネジメントシステムで、Kubernetesをはじめ様々な基盤と連携させ、パスワードやクラウドへの接続情報といった機密情報を安全に、効率よく管理できるOSSです。
本書では、HashiCorp VaultとKubernetesを連携させ、誰もが悩むSecret管理を安全に、しかも簡単に運用できることを解説し、みなさんのKubernetesライフをハッピーにすることを目的としています。
【目次】
第1章 VaultでKubernetesのSecretを安全に管理する
1.1 誰もが悩む、KubernetesのSecret管理
1.2 取り扱い要注意なSecret
1.3 Secretを安全に管理するには?
1.4 Vaultとは
第2章 KubernetesへのVaultのインストール
2.1 前提条件
2.2 Kubernetes環境の作成
2.3 Vaultのインストール
2.4 初期化とUnseal
2.5 Vaultへの秘密情報の登録
2.6 Vaultへのリモートアクセス
2.7 Vault GUIの利用
第3章 KubernetesとVaultの連携
3.1 認証と認可
認証
認可
3.2 Kubernetes Auth Method
Kubernetes からの認証の有効化
Kubernetes Auth Method
第4章 Vaultを用いたKubernetesのSecret管理
4.1 Vault Agent
Vault Agent によるKubernetes からの秘密情報取得
Template 機能の利用
環境変数への秘密情報設定
Init Container のみを用いた秘密情報の取得
4.2 Vault CSI Provider
Kubernetes Secrets Store CSI Driver のインストール
Vault CSI Provider によるKubernetes からの秘密情報取得
Kubernetes Secret の作成
第5章 Vault Secrets Operator
5.1 Vault Secrets Operatorの登場以前
5.2 Vault Secrets Operator
新規Secret の作成
Secret リソースの更新
第6章 Dynamic Secret
6.1 シークレットは保存するのではなくて生成する時代!
6.2 データベースのユーザー名とパスワードを動的に生成する
6.3 MySQL 環境とDatabase Secret Engine のセットアップ
6.4 動的なユーザー作成
6.5 作成したユーザーの削除
6.6 Vault Agent Injectorからの利用
6.7 Vault Secrets Operatorからの利用
6.8 rotate-root でroot 権限を安全にする
【著者】
草間一人 @jacopen
望月敬太 @mochizuki875
上津亮太朗 @URyo_0213