Delen via


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);
    }
}

CA5376: SharedAccessProtocol httpsonly gebruiken

CA5377: Toegangsbeleid op containerniveau gebruiken