$30 off During Our Annual Pro Sale. View Details »

Azure AD Pod Identityについて

Azure AD Pod Identityについて

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

SSSSSSSSSSSSHHHHHHHHHH

June 11, 2020
Tweet

More Decks by SSSSSSSSSSSSHHHHHHHHHH

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  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

    View Slide

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

    View Slide

  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
    リソース

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. 使い方
    10

    View Slide

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

    View Slide

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

    View Slide

  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にアクセスする

    View Slide

  14. 実装例
    14

    View Slide

  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が使
    用されている

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide