Azure Kubernetes Service (AKS) と Azure Key Vault の統合

このエントリは2020/08/28現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容との乖離が発生する可能性があります。

k8sでデータベース接続情報などの機密情報を保持する場合、ハードコーディングやマニフェストへの記載は論外としても、k8sのsecretに格納する場合、Base64でエンコードしているだけでセキュアとは言えない。そのため、各クラウドベンダーが提供するManaged Kubernetes Serviceでは様々な拡張が追加されている。例えばAzure Kubernetes Service (AKS) の場合はetcdが暗号化されているので、k8sのsecretを使っても安全だとか、Azure Key Vaultと組み合わせてクラスターのライフサイクルとシークレットのライフサイクルを分離できるようになっている。このあたりの記述はMicrosoftの真壁さん ( @tmak_tw ) のブログエントリに記載がある。

Azure Kubernetes Serviceでシークレットを管理する6つの方法
https://torumakabe.github.io/post/aks_how_to_keep_secret/

上記エントリによると、AKSとAzure Key Vaultとの連携方法は3個あるが、2020/08/28現在では少々変更がある。

  • FlexVolumeを使う方法はv1.15まででv1.16以後では非推奨
  • v1.16以後ではCSI Driverを使う方法を推奨
  • AKSは以下のリリースノートにある通り、2020/8/31で1.15.xの新規クラスターの作成はできなくなる(2020/08/28現在、AKSで新規クラスターを作成する場合、既定のバージョンは1.16.13)

Release 2020-08-17
https://github.com/Azure/AKS/releases/tag/2020-08-17

方式概要備考
SDKの利用AKSとKey Vaultの統合機能は使わず、ごりごり書いていく
Pod Identityの利用PodのマネージドIDを利用し、Key Vaultにアクセス
FlexVolumeの利用Key Vaultをボリュームとしてマウントオープンソース
v1.15まで
以後の利用は非推奨
Secret Store CSI Driverの利用Key Vaultをボリュームとしてマウントオープンソース
v1.16以後
(Windowsクラスターの場合はv1.18以後)

FlexVolumeとSecret Store CSI Driverは方式が違うだけで、PodにKeyVaultをボリュームとしてマウントし、各シークレットやキーをファイルとして読み出すことに変わりはない。すでにCSI Driverを使ったKey VaultとAKSの連携はチュートリアルが用意されている。Service Principalを使う方法、Managed IDを使う方法の何れでもよい。

なお、チュートリアルは2020/08/28現在英語版のほうが新しいので、最新情報は英語版を参照(日本語版もいずれ更新されるはず、知らんけど)。

チュートリアル:Kubernetes 上のシークレット ストア CSI ドライバー向けに Azure Key Vault プロバイダーを構成して実行する
Tutorial: Configure and run the Azure Key Vault provider for the Secrets Store CSI driver on Kubernetes
https://docs.microsoft.com/azure/key-vault/general/key-vault-integrate-kubernetes

注意点

AKSクラスターをAzure CLIで作成する場合、aks-previewという拡張のインストールが必要になる場合があるので、事前に追加しておくことを推奨する。

# https://docs.microsoft.com/en-us/cli/azure/extension?view=azure-cli-latest#az-extension-add
az extension add --name aks-preview

CSI Driverのインストールなどでhelmを使うため、v3以後のhelmもインストールしておく必要がある。v2系では動作しないので注意。インストールは以下のドキュメントを参照。

Installing Helm
https://helm.sh/docs/intro/install/

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中