Az - AI Foundry, AI Hubs, Azure OpenAI & AI Search
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
Pourquoi ces services sont importants
Azure AI Foundry est la plateforme de Microsoft pour construire des applications GenAI. Un hub agrÚge des AI projects, des Azure ML workspaces, du compute, des data stores, des registries, des prompt flow assets, et des connexions vers des services en aval tels que Azure OpenAI et Azure AI Search. Chaque composant expose communément :
- Clés API à longue durée de vie (OpenAI, Search, data connectors) répliquées dans Azure Key Vault ou dans des workspace connection objects.
- Managed Identities (MI) qui contrĂŽlent les dĂ©ploiements, les jobs dâindexation vectorielle, les pipelines dâĂ©valuation de modĂšles, et les opĂ©rations Git/GitHub Enterprise.
- Cross-service links (storage accounts, container registries, Application Insights, Log Analytics) qui héritent des permissions du hub/projet.
- Multi-tenant connectors (Hugging Face, Azure Data Lake, Event Hubs) qui peuvent leak des identifiants ou des tokens en amont.
La compromission dâun seul hub/projet peut donc impliquer le contrĂŽle des managed identities en aval, des clusters compute, des online endpoints, et de tous les search indexes ou OpenAI deployments rĂ©fĂ©rencĂ©s par les prompt flows.
Composants principaux et surface dâattaque
- AI Hub (
Microsoft.MachineLearningServices/hubs): Objet de niveau supĂ©rieur qui dĂ©finit la rĂ©gion, le managed network, les system datastores, le Key Vault par dĂ©faut, le Container Registry, Log Analytics, et les hub-level identities. Un hub compromis permet Ă un attaquant dâinjecter de nouveaux projects, registries, ou user-assigned identities. - AI Projects (
Microsoft.MachineLearningServices/workspaces): HĂ©bergent les prompt flows, data assets, environments, component pipelines, et les online/batch endpoints. Les projects hĂ©ritent des ressources du hub et peuvent aussi les surcharger avec leur propre storage, kv, et MI. Chaque workspace stocke des secrets sous/connectionset/datastores. - Managed Compute & Endpoints: Inclut les managed online endpoints, batch endpoints, serverless endpoints, dĂ©ploiements AKS/ACI, et des on-demand inference servers. Les tokens rĂ©cupĂ©rĂ©s depuis Azure Instance Metadata Service (IMDS) Ă lâintĂ©rieur de ces runtimes portent gĂ©nĂ©ralement les role assignments MI du workspace/projet (souvent
ContributorouOwner). - AI Registries & Model Catalog: Permettent le partage rĂ©gional de modĂšles, environments, composants, donnĂ©es, et rĂ©sultats dâĂ©valuation. Les registries peuvent automatiquement se synchroniser avec GitHub/Azure DevOps, ce qui signifie que des PATs peuvent ĂȘtre intĂ©grĂ©s dans les connection definitions.
- Azure OpenAI (
Microsoft.CognitiveServices/accountswithkind=OpenAI): Fournit les modĂšles de la famille GPT. LâaccĂšs est contrĂŽlĂ© via des role assignments + admin/query keys. Beaucoup de Foundry prompt flows conservent les clĂ©s gĂ©nĂ©rĂ©es comme secrets ou variables dâenvironnement accessibles depuis les compute jobs. - Azure AI Search (
Microsoft.Search/searchServices): Le stockage vectoriel/index est typiquement connectĂ© via une Search admin key stockĂ©e dans une project connection. Les donnĂ©es dâindex peuvent contenir des embeddings sensibles, des documents rĂ©cupĂ©rĂ©s, ou des corpus dâentraĂźnement bruts.
Architecture pertinente pour la sécurité
Managed Identities & Role Assignments
- Les AI hubs/projects peuvent activer des identities system-assigned ou user-assigned. Ces identities détiennent généralement des rÎles sur des storage accounts, Key Vaults, container registries, ressources Azure OpenAI, services Azure AI Search, Event Hubs, Cosmos DB, ou des APIs personnalisées.
- Les online endpoints hĂ©ritent du MI du projet ou peuvent ĂȘtre configurĂ©s avec un MI user-assigned dĂ©diĂ© par dĂ©ploiement.
- Les prompt flow connections et les Automated Agents peuvent demander des tokens via
DefaultAzureCredential; capturer lâendpoint metadata depuis le compute fournit des tokens pour le mouvement latĂ©ral.
Network Boundaries
- Les hubs/projects supportent
publicNetworkAccess, private endpoints, Managed VNet et **managedOutbound** rules. Une mauvaise configuration deallowInternetOutbound` ou des scoring endpoints ouverts permet une exfiltration directe. - Azure OpenAI et AI Search supportent firewall rules, Private Endpoint Connections (PEC), shared private link resources, et
trustedClientCertificates. Quand lâaccĂšs public est activĂ©, ces services acceptent des requĂȘtes depuis nâimporte quelle IP source qui connaĂźt la clĂ©.
Data & Secret Stores
- Les dĂ©ploiements par dĂ©faut de hub/projet crĂ©ent un storage account, un Azure Container Registry, un Key Vault, un Application Insights, et un Log Analytics workspace Ă lâintĂ©rieur dâun managed resource group cachĂ© (pattern:
mlw-<workspace>-rg). - Les workspace datastores référencent des blob/data lake containers et peuvent embarquer des SAS tokens, des secrets de service principal, ou des storage access keys.
- Les workspace connections (pour Azure OpenAI, AI Search, Cognitive Services, Git, Hugging Face, etc.) conservent les credentials dans le Key Vault du workspace et les exposent via le management plane lors de lâaffichage de la connection (les valeurs sont du JSON encodĂ© en base64).
- AI Search admin keys fournissent un accÚs complet en lecture/écriture aux indexes, skillsets, data sources, et peuvent récupérer des documents qui alimentent les systÚmes RAG.
Monitoring & Supply Chain
- AI Foundry prend en charge lâintĂ©gration GitHub/Azure DevOps pour le code et les prompt flow assets. Les OAuth tokens ou PATs rĂ©sident dans le Key Vault + la connection metadata.
- Le Model Catalog peut refléter des artifacts Hugging Face. Si
trust_remote_code=true, du code Python arbitraire sâexĂ©cute pendant le dĂ©ploiement. - Les data/feature pipelines loggent vers Application Insights ou Log Analytics, exposant des connection strings.
ĂnumĂ©ration avec az
# Install the Azure ML / AI CLI extension (if missing)
az extension add --name ml
# Enumerate AI Hubs (workspaces with kind=hub) and inspect properties
az ml workspace list --filtered-kinds hub --resource-group <RG> --query "[].{name:name, location:location, rg:resourceGroup}" -o table
az resource show --name <HUB> --resource-group <RG> \
--resource-type Microsoft.MachineLearningServices/workspaces \
--query "{location:location, publicNetworkAccess:properties.publicNetworkAccess, identity:identity, managedResourceGroup:properties.managedResourceGroup}" -o jsonc
# Enumerate AI Projects (kind=project) under a hub or RG
az resource list --resource-type Microsoft.MachineLearningServices/workspaces --query "[].{name:name, rg:resourceGroup, location:location}" -o table
az ml workspace list --filtered-kinds project --resource-group <RG> \
--query "[?contains(properties.hubArmId, '/workspaces/<HUB>')].{name:name, rg:resourceGroup, location:location}"
# Show workspace level settings (managed identity, storage, key vault, container registry)
az ml workspace show --name <WS> --resource-group <RG> \
--query "{managedNetwork:properties.managedNetwork, storageAccount:properties.storageAccount, containerRegistry:properties.containerRegistry, keyVault:properties.keyVault, identity:identity}"
# List workspace connections (OpenAI, AI Search, Git, data sources)
az ml connection list --workspace-name <WS> --resource-group <RG> --populate-secrets -o table
az ml connection show --workspace-name <WS> --resource-group <RG> --name <CONNECTION>
# For REST (returns base64 encoded secrets)
az rest --method GET \
--url "https://management.azure.com/subscriptions/<SUB>/resourceGroups/<RG>/providers/Microsoft.MachineLearningServices/workspaces/<WS>/connections/<CONN>?api-version=2024-04-01"
# Enumerate datastores and extract credentials/SAS
az ml datastore list --workspace-name <WS> --resource-group <RG>
az ml datastore show --name <DATASTORE> --workspace-name <WS> --resource-group <RG>
# List managed online/batch endpoints and deployments (capture identity per deployment)
az ml online-endpoint list --workspace-name <WS> --resource-group <RG>
az ml online-endpoint show --name <ENDPOINT> --workspace-name <WS> --resource-group <RG>
az ml online-deployment show --name <DEPLOYMENT> --endpoint-name <ENDPOINT> --workspace-name <WS> --resource-group <RG> \
--query "{identity:identity, environment:properties.environmentId, codeConfiguration:properties.codeConfiguration}"
# Discover prompt flows, components, environments, data assets
az ml component list --workspace-name <WS> --resource-group <RG>
az ml data list --workspace-name <WS> --resource-group <RG> --type uri_folder
az ml environment list --workspace-name <WS> --resource-group <RG>
az ml job list --workspace-name <WS> --resource-group <RG> --type pipeline
# List hub/project managed identities and their role assignments
az identity list --resource-group <RG>
az role assignment list --assignee <MI-PRINCIPAL-ID> --all
# Azure OpenAI resources (filter kind==OpenAI)
az resource list --resource-type Microsoft.CognitiveServices/accounts \
--query "[?kind=='OpenAI'].{name:name, rg:resourceGroup, location:location}" -o table
az cognitiveservices account list --resource-group <RG> \
--query "[?kind=='OpenAI'].{name:name, location:location}" -o table
az cognitiveservices account show --name <AOAI-NAME> --resource-group <RG>
az cognitiveservices account keys list --name <AOAI-NAME> --resource-group <RG>
az cognitiveservices account deployment list --name <AOAI-NAME> --resource-group <RG>
az cognitiveservices account network-rule list --name <AOAI-NAME> --resource-group <RG>
# Azure AI Search services
az search service list --resource-group <RG>
az search service show --name <SEARCH-NAME> --resource-group <RG> \
--query "{sku:sku.name, publicNetworkAccess:properties.publicNetworkAccess, privateEndpoints:properties.privateEndpointConnections}"
az search admin-key show --service-name <SEARCH-NAME> --resource-group <RG>
az search query-key list --service-name <SEARCH-NAME> --resource-group <RG>
az search shared-private-link-resource list --service-name <SEARCH-NAME> --resource-group <RG>
# AI Search data-plane (requires admin key in header)
az rest --method GET \
--url "https://<SEARCH-NAME>.search.windows.net/indexes?api-version=2024-07-01" \
--headers "api-key=<ADMIN-KEY>"
az rest --method GET \
--url "https://<SEARCH-NAME>.search.windows.net/datasources?api-version=2024-07-01" \
--headers "api-key=<ADMIN-KEY>"
az rest --method GET \
--url "https://<SEARCH-NAME>.search.windows.net/indexers?api-version=2024-07-01" \
--headers "api-key=<ADMIN-KEY>"
# Linkage between workspaces and search / openAI (REST helper)
az rest --method GET \
--url "https://management.azure.com/subscriptions/<SUB>/resourceGroups/<RG>/providers/Microsoft.MachineLearningServices/workspaces/<WS>/connections?api-version=2024-04-01" \
--query "value[?properties.target=='AzureAiSearch' || properties.target=='AzureOpenAI']"
Ce quâil faut rechercher lors de lâĂ©valuation
- PortĂ©e dâidentitĂ© : Les projets rĂ©utilisent souvent une identitĂ© assignĂ©e par lâutilisateur puissante attachĂ©e Ă plusieurs services. Capturer des IMDS tokens depuis nâimporte quel compute gĂ©rĂ© hĂ©rite de ces privilĂšges.
- Objets de connexion : La payload Base64 inclut le secret plus les mĂ©tadonnĂ©es (endpoint URL, API version). Beaucoup dâĂ©quipes laissent les clĂ©s admin OpenAI + Search ici plutĂŽt que de les faire tourner frĂ©quemment.
- Connecteurs Git et sources externes : Les PATs ou les OAuth refresh tokens peuvent permettre un accÚs en push au code qui définit les pipelines / prompt flows.
- Datastores et assets de donnĂ©es : Fournissent des SAS tokens valables pendant des mois ; les assets de donnĂ©es peuvent pointer vers des PII clients, des embeddings ou des corpus dâentraĂźnement.
- Remplacements du Managed Network :
allowInternetOutbound=trueoupublicNetworkAccess=Enabledrend trivial lâexfiltration de secrets depuis les jobs/endpoints. - Groupe de ressources gĂ©rĂ© par le Hub : Contient le storage account (
<workspace>storage), le container registry, KV, et Log Analytics. LâaccĂšs Ă ce RG signifie souvent une prise de contrĂŽle complĂšte mĂȘme si le portail le cache.
Références
- Azure AI Foundry architecture
- Azure Machine Learning CLI v2
- Azure OpenAI security controls
- Azure AI Search security
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

