Creación de una SAS de cuenta con .NET
Una firma de acceso compartido (SAS) le permite conceder acceso limitado a los contenedores y blobs de la cuenta de almacenamiento. Cuando crea una SAS, especifica sus restricciones, incluidos los recursos de Azure Storage a los que puede acceder un cliente, los permisos que tiene en esos recursos y el tiempo durante el cual la SAS es válida.
Cada SAS se firma con una clave. Puede firmar una SAS de dos maneras:
- Con una clave creada con las credenciales de Microsoft Entra. Una SAS firmada con credenciales de Microsoft Entra es una SAS de delegación de usuario. Un cliente que cree una SAS de delegación de usuarios debe tener asignado un rol RBAC de Azure que incluya la acción Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Para obtener más información, vea Creación de una SAS de delegación de usuarios.
- Con la clave de la cuenta de almacenamiento. Tanto una SAS de servicio como una SAS de cuenta se firman con la clave de la cuenta de almacenamiento. El cliente que cree una SAS de servicio debe tener acceso directo a la clave de cuenta o asignársele el permiso Microsoft.Storage/storageAccounts/listkeys/action. Para obtener más información, vea Creación de una SAS de servicio o Creación de una SAS de cuenta.
Nota
Una SAS de delegación de usuario ofrece seguridad superior para una SAS firmada con la clave de la cuenta de almacenamiento. Microsoft recomienda el uso de una SAS de delegación de usuario siempre que sea posible. Para más información, consulte Concesión de acceso limitado a datos con firmas de acceso compartido (SAS).
En este artículo se muestra cómo usar la clave de cuenta de almacenamiento para crear una SAS de cuenta con la biblioteca cliente de Azure Storage para .NET.
Acerca de la SAS de la cuenta
Se crea una SAS de cuenta en el nivel de la cuenta de almacenamiento. Mediante la creación de una SAS de cuenta, puede hacer lo siguiente:
- Delegar el acceso a operaciones de nivel de servicio que no están disponibles actualmente con una SAS específica del servicio, como Obtención de propiedades de Blob service, Establecimiento de propiedades de Blob service y Obtención de estadísticas de Blob service.
- Delegar el acceso a más de un servicio en una cuenta de almacenamiento a la vez. Por ejemplo, puede delegar el acceso a los recursos de Azure Blob Storage y Azure Files mediante una SAS de cuenta.
Las directivas de acceso almacenadas no son compatibles para una SAS de cuenta.
Creación de una SAS de cuenta
Se firma una SAS de una cuenta con la clave de acceso de la cuenta. Use la clase StorageSharedKeyCredential para crear la credencial que se usa para firmar la SAS.
En el siguiente ejemplo de código se muestra cómo crear un nuevo objeto AccountSasBuilder y llamar al método ToSasQueryParameters para obtener la cadena de token de SAS de la cuenta.
public static async Task<string> CreateAccountSAS(StorageSharedKeyCredential sharedKey)
{
// Create a SAS token that's valid for one day
AccountSasBuilder sasBuilder = new AccountSasBuilder()
{
Services = AccountSasServices.Blobs | AccountSasServices.Queues,
ResourceTypes = AccountSasResourceTypes.Service,
ExpiresOn = DateTimeOffset.UtcNow.AddDays(1),
Protocol = SasProtocol.Https
};
sasBuilder.SetPermissions(AccountSasPermissions.Read |
AccountSasPermissions.Write);
// Use the key to get the SAS token
string sasToken = sasBuilder.ToSasQueryParameters(sharedKey).ToString();
return sasToken;
}
Uso de una SAS de cuenta desde un cliente
Para usar la cuenta SAS con el fin de acceder a las API de nivel de servicio Blob, construya un objeto de BlobServiceClient con la cuenta SAS y el punto de conexión de Blob Storage para la cuenta de almacenamiento.
string accountName = "<storage-account-name>";
string accountKey = "<storage-account-key>";
StorageSharedKeyCredential storageSharedKeyCredential =
new(accountName, accountKey);
// Create a BlobServiceClient object with the account SAS appended
string blobServiceURI = $"https://{accountName}.blob.core.windows.net";
string sasToken = await CreateAccountSAS(storageSharedKeyCredential);
BlobServiceClient blobServiceClientAccountSAS = new BlobServiceClient(
new Uri($"{blobServiceURI}?{sasToken}"));
Recursos
Para más información sobre cómo crear una SAS de cuenta con la biblioteca cliente de Azure Blob Storage para .NET, consulte los siguientes recursos.
Recursos de la biblioteca cliente
- Documentación de referencia de la biblioteca cliente
- Código fuente de la biblioteca del cliente
- Paquete (NuGet)
Consulte también
- Grant limited access to Azure Storage resources using shared access signatures (SAS) (Otorgar acceso limitado a recursos de Azure Storage con firmas de acceso compartido [SAS])
- Creación de una SAS de cuenta
- Para obtener ejemplos de código relacionados con los SDK de .NET versión 11.x en desuso, consulte Ejemplos de código con la versión 11.x de .NET.