Slide 1

Slide 1 text

AKSのdashboardは 無効化した方がよいか?

Slide 2

Slide 2 text

はじめに • AKSのdashboardを使用していない場合無効化すべきか、そも そも使用を推すべきか、課題をまとめました。 • セキュリティに関する問題提起型のプレゼンです。 • 結論はありません • 下記のうち、どちらを選択するかのトロッコ問題です。 • AKSのdashboardを利用することによる利便性 • AKSのdashboardを利用可能な状態にすることによる セキュリティホールの危険性 • 少なくとも自分はAKSのdashboardを使用しなくてもいいかな と思っている立場の人間です

Slide 3

Slide 3 text

きっかけ • MS Ignite 2019のAKS Management Best Practice ⇒Disable the Dashboard (Recommended)のスライド (残念ながら動画で説明はなし) https://myignite.techcommunity.microsoft.com/sessions/81598 • AKSのProjects Roadmapにおけるdashboard関連のissue • https://github.com/Azure/AKS/issues/1074 Feature Request: Create AKS Cluster with Dashboard Disabled • https://github.com/Azure/AKS/issues/1197 Add Azure Policy alias for checking kubedashboard enabled status • https://github.com/Azure/AKS/issues/1198 Feature Request: Create AKS Cluster with Dashboard Disabled

Slide 4

Slide 4 text

過去のトラウマ1 • Ver1.6までのバージョンではkubernetes-dashboardに認証機 能がなかった =>Teslaで運用されていたKubernetesが 仮想通貨のマイニングに悪用される • インターネット上に公開&cluster-admin権限の付与という無 防備状態だったため https://redlock.io/blog/cryptojacking-tesla https://blog.heptio.com/on-securing-the-kubernetes- dashboard-16b09b1b7aca

Slide 5

Slide 5 text

過去のトラウマ2 • 権限昇格の脆弱性がkubernetes-dashboardに発見される https://sysdig.com/blog/privilege-escalation-kubernetes-dashboard/ • 今はSKIPボタンはありません https://github.com/gardener/gardener/pull/555

Slide 6

Slide 6 text

現在のAKSに関する問題点 • Az aks browseを実行中、Dashboardは公開状態になる (ちょっと前まで。今は違うかもしれません) • Dashboardを見る人に適切なroleを割り振るのが難しい MS Documentに書いてあるaz aks browseを利用した場合、 認証画面が出てこない =>dashboardに振られたsaをみんなが利用することに… • Azure上のサービスを利用する場合、AzureADとの連携を考えたときに、 いまだにissueが枯れていない=利用できないと見た方がいい AKS with RBAC unable to view Dashboard with Azure AD https://github.com/MicrosoftDocs/azure-docs/issues/23789

Slide 7

Slide 7 text

それでも使用したい場合は? https://github.com/Azure/aks-bestpractices-ignite19 より引用

Slide 8

Slide 8 text

最後に • ロール権限を割り振る必要がないくらい少人数のチームなら正直あまり関 係ない • ロール権限を割り振るくらい役割が細分化された大規模チームなら、なお さら素のkubernetes-dashboardを使用する必要ってあまりない (GitOpsなど適切に運用していれば必要性ってないと存じます) • 現状のAKSは普通に作成するとkubernetes-dashboardは常駐して いますが、サービスを開放していません ⇒したがって、それだけではセキュリティインシデントになることは考えづらい ⇒しかし、kube-apiserverに直結するエンドポイントではある ⇒使用しないのであれば、口はなるべく閉じることをお勧めしたい