Slide 1

Slide 1 text

AKS と HCP Vault の組み合わせで つまずいた話 Japan Azure User Group 13周年イベント 2023/9/16

Slide 2

Slide 2 text

自己紹介 Name Taichi Nonoshita X @nnstt1 Company 株式会社エーピーコミュニケーションズ Love 3人の息子たち(3歳・1歳双子) めざせ Azure 資格全冠! (まだ折り返してない …)

Slide 3

Slide 3 text

お話しすること・しないこと お話しすること ● HashiTalks のセッションを準備するにあ たって Azure でつまずいた経験 お話ししないこと ● AKS の詳しい説明 ● HashiCorp Vault の詳しい説明

Slide 4

Slide 4 text

● HashiCorp が開発しているシークレット管理ツール ● 様々な環境で利用可能 ○ コミュニティ版 Vault ○ セルフマネージドな Vault Enterprise ○ マネージドサービスの HCP Vault ←本日の対象 ● Dynamic Secrets という機能が特徴的(個人の感想) ○ ユーザからのリクエストに応じて Microsoft Entra ID (Azure AD) や Database などに期限付きのユーザを作成 簡単な HashiCorp Vault の説明 とても雑な

Slide 5

Slide 5 text

● HCP (HashiCorp Cloud Platform) で提供されている Vault のマネージドサービス ● HVN (HashiCorp Virtual Network) を Azure に作成、 ユーザ管理の VNet とピアリングすることで HCP Vault にプライベートアクセス可能 ● HCP Vault が Azure に対応したのは 2023/2 HCP Vault とは

Slide 6

Slide 6 text

● 2023/3 に公開された Vault Secrets Operator により、Kubernetes の シークレットを Vault で管理することがより簡単になった ● Vault Secrets Operator と HCP Vault を使えば AKS のシークレットを 安全に管理できそう HCP Vault で AKS のシークレットを管理

Slide 7

Slide 7 text

AKS にはシークレット管理の機能があるのでは?

Slide 8

Slide 8 text

● 既に AKS では Secret Store CSI Driver という機能を使った シークレット管理が提供されている ○ Key Vault のシークレットを AKS のアプリケーション (Pod) に連携 ○ Secret リソースとしても作成可能 ○ Key Vault のシークレット更新も AKS 内に反映 AKS のシークレット管理 Azure Portal での有効化はこちらから

Slide 9

Slide 9 text

好きなサービス・ツール同士を掛け合わせたい(浪漫) が、つまずきも多い

Slide 10

Slide 10 text

つまずきポイント 1. HVN を Azure VNet をピアリングできない 2. AKS から HCP Vault に繋がらない 3. HCP Vault から AKS (Private Cluster) に繋がらない

Slide 11

Slide 11 text

● 事前に HVN と VNet をピアリングする必要があ る ● HCP ポータルでピアリング用 Terraform が表 示されるので実行 ○ 個人テナントでは ピアリング成功 ○ 会社テナントでは ピアリング失敗 HVN と Azure VNet をピアリングできない つまずき1

Slide 12

Slide 12 text

HVN と Azure VNet をピアリングできない ● ピアリングの流れ a. HashiCorp 管理のアプリケーション ID を エンタープライズアプリケーションとして Microsoft Entra ID (Azure AD) に登録 b. サービスプリンシパルに VNet のカスタムロー ル割り当て c. HashiCorp アプリケーションが HVN と VNet をピアリング つまずき1

Slide 13

Slide 13 text

● ピアリングの流れ a. HashiCorp 管理のアプリケーション ID を エンタープライズアプリケーションとして Microsoft Entra ID (Azure AD) に登録 b. サービスプリンシパルに VNet のカスタムロー ル割り当て c. HashiCorp アプリケーションが HVN と VNet をピアリング アプリケーション登録の権限不足 アプリケーション管理者 ロールが必要だった つまずき1

Slide 14

Slide 14 text

● ピアリングもできたので AKS から HCP Vault のプライベート URL にアクセ スさせてみよう  → 繋がらない AKS から HCP Vault に繋がらない HVN VNet ピアリング プライベート URL へのアクセス =Azure バックボーン経由 パブリック URL へのアクセス =インターネット経由 つまずき2

Slide 15

Slide 15 text

VNet ● ピアリングした VNet とは別に AKS 用の VNet を作成していた ● HVN とピアリングした VNet にAKS を作成することで プライベート URL でアクセス可能になった AKS 作成時の VNet 確認不足 HVN VNet ピアリング 実際の構成 つまずき2

Slide 16

Slide 16 text

● プライベート AKS クラスタの API サーバはパブリックアクセス不可 ● Kubernetes 認証するときに HCP Vault から AKS に対して通信が発生 ● プライベート AKS クラスタを使って認証もセキュアにしよう →繋がらない HCP Vault から AKS (Private Cluster) に繋がらない VNet HVN ピアリング プライベートアクセス失 敗 パブリックアクセスは不可 つまずき3

Slide 17

Slide 17 text

● HCP Vault はピアリングしているが Azure の名前解決できない ○ AKS だけでなく他のサービスもアクセス不可 ● プライベート AKS クラスタはプライベート DNS ゾーンに レコードが登録される ○ プライベート DNS ゾーンの仮想ネットワークリンクも不可 ● HashiCorp Consul というサービスディスカバリを使えば HCP Vault から Azure サービスにプライベートアクセス可能? HCP Vault が名前解決できない つまずき3 まだ対処できてません …

Slide 18

Slide 18 text

まとめ ● HCP Vault (HVN) を Azure VNet とピアリングする ときはアプリケーション管理ロールが必要 ● AKS を作る際は “新規 VNet” or “既存 VNet” を要確認 ● HCP Vault から Azure サービスへのプライベート アクセスは(現時点では)難しい