Identifiera signaturer för delad åtkomst
En signatur för delad åtkomst (SAS) är en signerad URI som pekar på en eller flera lagringsresurser och innehåller en token som innehåller en särskild uppsättning frågeparametrar. Token anger hur resurserna kan nås av klienten. En av frågeparametrarna, signaturen, konstrueras från SAS-parametrarna och signeras med nyckeln som användes för att skapa SAS. Den här signaturen används av Azure Storage för att auktorisera åtkomst till lagringsresursen.
Typer av signaturer för delad åtkomst
Azure Storage har stöd för tre typer av signaturer för delad åtkomst:
SAS för användardelegering: En sas för användardelegering skyddas med Microsoft Entra-autentiseringsuppgifter och även av de behörigheter som angetts för SAS. En SAS för användardelegering gäller endast för Blob Storage och Data Lake Storage.
Tjänst-SAS: En tjänst-SAS skyddas med lagringskontonyckeln. En tjänst-SAS delegerar åtkomst till en resurs i följande Azure Storage-tjänster: Blob Storage, Queue Storage, Table Storage eller Azure Files.
Konto-SAS: Ett SAS-konto skyddas med lagringskontonyckeln. En konto-SAS delegerar åtkomst till resurser i en eller flera av lagringstjänsterna. Alla åtgärder som är tillgängliga via en tjänst eller sas för användardelegering är också tillgängliga via ett konto-SAS.
Kommentar
Microsoft rekommenderar att du använder Microsoft Entra-autentiseringsuppgifter när det är möjligt som bästa praxis för säkerhet, i stället för att använda kontonyckeln, som är enklare att kompromettera. När programdesignen kräver signaturer för delad åtkomst för åtkomst till Blob Storage använder du Microsoft Entra-autentiseringsuppgifter för att skapa en SAS för användardelegering när det är möjligt för överlägsen säkerhet
Så här fungerar signaturer för delad åtkomst
När du använder en SAS för att komma åt data som lagras i Azure Storage behöver du två komponenter. Den första är en URI till den resurs som du vill komma åt. Den andra delen är en SAS-token som du har skapat för att auktorisera åtkomst till den resursen.
I en enskild URI såsom 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 kan du dela upp URI:n från SAS-token på följande sätt:
-
URI:
https://medicalrecords.blob.core.windows.net/patient-images/patient-116139-nq8z7f.jpg? -
SAS-token:
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
Själva SAS-token består av flera komponenter.
| Komponent | beskrivning |
|---|---|
sp=r |
Styr åtkomstbehörigheten. Värdena kan vara a för att lägga till, c skapa, d ta bort, l för lista, r läsa eller w skriva. Det här exemplet är skrivskyddat.
sp=acdlrw Exemplet ger alla tillgängliga rättigheter. |
st=2020-01-20T11:42:32Z |
Datumet och tiden då åtkomsten börjar. |
se=2020-01-20T19:42:32Z |
Datumet och tiden då åtkomsten slutar. I det här exemplet beviljas åtta timmars åtkomst. |
sv=2019-02-02 |
Den version av lagrings-API:et som ska användas. |
sr=b |
Den typ av lagring som används. I det här exemplet står b för blob. |
sig=SrW1HZ5Nb6MbRzTbXCaPm%2BJiSEn15tC91Y4umMPwVZs%3D |
Den kryptografiska signaturen. |
Bästa praxis
För att minska de potentiella riskerna med att använda en SAS har Microsoft tagit fram ett antal riktlinjer:
- För att säkert distribuera en SAS och förhindra man-i-mitten-attacker ska du alltid använda HTTPS.
- Den säkraste SAS är en SAS för användardelegering. Använd en sådan när det är möjligt, eftersom du då inte behöver lagra lagringskontonyckeln i koden. Du måste använda Microsoft Entra-ID för att hantera autentiseringsuppgifter. Det här alternativet är kanske inte möjligt för din lösning.
- Försök ange din förfallotid till det minsta användbara värdet. Om en SAS-nyckel blir komprometterad kan den bara utnyttjas under en kort tid.
- Tillämpa regeln om minsta nödvändiga privilegier. Bevilja endast den åtkomst som krävs. I din app räcker det exempelvis med skrivskyddad åtkomst.
- Det finns några situationer där en SAS inte är rätt lösning. Om risken med att använda en SAS är för stor skapar du en tjänst på mellannivå för att hantera användare och deras åtkomst till lagring.