Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aprenda a acceder a servicios de Azure, como Azure Storage, desde una aplicación web que se ejecute en Azure App Service y no requiera un usuario que haya iniciado sesión, mediante el uso de identidades administradas. En este tutorial se muestra cómo conectarse a Azure Storage como ejemplo.
Se puede acceder de manera segura a cualquier servicio que admita identidades administradas (B en la imagen siguiente) mediante este tutorial:
- Azure Storage
- Azure SQL Database
- Azure Key Vault
Quiere agregar acceso seguro a los servicios de Azure, incluidos Azure Storage, Azure SQL Database y Azure Key Vault, desde la aplicación web. Podría usar una clave compartida, pero tendría que preocuparse de la seguridad operativa de quién puede crear, implementar y administrar el secreto. También es posible que la clave pudiera insertarse en GitHub, donde los hackers saben cómo buscar. Una manera más segura de dar acceso a los datos a la aplicación web es usar identidades administradas.
Una identidad administrada de Microsoft Entra ID permite a App Service acceder a los recursos a través del control de acceso basado en rol (RBAC), sin necesidad de credenciales de aplicación. Después de asignar una identidad administrada a la aplicación web, Azure se encarga de la creación y distribución de un certificado. Los usuarios no tienen que preocuparse de administrar secretos ni credenciales de aplicaciones.
En este tutorial, aprenderá a:
- Crear una identidad administrada asignada por el sistema en una aplicación web.
- Cree una cuenta de almacenamiento y un contenedor de Azure Blob Storage.
- Acceder a Storage desde una aplicación web mediante identidades administradas.
Si no tiene una cuenta de Azure, cree una cuenta free antes de comenzar.
Requisitos previos
Una aplicación web que se ejecuta en Azure App Service:
Habilitación de la identidad administrada en una aplicación
Si crea y publica la aplicación web a través de Visual Studio, la identidad administrada se ha habilitado en la aplicación automáticamente.
En el servicio de aplicaciones, en el menú de la izquierda, seleccione Identidad y, a continuación, seleccione Sistema asignado. Compruebe que el Estado está establecido en Activo.
Si no es así, seleccione Activado y, después, Guardar. Para habilitar la identidad administrada asignada por el sistema, en el cuadro de diálogo de confirmación, seleccione Sí. Una vez habilitada la identidad administrada, el estado se establece en Activo y el identificador del objeto está disponible.
Este paso crea un nuevo identificador de objeto, diferente del identificador de la aplicación que se creó en el panel Autenticación o autorización. Copie el identificador de objeto de la identidad administrada asignada por el sistema. Lo necesitará más adelante.
Creación de una cuenta de almacenamiento y un contenedor de Blob Storage
Ahora está listo para crear una cuenta de almacenamiento y un contenedor de Blob Storage.
Cada cuenta de almacenamiento debe pertenecer a un grupo de recursos Azure. Un grupo de recursos es un contenedor lógico para los servicios de Azure. Al crear una cuenta de almacenamiento, puede crear un nuevo grupo de recursos o usar un grupo de recursos existente. En este artículo se muestra cómo crear un nuevo grupo de recursos.
Una cuenta de almacenamiento de uso general v2 proporciona acceso a todos los servicios de Azure Storage: blobs, archivos, colas, tablas y discos. Los pasos indicados aquí crean una cuenta de almacenamiento de uso general v2, pero los pasos para crear cualquier otro tipo de cuenta de almacenamiento son similares.
Los blobs de Azure Storage se organizan en contenedores. Antes de poder cargar un blob más adelante en este tutorial, primero debe crear un contenedor.
Para crear una cuenta de almacenamiento de uso general v2 en el portal de Azure, siga estos pasos.
En el menú del portal de Azure, escriba Cuentas de almacenamiento. Cuando comience a escribir, la lista se filtrará en función de la entrada. Seleccione Cuentas de almacenamiento.
En la ventana Cuentas de almacenamiento que aparece, seleccione Crear.
Seleccione la suscripción en la que se va a crear la cuenta de almacenamiento.
En Grupo de recursos, seleccione el grupo de recursos que contiene la aplicación web.
Escriba un nombre para la cuenta de almacenamiento. El nombre que elija debe ser único en Azure. El nombre debe tener entre 3 y 24 caracteres de longitud y solo puede incluir números y letras minúsculas.
Seleccione una ubicación (región) para la cuenta de almacenamiento o utilice el valor predeterminado.
En Tipo de almacenamiento preferido, seleccione Azure Blob Storage o Azure Data Lake Storage Gen 2.
Deje estos campos con sus valores predeterminados:
Campo Importancia Rendimiento Estándar Redundancia Almacenamiento con redundancia geográfica Seleccione Revisar y crear para revisar la configuración de la cuenta de almacenamiento y crear la cuenta.
Seleccione Crear.
Para crear un contenedor de Blob Storage en Azure Storage, siga estos pasos.
Vaya a la nueva cuenta de almacenamiento en el portal de Azure.
En el menú izquierdo de la cuenta de almacenamiento, en Almacenamiento de datos, seleccione Contenedores.
Seleccione Agregar contenedor.
Escriba un nombre para el nuevo contenedor. El nombre del contenedor debe escribirse en minúsculas, comenzar por una letra o un número, y solo puede incluir letras, números y el carácter de guión (-).
Establezca el nivel de acceso público al contenedor. El nivel predeterminado es Private (no anonymous access) [Privado (sin acceso anónimo)].
Seleccione Aceptar para crear el contenedor.
Concesión de acceso a la cuenta de almacenamiento
Debe conceder a la aplicación web acceso a la cuenta de almacenamiento antes de poder crear, leer o eliminar blobs. En una sección anterior, configuró la aplicación web que se ejecuta en App Service con una identidad administrada. Con el control de acceso basado en roles de Azure puede conceder a la identidad administrada acceso a otro recurso, igual que cualquier entidad de seguridad.
El rol "Storage Blob Data Contributor" le da a la aplicación web, representada por la identidad administrada asignada por el sistema, acceso de lectura, escritura y eliminación tanto al contenedor de blobs como a los datos.
Nota:
RBAC de Azure no admite algunas operaciones en contenedores de blobs privados, como ver blobs o copiar blobs entre cuentas. Un contenedor de blobs con nivel de acceso privado requiere un token de SAS para cualquier operación que Azure RBAC no autorice. Para obtener más información, consulte Cuándo usar una firma de acceso compartido.
- En el portal de Azure, acceda a su cuenta de almacenamiento para otorgar acceso a su aplicación web.
- En el menú izquierdo, seleccione Control de acceso (IAM) y, a continuación, seleccione Asignaciones de roles. Verá una lista de quién tiene acceso a la cuenta de almacenamiento.
- Quiere agregar una asignación de roles al servicio de aplicaciones que necesita acceso a la cuenta de almacenamiento. Seleccione Agregar>Agregar asignación de roles para abrir la página Agregar asignación de roles.
- Asigne el rol Colaborador de datos de Storage Blob a App Service en el ámbito de la cuenta de almacenamiento. Para más información, consulte Asignación de roles de Azure mediante Azure Portal.
Ahora, la aplicación web ya tiene acceso a la cuenta de almacenamiento.
Acceso a Blob Storage
La clase DefaultAzureCredential se usa para obtener una credencial de token para que el código autorice las solicitudes a Azure Storage. Cree una instancia de la clase DefaultAzureCredential, que usa la identidad administrada para capturar los tokens y asociarlos al cliente del servicio. En el ejemplo de código siguiente se obtiene la credencial de token autenticada y se usa para crear un objeto de cliente del servicio que, luego, carga un nuevo blob.
Para ver este código como parte de una aplicación de ejemplo, consulte sample en GitHub.
Instalación de los paquetes de biblioteca cliente
Instale el paquete NuGet de Blob Storage para que funcione con este servicio y la biblioteca cliente de Azure Identity del paquete NuGet de .NET para autenticarse con las credenciales de Microsoft Entra. Instale las bibliotecas cliente mediante la interfaz de línea de comandos de .NET Core o la consola de Package Manager en Visual Studio.
línea de comandos de .NET Core
Abra una línea de comandos y cambie al directorio que contiene el archivo del proyecto.
Ejecute los comandos de instalación.
dotnet add package Azure.Storage.Blobs dotnet add package Azure.Identity
Consola del Administrador de Paquetes
Abra el proyecto o la solución en Visual Studio y abra la consola mediante el comando Tools>NuGet Package Manager>Package Manager Console.
Ejecute los comandos de instalación.
Install-Package Azure.Storage.Blobs Install-Package Azure.Identity
ejemplo de .NET
using System;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using System.IO;
using Azure.Identity;
// Some code omitted for brevity.
static public async Task UploadBlob(string accountName, string containerName, string blobName, string blobContents)
{
// Construct the blob container endpoint from the arguments.
string containerEndpoint = string.Format("https://{0}.blob.core.windows.net/{1}",
accountName,
containerName);
// Get a credential and create a client object for the blob container.
BlobContainerClient containerClient = new BlobContainerClient(new Uri(containerEndpoint),
new DefaultAzureCredential());
try
{
// Create the container if it doesn't exist.
await containerClient.CreateIfNotExistsAsync();
// Upload text to a new block blob.
byte[] byteArray = Encoding.ASCII.GetBytes(blobContents);
using (MemoryStream stream = new MemoryStream(byteArray))
{
await containerClient.UploadBlobAsync(blobName, stream);
}
}
catch (Exception e)
{
throw e;
}
}
Limpieza de recursos
Si finaliza este tutorial y ya no necesita la aplicación web o los recursos asociados, limpie los recursos que ha creado.
Eliminar el grupo de recursos
En el portal de Azure, seleccione Grupos de recursos en el menú del portal de Azure y seleccione el grupo de recursos que contiene su servicio de aplicación y su plan de servicio de aplicación.
Seleccione Eliminar grupo de recursos para eliminar el grupo de recursos y todos los recursos.
Escriba el nombre del grupo de recursos para confirmarlo.
Este proceso puede tardar varios minutos en ejecutarse.
Pasos siguientes
En este tutorial ha aprendido a:
- Crear una identidad administrada asignada por el sistema.
- Cree una cuenta de almacenamiento y un contenedor de Blob Storage.
- Acceder a Storage desde una aplicación web mediante identidades administradas.