0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenClaw を AKS と Microsoft Foundry で安全に検証

0
Last updated at Posted at 2026-05-05

はじめに

Microsoft Tech Community の以下の記事をきっかけに、AKS 上に OpenClaw を載せて、Microsoft Foundry のモデルを EntraID経由で安全に使う構成を試しました。

  • シナリオ

    • OpenClaw を AKS の Kata-isolated node pool 上で動かす
    • OpenClaw から Microsoft Foundry のモデルを Entra ID ベースで安全に呼ぶ
  • GitHub リポジトリ


今回の構成

  1. Microsoft Foundry リソースと Project を作成
  2. Foundry 上に gpt-5.2 をデプロイする
  3. OpenClaw 用の User Assigned Managed Identity を作成
  4. Managed Identity に Foundry リソースへのロールを付与
  5. OpenClaw から Foundry endpoint を Entra ID ベースで呼ぶ

全体像

  • AKS クラスター
  • User Assigned Managed Identity
  • Microsoft Foundry リソース
  • Microsoft Foundry Project
  • Azure Files 用ストレージアカウント

1. Microsoft Foundry を作成してモデルをデプロイする

この部分は、基本的には公式ドキュメントどおりに進めるのがよいです。

  • Microsoft Foundry リソースの作成
  • Foundry Project の作成
  • 利用するモデル deployment の作成

手順の詳細は以下を参照してください。

今回使ったモデルは gpt-5.2 で、最後に、OpenClaw 側から利用する endpoint を用意します。

公式ドキュメントでは project endpoint を使う例が多く、たとえば Foundry Models の Responses API では https://<resource>.services.ai.azure.com/api/projects/<project>/openai/v1 の形が案内されています。

今回は account endpoint を OpenClaw 側の base URL として使いました。

FOUNDRY_ENDPOINT="$(az cognitiveservices account show \
	--resource-group "${RG_NAME}" \
	--name "${FOUNDRY_NAME}" \
	--query properties.endpoint \
	--output tsv)"

2. OpenClaw 用の User Assigned Managed Identity を作る

今回は User Assigned Managed Identity を使っています。

az identity create \
	--resource-group "${RG_NAME}" \
	--name "${UAMI_NAME}" \
	--location "${LOCATION}"

作成後に最低限控えるのは次の 2 つです。

  • clientId
  • principalId
UAMI_CLIENT_ID="$(az identity show \
	--resource-group "${RG_NAME}" \
	--name "${UAMI_NAME}" \
	--query clientId \
	--output tsv)"

UAMI_PRINCIPAL_ID="$(az identity show \
	--resource-group "${RG_NAME}" \
	--name "${UAMI_NAME}" \
	--query principalId \
	--output tsv)"

clientId は Kubernetes ServiceAccount annotation で使い、principalId は RBAC 割り当てで使います。


3. OpenClaw から使う Managed Identity を関連付ける

今回は AKS 側で Microsoft Entra 連携と Managed Identity が使える前提で、OpenClaw から利用する User Assigned Managed Identity を整理しました。

AKS 側では、以下を有効にした状態でクラスターを作成しています。

  • Microsoft Entra integration
  • Azure RBAC
  • OIDC Issuer
  • Microsoft Entra Workload ID

クラスター作成時のイメージは以下です。

az aks create \
	--resource-group "${RG_NAME}" \
	--name "${AKS_NAME}" \
	--location "${LOCATION}" \
	--enable-managed-identity \
	--enable-aad \
	--enable-azure-rbac \
	--enable-oidc-issuer \
	--enable-workload-identity

OpenClaw は Kata-isolated user node pool 上で動かします。

az aks nodepool add \
	--resource-group "${RG_NAME}" \
	--cluster-name "${AKS_NAME}" \
	--name "${KATA_NODEPOOL_NAME}" \
	--mode User \
	--node-count "${KATA_NODE_COUNT}" \
	--node-vm-size "${KATA_VM_SIZE}" \
	--os-sku AzureLinux \
	--workload-runtime KataVmIsolation

kubectl label nodes \
	-l agentpool="${KATA_NODEPOOL_NAME}" \
	workload-isolation=kata --overwrite

作成した User Assigned Managed Identity を AKS の Pod に安全に透過させるため、Microsoft Entra Workload ID を使用してフェデレーション資格情報を設定します。
これにより、Pod 内の OpenClaw がシークレットレスでトークンを取得可能になります。

まず、AKS クラスターの OIDC Issuer URL を取得します。

AKS_OIDC_ISSUER="$(az aks show \
	--resource-group "${RG_NAME}" \
	--name "${AKS_NAME}" \
	--query oidcIssuerProfile.issuerUrl \
	--output tsv)"

az identity federated-credential create \
	--resource-group "${RG_NAME}" \
	--identity-name "${UAMI_NAME}" \
	--name "fc-openclaw" \
	--issuer "${AKS_OIDC_ISSUER}" \
	--subject "system:serviceaccount:${OPENCLAW_NAMESPACE}:${OPENCLAW_SERVICE_ACCOUNT}" \
	--audiences "api://AzureADTokenExchange"

今回のリポジトリでは、ServiceAccount は openclaw namespace の openclaw-sa です。


4. Managed Identity に Foundry へのアクセス権を付与する

OpenClaw から Foundry を使うには、Managed Identity に Foundry リソースのロールを付ける必要があります。

このリポジトリでは、Foundry リソース ID を取得して、Cognitive Services User を割り当てています。

FOUNDRY_ID="$(az cognitiveservices account show \
	--resource-group "${RG_NAME}" \
	--name "${FOUNDRY_NAME}" \
	--query id \
	--output tsv)"

az role assignment create \
	--assignee-object-id "${UAMI_PRINCIPAL_ID}" \
	--assignee-principal-type ServicePrincipal \
	--role "Cognitive Services User" \
	--scope "${FOUNDRY_ID}"

今回は、Managed Identity に Foundry リソース scope で Cognitive Services User を割り当てました。


5. OpenClaw から Foundry のモデルを呼ぶ

OpenClaw から Foundry を使うときは、最終的に Foundry endpoint に対して認証付きでアクセスできればよいです。

このリポジトリでは、Pod 起動時に initContainer が Microsoft Entra Workload ID 経由で https://cognitiveservices.azure.com/.default の access token を取得し、OpenClaw の設定ファイルに bearer token として埋め込みます。

OpenClaw の provider 設定を次のようにしています。

{
	"models": {
		"providers": {
			"microsoft-foundry": {
				"baseUrl": "${FOUNDRY_ENDPOINT}/openai/v1",
				"api": "openai-responses",
				"headers": {
					"Authorization": "Bearer __FOUNDRY_ACCESS_TOKEN__"
				}
			}
		}
	}
}

なお、このリポジトリは検証用の構成です。


6. 最終的に確認したこと

最終的には、次の流れまで確認できました。

  1. Foundry に gpt-5.2 をデプロイ
  2. OpenClaw Pod が AKS 上で起動
  3. OpenClaw が Foundry provider をロード
  4. ローカルから Control UI に接続できる
    OpeCuNでできること(代表者.png
    Pasted Graphic 2.png

まとめ

AKS 上の OpenClaw から Microsoft Foundry を安全に使ううえで、今回試した最小構成のポイントは次のとおりです。

  • Foundry リソースに Cognitive Services User を付与
  • OpenClaw から Authorization: Bearer ... で Foundry endpoint を呼ぶ

OpenClaw 側の追加機能検証を進める予定です。


参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?