CA5375: Gedeelde toegangshandtekening voor accounts niet gebruiken
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA5375 |
Titel | Gedeelde toegangshandtekening voor accounts niet gebruiken |
Categorie | Beveiliging |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Nee |
Oorzaak
Het genereren van een account Shared Access Signature (SAS) met de GetSharedAccessSignature
methode onder de Microsoft.WindowsAzure.Storage
naamruimte.
Beschrijving van regel
Een account-SAS kan de toegang tot lees-, schrijf- en verwijderbewerkingen delegeren voor blobcontainers, tabellen, wachtrijen en bestandsshares die niet zijn toegestaan met een service-SAS. Het biedt echter geen ondersteuning voor beleid op containerniveau en heeft minder flexibiliteit en controle over de machtigingen die worden verleend. Gebruik indien mogelijk een service-SAS voor fijnmazig toegangsbeheer. Zie Toegang delegeren met een handtekening voor gedeelde toegang voor meer informatie.
Schendingen oplossen
Gebruik een service-SAS in plaats van een account-SAS voor fijnmazige toegangsbeheer en toegangsbeleid op containerniveau.
Wanneer waarschuwingen onderdrukken
Het is veilig om deze regel te onderdrukken als u zeker weet dat de machtigingen van alle resources zo beperkt mogelijk zijn.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA5375
// The code that's violating the rule is on this line.
#pragma warning restore CA5375
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA5375.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.
Voorbeelden van pseudocode
Schending
Op dit moment illustreert het volgende pseudocodevoorbeeld het patroon dat door deze regel is gedetecteerd.
using System;
using Microsoft.WindowsAzure.Storage;
class ExampleClass
{
public void ExampleMethod(SharedAccessAccountPolicy policy)
{
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount();
cloudStorageAccount.GetSharedAccessSignature(policy);
}
}
Oplossing
Gebruik service-SAS in plaats van account-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);
}
}