CA5375: Använd inte signatur för delad åtkomst för kontot
Property | Värde |
---|---|
Regel-ID | CA5375 |
Title | Använd inte signatur för delad åtkomst för kontot |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
Genererar en kontosignatur för delad åtkomst (SAS) med GetSharedAccessSignature
metoden under Microsoft.WindowsAzure.Storage
namnområdet.
Regelbeskrivning
Ett KONTO-SAS kan delegera åtkomst till läs-, skriv- och borttagningsåtgärder på blobcontainrar, tabeller, köer och filresurser som inte tillåts med en tjänst-SAS. Den stöder dock inte principer på containernivå och har mindre flexibilitet och kontroll över de behörigheter som beviljas. Använd om möjligt en tjänst-SAS för detaljerad åtkomstkontroll. Mer information finns i Delegera åtkomst med en signatur för delad åtkomst.
Så här åtgärdar du överträdelser
Använd en tjänst-SAS i stället för ett konto-SAS för detaljerad åtkomstkontroll och åtkomstprincip på containernivå.
När du ska ignorera varningar
Det är säkert att ignorera den här regeln om du är säker på att behörigheterna för alla resurser är så begränsade som möjligt.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA5375
// The code that's violating the rule is on this line.
#pragma warning restore CA5375
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA5375.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.
Exempel på pseudokod
Kränkning
För närvarande illustrerar följande pseudokodexempel det mönster som identifierats av den här regeln.
using System;
using Microsoft.WindowsAzure.Storage;
class ExampleClass
{
public void ExampleMethod(SharedAccessAccountPolicy policy)
{
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount();
cloudStorageAccount.GetSharedAccessSignature(policy);
}
}
Lösning
I stället för konto-SAS använder du tjänsten SAS.
using System;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.File;
class ExampleClass
{
public void ExampleMethod(StorageCredentials storageCredentials, SharedAccessFilePolicy policy, SharedAccessFileHeaders headers, string groupPolicyIdentifier, IPAddressOrRange ipAddressOrRange)
{
CloudFile cloudFile = new CloudFile(storageCredentials);
SharedAccessProtocol protocols = SharedAccessProtocol.HttpsOnly;
cloudFile.GetSharedAccessSignature(policy, headers, groupPolicyIdentifier, protocols, ipAddressOrRange);
}
}