En Azure, si quiero dar acceso de lectura para un grupo de recursos a través de RBAC, ¿puedo hacerlo a través de una plantilla ARM? Sé que es posible a través de un paso de compilación VSTS o un script PS, pero ¿hay alguna forma de otorgar permisos a través de plantillas ARM?
3 respuestas
No, esto no es posible debido a que la llamada REST para aplicar permisos es algo como esto:
/subscriptions/xxx/providers/Microsoft.Authorization/roleDefinitions/xxx
Aún no puede replicar llamadas de descanso de "nivel" de suscripción con una plantilla ARM.
Welp, contrario a todo lo que sé, esto funciona:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"name": "8446a13c-6886-46e2-a17f-9df73adb334e",
"apiVersion": "2017-10-01-preview",
"location": "[resourceGroup().location]",
"properties": {
"roleDefinitionId": "[concat(subscription().Id, '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"principalId": "user_guid_goes_here",
"scope": "[resourceGroup().Id]"
}
}
]
}
Esto asigna un rol de contribuyente al usuario con el guid proporcionado (principalId) al grupo de recursos donde implementa la plantilla. para asignar otro rol, obtenga su guid y reemplace el contribuyente guid (b24988ac-6180-42a0-ab88-20f7382dd24c - guid bien conocido). También puede asignar permisos a recursos específicos. Use scope
para hacer eso (cámbielo a resourceId). Name
tiene que ser un nuevo guid.
No tengo idea de por qué funciona, me pondré en contacto con usted cuando descubra por qué funciona.
Podemos asignar el permiso al grupo de recursos y sus recursos.
{
"type": "Microsoft.Authorization/roleAssignments",
"name": "[variables('roleName')]",
"apiVersion": "[variables('authAPIVersion')]",
"properties": {
"roleDefinitionId": "[concat(subscription().id, '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"principalId": "[parameters('principalId')]",
"scope": "[concat(subscription().id, '/resourceGroups/',resourceGroup().name)]"
}
}
Vaya a este enlace para obtener más detalles: Basado en roles Control de acceso (RBAC)
Una cosa importante, no podemos aplicar permisos en Nivel de suscripción usando la plantilla ARM. Podemos solo aplicar permisos en el grupo de recursos y sus recursos.
Nuevas preguntas
azure
Microsoft Azure es una plataforma como servicio e infraestructura como plataforma de computación en la nube. Utilice esta etiqueta para preguntas de programación relacionadas con Azure. La ayuda general del servidor se puede obtener en Super User o Server Fault.