Defining a custom role for a Subscription or a Management group that allows all actions will give them the same capabilities as the built-in Owner role.
This rule raises an issue when a custom role has an assignable scope set to a Subscription or a Management Group and allows all actions
(*).
To reduce the risk of intrusion of a compromised owner, it is recommended to limit the number of subscription owners.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "example",
"type": "Microsoft.Authorization/roleDefinitions",
"apiVersion": "2022-04-01",
"properties": {
"permissions": [
{
"actions": ["*"],
"notActions": []
}
],
"assignableScopes": [
"[subscription().id]"
]
}
}
]
}
targetScope = 'managementGroup'
resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = { // Sensitive
properties: {
permissions: [
{
actions: ['*']
notActions: []
}
]
assignableScopes: [
managementGroup().id
]
}
}
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "example",
"type": "Microsoft.Authorization/roleDefinitions",
"apiVersion": "2022-04-01",
"properties": {
"permissions": [
{
"actions": ["Microsoft.Compute/*"],
"notActions": []
}
],
"assignableScopes": [
"[subscription().id]"
]
}
}
]
}
targetScope = 'managementGroup'
resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
properties: {
permissions: [
{
actions: ['Microsoft.Compute/*']
notActions: []
}
]
assignableScopes: [
managementGroup().id
]
}
}
Here is a list of recommendations that can be followed regarding good usages of roles: