Azure Kubernetes ServiceでMicrosoft Entra Workload IDを使う方法と2026年4月更新ポイント

AKS上のアプリケーションからAzure Key Vault、Microsoft Graph、Storageなどへアクセスする場合、いま最初に検討すべき認証方式は Microsoft Entra Workload ID です。従来のようにアプリケーション資格情報や長期シークレットをPodに持たせるのではなく、KubernetesのServiceAccountとMicrosoft Entra IDをOIDCでフェデレーションし、Pod単位でAzureリソースへ安全にアクセスできます。Microsoft Learnの「Use Microsoft Entra Workload ID with Azure Kubernetes Service (AKS)」では、Workload IDの前提条件、制限、サービスアカウントの注釈、Podラベル、移行方針が整理されています。(Microsoft Learn)

2026年4月時点で重要なのは、「Workload IDを単なるAKSの追加機能として有効化する」のではなく、AKSのID設計、Azure RBAC、サービスアカウント運用、監査証跡をセットで見直すことです。特にセキュリティ管理者、IDチーム、コンプライアンス担当者は、どのPodが、どのIDで、どのAzureリソースへ、どの権限でアクセスするのかを明確にする必要があります。

目次

2026年4月の更新ポイントは「AKSのIDシナリオを分けて考える」こと

Microsoft Learnでは、AKSのIDを5つのシナリオに分けて説明しています。2026年4月23日に更新されたAKSのアクセスとIDに関する公式ドキュメントでは、Workload identityは「PodからAzureサービスへ認証する」シナリオとして明確に位置付けられています。これは、Kubernetes APIへ誰がアクセスするか、AKSクラスター自体がAzure上でどう振る舞うか、といった別のID設計とは分けて考えるべき領域です。(Microsoft Learn)

混同しやすいのは、次の3つです。

領域主な目的Workload IDとの関係
Kubernetes APIの認証・認可管理者やCI/CDがKubernetes APIへアクセスする別領域。Microsoft Entra ID統合やKubernetes RBACで設計する
AKSクラスターIDAKSがロードバランサー、ディスク、ACRなどを扱う別領域。クラスターのマネージドIDで設計する
Workload identityPodがKey Vault、Storage、Graphなどへアクセスする本記事の対象。PodとAzureリソースの認証を扱う

つまり、Microsoft Entra Workload ID AKSの導入で解決できるのは、Pod内アプリケーションのAzureリソース認証です。クラスター管理者権限の整理や、kubectl利用者の認可まで自動的に解決する機能ではありません。

Microsoft Entra Workload ID on AKSの仕組み

Microsoft Entra Workload IDは、AKSクラスターをトークン発行者として扱い、KubernetesのServiceAccountトークンをMicrosoft Entra ID側で検証できるようにします。Microsoft Entra IDはOIDCのディスカバリードキュメントと公開署名キーを使ってトークンの正当性を確認し、Azure Identity client libraryまたはMSALを通じてMicrosoft Entraトークンへ交換します。(Microsoft Learn)

認証の流れを実務向けに言い換えると、次のようになります。

ステップ何が起きるか管理上の確認ポイント
1AKSでOIDC issuerとWorkload IDを有効化するクラスターごとにOIDC issuer URLを把握する
2Kubernetes ServiceAccountを作成するnamespace、ServiceAccount名、用途を台帳化する
3ユーザー割り当てマネージドIDを作成する所有者、環境、権限範囲を明確にする
4フェデレーションID資格情報を作成するissuer、subject、audienceが正確に一致しているか確認する
5Podに必須ラベルとServiceAccountを設定するWebhookによる環境変数とトークンボリューム注入を確認する
6Azure RBACで対象リソースへの権限を付与するKey VaultやStorageなどリソース単位で最小権限にする

ここで大切なのは、Workload IDは「Azureリソースへアクセスするための本人確認」を成立させる仕組みであり、実際にKey Vaultのシークレットを読めるかどうかはAzure RBACなどの権限設定で決まる点です。認証と認可を分けてレビューしないと、「トークンは取れるがリソースにアクセスできない」「逆に広すぎる権限を与えてしまう」といった失敗が起きます。

前提条件と制限事項で必ず確認すべき点

Microsoft Learnでは、AKSでMicrosoft Entra Workload IDを使う前提としてAKS 1.22以降、Azure CLI 2.47.0以降が示されています。また、フェデレーションID資格情報はマネージドIDごとに最大20個、仮想ノードアドオンは非対応、フェデレーションID資格情報の反映には数秒かかるとされています。(Microsoft Learn)

確認項目実務での見方
AKSバージョン古いクラスターではWorkload IDを前提にした設計ができない可能性がある
Azure CLIIaCや運用端末のCLIバージョンが古いと手順でつまずく
フェデレーションID資格情報の上限1つのマネージドIDを多くのServiceAccountで使い回す設計は早めに限界を迎える
反映遅延作成直後の疎通テスト失敗を恒久障害と誤判定しない
仮想ノード対象ワークロードでVirtual Nodesを使っている場合は設計を見直す

多国籍・多リージョン環境では、リージョン制約も確認が必要です。フェデレーションID資格情報の制限ページでは、ユーザー割り当てマネージドIDに対するフェデレーションID資格情報の作成がサポートされないリージョンが示されており、該当する場合はサポート済みリージョンに作成したマネージドIDを使う設計が必要になります。(Microsoft Learn)

最短で理解する設定手順

新規または既存のAKSクラスターでは、OIDC issuerとMicrosoft Entra Workload IDを有効化します。公式手順では、新規クラスター作成時に --enable-oidc-issuer と --enable-workload-identity を指定し、既存クラスターでは az aks update で同じ機能を有効化する流れが示されています。(Microsoft Learn)

az aks update \
  --resource-group "<resource-group>" \
  --name "<cluster-name>" \
  --enable-oidc-issuer \
  --enable-workload-identity

次に、ユーザー割り当てマネージドIDを作成し、そのクライアントIDをKubernetes ServiceAccountに注釈として設定します。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: workload-identity-sa
  namespace: app-prod
  annotations:
    azure.workload.identity/client-id: "<managed-identity-client-id>"

その後、AKSのOIDC issuer、ServiceAccountのsubject、audienceを使ってフェデレーションID資格情報を作成します。公式手順では、audienceに api://AzureADTokenExchange を指定する例が示されています。(Microsoft Learn)

az identity federated-credential create \
  --name "<federated-credential-name>" \
  --identity-name "<managed-identity-name>" \
  --resource-group "<resource-group>" \
  --issuer "<aks-oidc-issuer-url>" \
  --subject "system:serviceaccount:app-prod:workload-identity-sa" \
  --audience "api://AzureADTokenExchange"

最後に、Workload IDを使うPodへ必須ラベルを付けます。azure.workload.identity/use: "true" が付いたPodだけが、mutating admission webhookによる環境変数と投影ServiceAccountトークンボリュームの注入対象になります。(Microsoft Learn)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample-app
  namespace: app-prod
spec:
  template:
    metadata:
      labels:
        azure.workload.identity/use: "true"
    spec:
      serviceAccountName: workload-identity-sa
      containers:
        - name: app
          image: "<your-image>"

ServiceAccount設計は「権限の境界」として扱う

Microsoft Entra Workload IDでは、ServiceAccountとMicrosoft Entra側のオブジェクトの関係として、1対1、多対1、1対多のマッピングがサポートされています。ServiceAccountの注釈を更新した場合、変更を有効にするにはPodの再起動が必要です。(Microsoft Learn)

設計時の判断基準は次のとおりです。

設計向いているケース注意点
1 ServiceAccount : 1 マネージドID本番環境、機密データ、監査対象システム管理対象は増えるが、追跡と最小権限に強い
複数ServiceAccount : 1 マネージドID同じ権限でよい同一アプリ群どのPodが使ったかの切り分けが難しくなる
1 ServiceAccount : 複数ID例外的に複数のAzureリソース権限を切り替える場合注釈変更や運用ミスのリスクが高い

セキュリティを優先するなら、本番環境では「アプリケーション単位」または「機能単位」でユーザー割り当てマネージドIDを分けるのが現実的です。たとえば、注文APIがKey Vaultのシークレットを読むIDと、バックオフィスバッチがStorageへ書き込むIDを同じにしない設計です。

Azure Identity SDKの確認は移行前に必須

アプリケーション側では、Azure Identity client libraryの DefaultAzureCredential、ChainedTokenCredential、または WorkloadIdentityCredential を使えます。Microsoft Learnでは、各言語のAzure Identity client libraryについて最小パッケージバージョンが示されています。(Microsoft Learn)

言語ライブラリ最小バージョン
.NETAzure.Identity1.9.0
C++azure-identity-cpp1.6.0
Goazidentity1.3.0
Javaazure-identity1.9.0
Node.js@azure/identity3.2.0
Pythonazure-identity1.13.0

既存アプリがすでに DefaultAzureCredential を使っている場合、移行の難易度は下がります。一方、古いSDKやIMDS前提の実装に強く依存している場合は、アプリ改修、移行サイドカー、一時的な併用のどれを選ぶかを事前に決める必要があります。

既存のpod-managed identityから移行する場合の考え方

既存AKSでpod-managed identityを使っている場合、Microsoft Learnは現在のAzure Identity SDKバージョンに応じて、最新SDKでの並行移行、Linuxコンテナー向けの移行サイドカー、SDK書き換えの3つのパスを示しています。移行サイドカーはIMDSトランザクションをOIDCへプロキシする一時策であり、長期運用を前提にするものではありません。(Microsoft Learn)

現在の状態推奨される進め方
最新のAzure Identity SDKを利用中Workload IDを並行展開し、認証確認後にpod-managed identityを削除する
古いSDKかつLinuxコンテナー移行サイドカーで一時的に動かし、SDK更新計画を立てる
古いSDKで長期運用が必要アプリケーションを最新SDKへ更新してから移行する
Windowsコンテナー移行サイドカーではなく、SDK更新を前提に計画する

移行で失敗しやすいのは、ID基盤チームがフェデレーション信頼だけを作り、アプリチームがPod再起動やSDK対応を後回しにするケースです。移行計画には、フェデレーションID資格情報の作成、Podラベル追加、ServiceAccount差し替え、Azure RBAC付与、ログ確認、旧pod-managed identity削除までを1つの変更作業として含めるべきです。

コンプライアンス担当者が見るべき証跡

Workload IDの導入後、監査で問われるのは「シークレットを使っていないか」だけではありません。むしろ重要なのは、アクセス権の根拠と変更履歴です。

監査観点確認するもの
IDの所有者ユーザー割り当てマネージドIDの命名、タグ、管理責任者
ワークロードとの紐付けnamespace、ServiceAccount、subjectの一覧
権限の妥当性Key Vault Secrets Userなど、対象リソース単位のAzure RBAC
変更管理フェデレーションID資格情報、ServiceAccount注釈、Deployment変更の履歴
動作確認Podログ、Key Vaultや対象サービス側のアクセスログ、失敗時の再試行ログ
例外管理一時的な移行サイドカー、共有ID、広いスコープのロール割り当て

Microsoft Entra Workload IDは、ワークロードIDの保護、シークレット管理の削減、条件付きアクセスポリシーやID保護などの活用と組み合わせて考えるべき領域です。Microsoft Entraの公式ドキュメントでも、ワークロードIDは人間のIDとは異なる非人間IDとして扱われ、保護対象として重要性が高まっていると説明されています。(Microsoft Learn)

よくある失敗と回避策

Podラベルを付け忘れる

azure.workload.identity/use: "true" がないPodはWebhookによる注入対象になりません。ServiceAccountの注釈だけを設定しても、アプリケーションが期待どおりにトークンを取得できない可能性があります。Deploymentテンプレート側にラベルが入っているかを確認してください。

subjectの文字列を間違える

フェデレーションID資格情報では、issuerとsubjectの組み合わせがトークン交換の重要な照合条件です。subjectは通常、次の形式になります。

system:serviceaccount:<namespace>:<service-account-name>

namespaceやServiceAccount名を変更した場合、フェデレーションID資格情報も見直す必要があります。subjectの設定ミスは作成時に気づきにくく、実際のトークン交換時に失敗として表面化します。(Microsoft Learn)

RBAC反映待ちを障害と誤判定する

公式手順では、フェデレーションID資格情報の反映に数秒かかる可能性があり、Azure RBACのロール割り当ては反映に最大10分かかる場合があるとされています。構築直後の疎通確認では、短時間の待機と再試行を前提にしてください。(Microsoft Learn)

マネージドIDを共有しすぎる

1つのマネージドIDを多くのServiceAccountで共有すると、フェデレーションID資格情報の上限、権限の肥大化、監査時の説明困難という問題が出ます。共有してよいのは、同じ環境、同じアプリケーション境界、同じ権限で問題ない場合に限定するのが安全です。

移行サイドカーを恒久運用する

移行サイドカーは、古いSDKをすぐに更新できない場合の一時策です。長期的には、Azure Identity SDKを更新し、アプリケーションがWorkload IDを直接利用できる状態へ移行するほうが、運用・監査・障害解析の面で安定します。

導入前チェックリスト

Workload IDをAKSに導入する前に、次の項目を確認してください。

チェック項目完了条件
対象ワークロードの棚卸しAzureリソースへアクセスするPodを一覧化している
認証方式の方針シークレット、pod-managed identity、Workload IDのどれを使うか決めている
SDK確認対象アプリのAzure Identity SDKが対応バージョン以上である
ID設計ServiceAccountとマネージドIDの対応表がある
権限設計Azure RBACをリソース単位・最小権限で設計している
IaC管理AKS設定、ServiceAccount、フェデレーションID資格情報、RBACをコード化している
検証手順Pod Ready、環境変数、トークン取得、対象リソースアクセスを確認できる
監査証跡変更履歴、承認、アクセスログの保存方法が決まっている

まとめ: 次にやるべきこと

Azure Kubernetes ServiceでMicrosoft Entra Workload IDを使う価値は、Podに長期シークレットを持たせず、KubernetesのServiceAccountとMicrosoft Entra IDを結び付けてAzureリソースへアクセスできる点にあります。ただし、導入の成否は「機能をオンにしたか」ではなく、ServiceAccount設計、フェデレーションID資格情報、Azure RBAC、SDK対応、監査証跡まで一貫して設計できているかで決まります。

まずは本番導入前に、1つのnamespace、1つのServiceAccount、1つのユーザー割り当てマネージドID、1つのKey Vaultを使った最小構成で検証してください。そのうえで、アプリケーションごとのID分離、権限範囲、移行対象、監査ログを整理すると、セキュリティ管理者、IDチーム、コンプライアンス担当者が合意しやすい導入計画になります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次