Slide 1

Slide 1 text

Azure AD Pod Identityの簡単な紹介 genboku

Slide 2

Slide 2 text

Azure AD Pod Identityとは? 2 AKS上で動くアプリケーションから パスワードを必要とせずにAzure上 のリソースに安全にアクセスできる ようにするための仕組みです。

Slide 3

Slide 3 text

今回の内容 ⚫ AAD Pod Identityを3ステップで理解する 3 1 ベースとなる知識 • Azure ADの”地味な”役割 • Service Principal • Managed ID 2 使い方 • ラベルを振ってURLを叩くだけ 3 実装例 • Application Gateway Ingress Controller • Azure Key Vault Provider for Secrets Store CSI Driver

Slide 4

Slide 4 text

ベースとなる知識 Azure ADと聞いてぱっと連想するのは? 4 ユーザー情報の認証・認可基盤 と回答される方が多いはず… Azure上のリソースを操作するための サービスアカウント(サービスプリンシパル) を提供する役割も担ってます。

Slide 5

Slide 5 text

ベースとなる知識 参考: 3分でわかるAzureでのService Principal https://www.slideshare.net/ToruMakabe/3azure-service-principal 5 サービスプリンシパルとは? Azure上のリソースをユーザの代わりに認証してもらう ユーザーに代わってサービスプリンシパルという アカウントでAzureADにアクセスする az login --service-principal --username SP_ID --password SP_PASSWORD --tenant TENANT_ID サービスプリンシパル VM Azure リソース

Slide 6

Slide 6 text

ベースとなる知識 6 サービスプリンシパルの落とし穴 サービスプリンシパル VM サービスプリンシパルを使うための パスワードを 安全に保存する方法がない az login --service-principal --username SP_ID --password SP_PASSWORD --tenant TENANT_ID Azure リソース

Slide 7

Slide 7 text

ベースとなる知識 7 サービスプリンシパルの落とし穴 サービスプリンシパル VM Azure KeyVault AzureKeyVaultからパスワードを取得するために 結局、サービスプリンシパルのパスワードを VM内に持つ必要がある

Slide 8

Slide 8 text

ベースとなる知識 8 ⚫ パスワードレスで使える サービスプリンシパル ⚫ Azureのリソースからのみアクセスできな いように制限することで安全を確保 マネージド IDとは? AKSでマネージドIDを使いやすくし たのがAzure AD Pod Identityです

Slide 9

Slide 9 text

まとめ Azure AD Pod Identityの役割 9 AKS上で動くアプリケー ションのためのID/認証サ ポート基盤 AKS上で動くアプリケーショ ンからパスワードなしに Azure上のリソースに安全に アクセスできるようにする

Slide 10

Slide 10 text

使い方 10

Slide 11

Slide 11 text

使い方(準備編) 11 1. AKSにAAD Pod Identityをデプロイする 2. マネージドIDをAzureに作成する 3. AzureIdentity, AzureIdentityBindingと呼ば れるCRDファイル※をデプロイする ※PodとマネージドIDの紐づけ情報を提供します 4. マネージドIDを使用したいアプリケー ションのPodにラベルをつける

Slide 12

Slide 12 text

例: Podのマニフェストファイル 12 apiVersion: v1 kind: Pod metadata: name: demo labels: aadpodidbinding: $IDENTITY_NAME spec: containers: - name: demo (以下略)

Slide 13

Slide 13 text

使い方(アプリケーション側) 13 Azure Blob Storage AIMS 1. Azure Instance Metadata service endpoint にリクエストを投げる ※http://169.254.169.254/metadata/identit y/oauth2/token 1 2 3 Azure Blob Storageにアクセスする 2. Azure ADの認証トークン を取得する 3. 認証トークンをヘッダーに乗せて BlobStorageにアクセスする

Slide 14

Slide 14 text

実装例 14

Slide 15

Slide 15 text

実装例1: Application Gateway Ingress Controller ⚫ AzureのManaged WAFであるApplication GatewayをAKSのIngress Controllerとして 使用できるようにする 15 参考: https://github.com/Azure/application-gateway-kubernetes-ingress ここでAzure AD Pod Idenitityが使 用されている

Slide 16

Slide 16 text

実装例2: Azure Key Vault Provider for Secrets Store CSI Driver ⚫ Azure Key Vaultに安全にアクセスして秘匿情 報を取得するためのCSIドライバー ⚫ Azure Key Vaultにアクセスする認証方法とし てServicePrinicipalの代わりにAAD Pod Identityが選択できる ⚫ 絶賛開発中ですが気になる方は下記URLに動 作手順が記載されているのでご覧ください https://github.com/Azure/secrets-store-csi- driver-provider-azure/blob/master/docs/pod- identity-mode.md 16

Slide 17

Slide 17 text

まとめ AAD Pod IdentityとはAKS上で動くアプリケーション からパスワードを必要とせずにAzure上のリソース に安全にアクセスできるようにするための仕組み 17 1 ベースとなる知識 (Service Principal, Managed ID) 2 使い方 • ラベルを振ってURLを叩くだけ 3 実装例 • Application Gateway Ingress Controller • Azure Key Vault Provider for Secrets Store CSI Driver

Slide 18

Slide 18 text

参考文献 18 ⚫ AAD Pod IdentityのGitHubウェブサイト https://github.com/Azure/aad-pod-identity ※開発元プロジェクト ⚫ AAD Pod Concept Design https://github.com/Azure/aad-pod- identity/blob/master/docs/design/concept.png ⚫ Pod Identity(MS Azureチームによる技術ブログ) https://medium.com/microsoftazure/pod-identity-5bc0ffb7ebe7 ※“How does it work?” がシンプルに内部で行っている処理を開設し ている ⚫ Azure Kubernetes Service の Machine Learning Web サービスで Azure AD ID を使用する https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to- use-azure-ad-identity ※具体的にアプリケーションにどうやって実装すればいいかわかり やすい。Microsoft SDKを利用している場合、いい感じに処理が隠蔽 されていることがわかる。 ⚫ https://github.com/Azure/AKS/issues/1480