Descubrimiento de firmas de acceso compartido
Una firma de acceso compartido (SAS) es un URI firmado que apunta a uno o varios recursos de almacenamiento e incluye un token que contiene un conjunto especial de parámetros de consulta. El token indica cómo puede el cliente tener acceso a los recursos. Uno de los parámetros de consulta, la firma, se construye a partir de parámetros SAS y se firma con la clave que se usó para crear la SAS. Azure Storage utiliza esta firma para autorizar el acceso al recurso de almacenamiento.
Tipos de firmas de acceso compartido
Azure Storage admite tres tipos de firmas de acceso compartido:
SAS de delegación de usuarios: Una SAS de delegación de usuarios se protege con las credenciales de Microsoft Entra y también por los permisos especificados para la SAS. Una SAS de delegación de usuarios solo se aplica a Blob Storage.
SAS de servicio: una SAS de servicio se protege con la clave de cuenta de almacenamiento. Una SAS de servicio delega el acceso a un recurso en los siguientes servicios de Azure Storage: Blob Storage, Queue Storage, Table Storage o Azure Files.
SAS de cuenta: una SAS de cuenta se protege con la clave de cuenta de almacenamiento. SAS de cuenta delega el acceso a los recursos en uno o varios de los servicios de almacenamiento. Todas las operaciones disponibles con una SAS de servicio o delegación de usuarios están también disponibles con una SAS de cuenta.
Nota:
Microsoft recomienda usar las credenciales de Microsoft Entra cuando sea posible como procedimiento recomendado de seguridad, en lugar de usar la clave de cuenta, que se puede poner en peligro más fácilmente. Cuando el diseño de la aplicación requiera firmas de acceso compartido para el acceso a Blob Storage, utilice las credenciales de Microsoft Entra para crear una SAS de delegación de usuarios cuando sea posible para una seguridad superior
Funcionamiento de las firmas de acceso compartido
Cuando se usa una SAS para acceder a los datos almacenados en Azure Storage, se necesitan dos componentes. El primero es un identificador URI del recurso al que se quiere acceder. El segundo elemento es un token de SAS que ha creado para autorizar el acceso a ese recurso.
En un URI único como https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg?sp=r&st=2020-01-20T11:42:32Z&se=2020-01-20T19:42:32Z&spr=https&sv=2019-02-02&sr=b&sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D
, puede distinguir el URI del token de SAS de la manera siguiente:
- URI:
https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg?
- Token de SAS:
sp=r&st=2020-01-20T11:42:32Z&se=2020-01-20T19:42:32Z&spr=https&sv=2019-02-02&sr=b&sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D
El propio token SAS consta de varios componentes.
Componente | Descripción |
---|---|
sp=r |
Controla los derechos de acceso. Los valores pueden ser a para agregar, c para crear, d para eliminar, l para enumerar, r para leer o w para escribir. Este ejemplo es de solo lectura. En el ejemplo, sp=acdlrw concede todos los derechos disponibles. |
st=2020-01-20T11:42:32Z |
La fecha y hora de inicio del acceso. |
se=2020-01-20T19:42:32Z |
La fecha y hora de finalización del acceso. En este ejemplo se conceden ocho horas de acceso. |
sv=2019-02-02 |
Versión de la API de almacenamiento que se va a usar. |
sr=b |
Tipo de almacenamiento al que se accede. En este ejemplo, "b" es para blob. |
sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D |
La firma criptográfica. |
Procedimientos recomendados
Para reducir los posibles riesgos del uso de una SAS, Microsoft proporciona varias instrucciones:
- Para distribuir de forma segura una SAS y evitar ataques de tipo "Man in the Middle", use siempre HTTPS.
- La SAS más segura es una SAS de delegación de usuarios. Úsela siempre que sea posible, ya que elimina la necesidad de almacenar la clave de la cuenta de almacenamiento en el código. Debe usar Microsoft Entra ID para administrar las credenciales. Es posible que esta opción no se pueda usar en la solución.
- Intente establecer la hora de expiración en el valor más pequeño que sea útil. Si una clave de SAS se pone en peligro, solo se podrá aprovechar durante un breve período de tiempo.
- Aplique la regla de privilegios mínimos necesarios. Conceda solo el acceso necesario. Por ejemplo, en la aplicación, el acceso de solo lectura es suficiente.
- Hay algunas situaciones en las que una SAS no es la solución correcta. Cuando el uso de una SAS suponga un riesgo inaceptable, cree un servicio de nivel intermedio para administrar los usuarios y su acceso al almacenamiento.