CA5375: Nepoužívejte sdílený přístupový podpis účtu

Vlastnost Hodnota
ID pravidla CA5375
Název Nepoužívat sdílený přístupový podpis účtu
Kategorie Zabezpečení
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 No

Příčina

Generování sdíleného přístupového podpisu účtu (SAS) pomocí GetSharedAccessSignature metody v Microsoft.WindowsAzure.Storage oboru názvů.

Popis pravidla

Sdílený přístupový podpis účtu může delegovat přístup k operacím čtení, zápisu a odstraňování v kontejnerech objektů blob, tabulkách, frontách a sdílených složkách, které nejsou povolené pomocí sdíleného přístupového podpisu služby. Nepodporuje ale zásady na úrovni kontejneru a má menší flexibilitu a kontrolu nad udělenými oprávněními. Pokud je to možné, použijte SAS služby k jemně odstupňovanému řízení přístupu. Další informace naleznete v tématu Delegování přístupu pomocí sdíleného přístupového podpisu.

Jak opravit porušení

Místo sdíleného přístupového podpisu účtu použijte SAS služby pro podrobné řízení přístupu a zásady přístupu na úrovni kontejneru.

Kdy potlačit upozornění

Pokud máte jistotu, že jsou oprávnění všech prostředků co nejvíce omezená, je bezpečné toto pravidlo potlačit.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

#pragma warning disable CA5375
// The code that's violating the rule is on this line.
#pragma warning restore CA5375

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

[*.{cs,vb}]
dotnet_diagnostic.CA5375.severity = none

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Příklady pseudokódu

Porušení

V současné době následující ukázka pseudokódu znázorňuje vzor zjištěný tímto pravidlem.

using System;
using Microsoft.WindowsAzure.Storage;

class ExampleClass
{
    public void ExampleMethod(SharedAccessAccountPolicy policy)
    {
        CloudStorageAccount cloudStorageAccount = new CloudStorageAccount();
        cloudStorageAccount.GetSharedAccessSignature(policy);
    }
}

Řešení

Místo SAS účtu použijte SAS služby.

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: Použití protokolu HttpsOnly SharedAccessProtocol

CA5377: Použití zásad přístupu na úrovni kontejneru