Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure AD Pod Identityについて

Azure AD Pod Identityについて

Azure Kubernetes×スタートアップ+Build速報 - MSTechNight #10のLTで
ご紹介させていただきました。

A15b71ae6fbdecb3216bdcba552d9a77?s=128

SSSSSSSSSSSSHHHHHHHHHH

June 11, 2020
Tweet

Transcript

  1. Azure AD Pod Identityの簡単な紹介 genboku

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

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

  5. ベースとなる知識 参考: 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 リソース
  6. ベースとなる知識 6 サービスプリンシパルの落とし穴 サービスプリンシパル VM サービスプリンシパルを使うための パスワードを 安全に保存する方法がない az login

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

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

    AKSでマネージドIDを使いやすくし たのがAzure AD Pod Identityです
  9. まとめ Azure AD Pod Identityの役割 9 AKS上で動くアプリケー ションのためのID/認証サ ポート基盤 AKS上で動くアプリケーショ

    ンからパスワードなしに Azure上のリソースに安全に アクセスできるようにする
  10. 使い方 10

  11. 使い方(準備編) 11 1. AKSにAAD Pod Identityをデプロイする 2. マネージドIDをAzureに作成する 3. AzureIdentity,

    AzureIdentityBindingと呼ば れるCRDファイル※をデプロイする ※PodとマネージドIDの紐づけ情報を提供します 4. マネージドIDを使用したいアプリケー ションのPodにラベルをつける
  12. 例: Podのマニフェストファイル 12 apiVersion: v1 kind: Pod metadata: name: demo

    labels: aadpodidbinding: $IDENTITY_NAME spec: containers: - name: demo (以下略)
  13. 使い方(アプリケーション側) 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にアクセスする
  14. 実装例 14

  15. 実装例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が使 用されている
  16. 実装例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
  17. まとめ 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
  18. 参考文献 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