Concesión de acceso a recursos de Azure para la identidad administrada de una aplicación de Service Fabric

Para que la aplicación pueda usar su identidad administrada a fin de acceder a otros recursos, es necesario conceder permisos a dicha identidad en el recurso de Azure protegido al que se va a acceder. La concesión de permisos suele ser una acción de administración en el "plano de control" del servicio de Azure propietario del recurso protegido enrutado a través de Azure Resource Manager, que aplicará cualquier comprobación aplicable de acceso basado en roles.

La secuencia exacta de pasos dependerá del tipo de recurso de Azure al que se acceda, así como del lenguaje o del cliente que se use para conceder permisos. En el resto del artículo se da por hecho que se ha asignado a la aplicación una identidad asignada por el usuario y se incluyen varios ejemplos típicos para mayor comodidad, pero esto no constituye una referencia exhaustiva sobre el tema. Consulte la documentación de los servicios de Azure correspondientes para obtener instrucciones actualizadas sobre la concesión de permisos.

Concesión de acceso a Azure Storage

Puede usar la identidad administrada de la aplicación de Service Fabric (en este caso, asignada por el usuario) para recuperar los datos de un blob de Azure Storage. Conceda a la identidad los permisos necesarios para la cuenta de almacenamiento mediante la asignación del rol de Lector de datos de Storage Blob a la identidad administrada de la aplicación en el ámbito resource-group.

Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.

Concesión de acceso a Azure Key Vault

De forma similar al proceso para acceder al almacenamiento, puede aprovechar la identidad administrada de una aplicación de Service Fabric para acceder a una instancia de Azure Key Vault. Los pasos para conceder acceso en Azure Portal son semejantes a los indicados anteriormente y no se repetirán aquí. Consulte la imagen siguiente para ver las diferencias.

Key Vault access policy

En el ejemplo siguiente se muestra cómo conceder acceso a un almacén mediante la implementación de una plantilla; agregue el los fragmentos de código siguientes como otra entrada debajo del elemento resources de la plantilla. En el ejemplo se muestra cómo conceder acceso tanto a los tipos de identidad asignados por el usuario como a los asignados por el sistema, respectivamente (elija el que corresponda).

    # under 'variables':
  "variables": {
        "userAssignedIdentityResourceId" : "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]",
    }
    # under 'resources':
    {
        "type": "Microsoft.KeyVault/vaults/accessPolicies",
        "name": "[concat(parameters('keyVaultName'), '/add')]",
        "apiVersion": "2018-02-14",
        "properties": {
            "accessPolicies": [
                {
                    "tenantId": "[reference(variables('userAssignedIdentityResourceId'), '2018-11-30').tenantId]",
                    "objectId": "[reference(variables('userAssignedIdentityResourceId'), '2018-11-30').principalId]",
                    "dependsOn": [
                        "[variables('userAssignedIdentityResourceId')]"
                    ],
                    "permissions": {
                        "keys":         ["get", "list"],
                        "secrets":      ["get", "list"],
                        "certificates": ["get", "list"]
                    }
                }
            ]
        }
    },

Y para las identidades administradas asignadas por el usuario:

    # under 'variables':
  "variables": {
        "sfAppSystemAssignedIdentityResourceId": "[concat(resourceId('Microsoft.ServiceFabric/clusters/applications/', parameters('clusterName'), parameters('applicationName')), '/providers/Microsoft.ManagedIdentity/Identities/default')]"
    }
    # under 'resources':
    {
        "type": "Microsoft.KeyVault/vaults/accessPolicies",
        "name": "[concat(parameters('keyVaultName'), '/add')]",
        "apiVersion": "2018-02-14",
        "properties": {
            "accessPolicies": [
            {
                    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
                    "tenantId": "[reference(variables('sfAppSystemAssignedIdentityResourceId'), '2018-11-30').tenantId]",
                    "objectId": "[reference(variables('sfAppSystemAssignedIdentityResourceId'), '2018-11-30').principalId]",
                    "dependsOn": [
                        "[variables('sfAppSystemAssignedIdentityResourceId')]"
                    ],
                    "permissions": {
                        "secrets": [
                            "get",
                            "list"
                        ],
                        "certificates": 
                        [
                            "get", 
                            "list"
                        ]
                    }
            },
        ]
        }
    }

Para obtener más información, consulte Almacenes: actualización de la directiva de acceso.

Pasos siguientes