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