AKSクラスタとKeyVaultを連携するにはakv2k8sを使うのが楽らしい。
akv2k8sの公式ページ
https://akv2k8s.io/
が、チュートリアル を見ると
az keyvault set-policy -n akv2k8s-test --spn <spn for akv2k8s> --secret-permissions get
とAKSに Service Principal
が付与されている前提で、読みだしパーミッションを設定されていらっしゃる。
Azureはニワカなのでよくわかっていなかったのですが、Azure内で完結するなら、システム割り当ての Managed Identity
使って認証するのがよさそうです。
Azure リソースのマネージド ID とは
https://docs.microsoft.com/ja-jp/azure/active-directory/managed-identities-azure-resources/overview
AKSクラスタの Managed Identity
は、クラスタを作成した際に自動的に追加される、リソースグループ MC_[リソースグループ名]_[クラスタ名]
内にある、 種類マネージドIDの [クラスタ名]-aks-agentpool
を見ると書いてあります。
オブジェクト(プリンシパル)ID
というやつですな。 カッコ書きとかいらないので、呼称を統一してほしい...
あとは、KeyVaultのアクセスポリシーに、調べた Managed Identity
でシークレット読み出し権限を付与するだけ。
わかってみれば簡単でした。
- 参考
Azure Kubernetes ServiceのPodからManaged identities(旧MSI)認証でKey Vaultの情報を取得する