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?

0
user3364161 16 ene. 2018 a las 18:39

3 respuestas

La mejor respuesta

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.

4
4c74356b41 16 ene. 2018 a las 21:05

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)

0
4c74356b41 19 may. 2019 a las 20:05

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.

0
Manish 17 jul. 2019 a las 12:07