AI-platform: toegang en RBAC¶
Toegang tot een Foundry project wordt gegeven aan drie Entra ID-groepen per project (owner, contributor, reader) en aan de identiteiten van het project en van je applicatie. Alle rollen zijn Azure RBAC-rollen die Terraform toewijst. Er zijn geen keys: het Foundry account heeft local authentication uitgeschakeld en de verbindingen gebruiken Entra ID.
Voor de generieke werking van groepen, PIM en access reviews op het platform, zie Toegang, groepen en PIM en het identiteits- en toegangsmodel.
Groepen¶
| Groep | Doel |
|---|---|
| Owner | Het project en de bijbehorende data beheren. Krijgt ook data-plane-rechten op de projectstorage, search en Cosmos DB. |
| Contributor | Bouwen in het project: agents aanmaken, bestanden uploaden, werken met de vector store. |
| Reader | Leestoegang tot de search index. |
De projectmodule neemt de object-ID's van de groepen als inputs owner_group_id, contributor_group_id en reader_group_id.
Rollen voor de groepen¶
| Resource | Owner-groep | Contributor-groep | Reader-groep |
|---|---|---|---|
| Foundry project | Azure AI User | Azure AI User | |
| Project storage account | Storage Blob Data Owner | Storage Blob Data Contributor | |
| AI Search service | Search Service Contributor, Search Index Data Contributor | Search Service Contributor, Search Index Data Contributor | Search Index Data Reader |
| Cosmos DB account | Cosmos DB Operator, plus de SQL-datarol op de collections van het project | Cosmos DB Operator, plus de SQL-datarol op de collections van het project |
De reader-groep krijgt in de module geen rol op het project zelf, alleen op de search index. Of dat genoeg is voor jouw gebruik van de reader-groep is een open punt: Bekende problemen.
Groepsinputs zijn feitelijk verplicht
De drie groepsinputs hebben standaard null, maar de roltoewijzingen in de module hebben geen voorwaarde. Als een groeps-ID niet
wordt meegegeven, mislukt het plan. Geef alle drie mee.
Rollen voor de projectidentiteit¶
Het project heeft een eigen user-assigned managed identity. Die krijgt de rollen die de agent service nodig heeft op de data stores:
| Resource | Rollen van de projectidentiteit |
|---|---|
| Storage account | Storage Blob Data Owner |
| AI Search | Search Service Contributor, Search Index Data Contributor |
| Cosmos DB account | Cosmos DB Operator, en de SQL-datarol op de vijf collections van het project in database enterprise_memory |
De SQL-rol die voor Cosmos DB wordt gebruikt is de ingebouwde rol met ID 00000000-0000-0000-0000-000000000002. De collectionrollen
worden toegewezen nadat de capability host bestaat, omdat de host de collections aanmaakt. De module wacht 60 seconden op
de andere roltoewijzingen voordat hij de capability host aanmaakt.
Rollen voor de workloadidentiteit¶
De module workload_identity maakt een user-assigned managed identity aan voor je applicatie en een lijst met roltoewijzingen,
elk met een scope en een role_definition_name. De README van de module geeft deze patronen:
| Behoefte | Rol |
|---|---|
| Bestanden in storage | Storage Blob Data Contributor (en Storage Queue Data Contributor voor queues) |
| Vector store | Search Index Data Contributor, Search Service Contributor |
| State in Cosmos DB | Cosmos DB Operator, DocumentDB Account Contributor |
| Secrets | Key Vault Secrets User |
| Container Apps-omgeving | Contributor |
Dit zijn voorbeelden uit de README van de module, geen vaste set. Geef de applicatie alleen de rollen die hij nodig heeft, op de kleinste
scope. Het repositoryoverzicht noemt de rol "Cognitive Services User" als voorbeeld voor het aanroepen van het account, maar de
module wijst die niet zelf toe: voeg hem toe aan role_assignments waar nodig.
Contributor op de omgeving
Het README-voorbeeld geeft de workloadidentiteit Contributor op de Container Apps-omgeving. Dat is breed. Beschouw het als voorbeeld en spreek met je platformteam af of je het nodig hebt.