azureblog.co.uk
← cd ~/roles
// roles/azure · ai-machine-learning

Azure AI DeveloperAzure built-in role

Can perform all actions within an Azure Machine Learning workspace besides managing the workspace itself. For Foundry project access, use the Foundry User or Foundry Owner roles instead.

Role ID64702f94-c441-49e6-a78b-ef80e0188fee
CategoryAi-machine-learning
Actions7 (minus 10 NotActions)
Data actions4

Before you assign it

  • It reaches the data, not just the resource. It has 4 data actions, such as reading blobs, secrets or messages.

What it can do

PermissionWhat it allows
Microsoft.MachineLearningServices/workspaces/*/readAny read operation on anything under Microsoft.MachineLearningServices/workspaces
Microsoft.MachineLearningServices/workspaces/*/actionAny action on anything under Microsoft.MachineLearningServices/workspaces
Microsoft.MachineLearningServices/workspaces/*/deleteAny delete operation on anything under Microsoft.MachineLearningServices/workspaces
Microsoft.MachineLearningServices/workspaces/*/writeAny write operation on anything under Microsoft.MachineLearningServices/workspaces
Microsoft.MachineLearningServices/locations/*/readAny read operation on anything under Microsoft.MachineLearningServices/locations
Microsoft.Authorization/*/readAny read operation on anything under Microsoft.Authorization
Microsoft.Resources/deployments/*Every operation under Microsoft.Resources/deployments

Can't do

These are taken away from the actions above.

PermissionWhat it allows
Microsoft.MachineLearningServices/workspaces/deleteDeletes the Machine Learning Services Workspace(s)
Microsoft.MachineLearningServices/workspaces/writeCreates or updates a Machine Learning Services Workspace(s)
Microsoft.MachineLearningServices/workspaces/listKeys/actionList secrets for a Machine Learning Services Workspace
Microsoft.MachineLearningServices/workspaces/hubs/writeCreates or updates a Machine Learning Services Hub Workspace(s)
Microsoft.MachineLearningServices/workspaces/hubs/deleteDeletes the Machine Learning Services Hub Workspace(s)
Microsoft.MachineLearningServices/workspaces/featurestores/writeCreates or Updates the Machine Learning Services FeatureStore(s)
Microsoft.MachineLearningServices/workspaces/featurestores/deleteDeletes the Machine Learning Services FeatureStore(s)
Microsoft.MachineLearningServices/workspaces/evaluations/results/labels/readReads evaluation results' label from a Machine Learning Services Workspace
Microsoft.MachineLearningServices/workspaces/evaluations/results/reasonings/readReads evaluation results' reasoning from a Machine Learning Services Workspace
Microsoft.MachineLearningServices/workspaces/simulations/results/images/readReads image simulation results from a Machine Learning Services Workspace

Data actions

PermissionWhat it allows
Microsoft.CognitiveServices/accounts/OpenAI/*Every operation under Microsoft.CognitiveServices/accounts/OpenAI
Microsoft.CognitiveServices/accounts/SpeechServices/*Every operation under Microsoft.CognitiveServices/accounts/SpeechServices
Microsoft.CognitiveServices/accounts/ContentSafety/*Every operation under Microsoft.CognitiveServices/accounts/ContentSafety
Microsoft.CognitiveServices/accounts/MaaS/*Every operation under Microsoft.CognitiveServices/accounts/MaaS

Assign it

Scope it as tightly as you can: a resource or resource group rather than the whole subscription.

azure cli
az role assignment create \
  --assignee "jane.doe@contoso.com" \
  --role "Azure AI Developer" \
  --scope "/subscriptions/<subscription id>/resourceGroups/<resource group>"
powershell3 lines
New-AzRoleAssignment -SignInName "jane.doe@contoso.com" `
  -RoleDefinitionName "Azure AI Developer" `
  -Scope "/subscriptions/<subscription id>/resourceGroups/<resource group>"
bicep7 lines
resource assignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(resourceGroup().id, principalId, '64702f94-c441-49e6-a78b-ef80e0188fee')
  properties: {
    roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '64702f94-c441-49e6-a78b-ef80e0188fee')
    principalId: principalId
  }
}

Who already has it?

kql · azure resource graph
authorizationresources
| where type == "microsoft.authorization/roleassignments"
| where tostring(properties.roleDefinitionId) endswith "64702f94-c441-49e6-a78b-ef80e0188fee"
| project principalId = tostring(properties.principalId), principalType = tostring(properties.principalType), scope = tostring(properties.scope)

Other ai-machine-learning roles

Find the smallest role for a task →