AKS と HCP Vault の組み合わせでつまずいた話Japan Azure User Group 13周年イベント2023/9/16
View Slide
自己紹介NameTaichi NonoshitaX@nnstt1Company株式会社エーピーコミュニケーションズLove3人の息子たち(3歳・1歳双子)めざせ Azure 資格全冠!(まだ折り返してない …)
お話しすること・しないことお話しすること● HashiTalks のセッションを準備するにあたって Azure でつまずいた経験お話ししないこと● AKS の詳しい説明● HashiCorp Vault の詳しい説明
● HashiCorp が開発しているシークレット管理ツール● 様々な環境で利用可能○ コミュニティ版 Vault○ セルフマネージドな Vault Enterprise○ マネージドサービスの HCP Vault ←本日の対象● Dynamic Secrets という機能が特徴的(個人の感想)○ ユーザからのリクエストに応じて Microsoft Entra ID (Azure AD) やDatabase などに期限付きのユーザを作成簡単な HashiCorp Vault の説明とても雑な
● HCP (HashiCorp Cloud Platform) で提供されているVault のマネージドサービス● HVN (HashiCorp Virtual Network) を Azure に作成、ユーザ管理の VNet とピアリングすることでHCP Vault にプライベートアクセス可能● HCP Vault が Azure に対応したのは 2023/2HCP Vault とは
● 2023/3 に公開された Vault Secrets Operator により、Kubernetes のシークレットを Vault で管理することがより簡単になった● Vault Secrets Operator と HCP Vault を使えば AKS のシークレットを安全に管理できそうHCP Vault で AKS のシークレットを管理
AKS にはシークレット管理の機能があるのでは?
● 既に AKS では Secret Store CSI Driver という機能を使ったシークレット管理が提供されている○ Key Vault のシークレットを AKS のアプリケーション (Pod) に連携○ Secret リソースとしても作成可能○ Key Vault のシークレット更新も AKS 内に反映AKS のシークレット管理Azure Portal での有効化はこちらから
好きなサービス・ツール同士を掛け合わせたい(浪漫)が、つまずきも多い
つまずきポイント1. HVN を Azure VNet をピアリングできない2. AKS から HCP Vault に繋がらない3. HCP Vault から AKS (Private Cluster) に繋がらない
● 事前に HVN と VNet をピアリングする必要がある● HCP ポータルでピアリング用 Terraform が表示されるので実行○ 個人テナントでは ピアリング成功○ 会社テナントでは ピアリング失敗HVN と Azure VNet をピアリングできないつまずき1
HVN と Azure VNet をピアリングできない● ピアリングの流れa. HashiCorp 管理のアプリケーション ID をエンタープライズアプリケーションとしてMicrosoft Entra ID (Azure AD) に登録b. サービスプリンシパルに VNet のカスタムロール割り当てc. HashiCorp アプリケーションが HVN と VNetをピアリングつまずき1
● ピアリングの流れa. HashiCorp 管理のアプリケーション ID をエンタープライズアプリケーションとしてMicrosoft Entra ID (Azure AD) に登録b. サービスプリンシパルに VNet のカスタムロール割り当てc. HashiCorp アプリケーションが HVN と VNetをピアリングアプリケーション登録の権限不足アプリケーション管理者ロールが必要だったつまずき1
● ピアリングもできたので AKS から HCP Vault のプライベート URL にアクセスさせてみよう → 繋がらないAKS から HCP Vault に繋がらないHVN VNetピアリングプライベート URL へのアクセス=Azure バックボーン経由パブリック URL へのアクセス=インターネット経由つまずき2
VNet● ピアリングした VNet とは別に AKS 用の VNet を作成していた● HVN とピアリングした VNet にAKS を作成することでプライベート URL でアクセス可能になったAKS 作成時の VNet 確認不足HVN VNetピアリング実際の構成つまずき2
● プライベート AKS クラスタの API サーバはパブリックアクセス不可● Kubernetes 認証するときに HCP Vault から AKS に対して通信が発生● プライベート AKS クラスタを使って認証もセキュアにしよう→繋がらないHCP Vault から AKS (Private Cluster) に繋がらないVNetHVNピアリングプライベートアクセス失敗パブリックアクセスは不可つまずき3
● HCP Vault はピアリングしているが Azure の名前解決できない○ AKS だけでなく他のサービスもアクセス不可● プライベート AKS クラスタはプライベート DNS ゾーンにレコードが登録される○ プライベート DNS ゾーンの仮想ネットワークリンクも不可● HashiCorp Consul というサービスディスカバリを使えばHCP Vault から Azure サービスにプライベートアクセス可能?HCP Vault が名前解決できないつまずき3まだ対処できてません …
まとめ● HCP Vault (HVN) を Azure VNet とピアリングするときはアプリケーション管理ロールが必要● AKS を作る際は “新規 VNet” or “既存 VNet” を要確認● HCP Vault から Azure サービスへのプライベートアクセスは(現時点では)難しい