Share via


CA5375: Använd inte signatur för delad åtkomst för kontot

Property Värde
Regel-ID CA5375
Rubrik 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 8 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);
    }
}

CA5376: Använd SharedAccessProtocol HttpsOnly

CA5377: Använd åtkomstprincip på containernivå