Udostępnij za pośrednictwem


CA5375: Nie używaj sygnatury dostępu współdzielonego konta

Właściwości Wartość
Identyfikator reguły CA5375
Tytuł Nie używaj sygnatury dostępu współdzielonego konta
Kategoria Bezpieczeństwo
Poprawka łamiąca lub nienaruszająca Niezgodność
Domyślnie włączone na platformie .NET 10 Nie.
Zastosowane języki C# i Visual Basic

Przyczyna

Generowanie sygnatury dostępu współdzielonego konta (SAS) metodą GetSharedAccessSignature w ramach przestrzeni nazw Microsoft.WindowsAzure.Storage.

Opis reguły

Sygnatura dostępu współdzielonego konta (Account SAS) może delegować dostęp w operacjach odczytu, zapisu i usuwania w kontenerach obiektów blob, tabelach, kolejkach i udziałach plików, które nie są dozwolone przez sygnaturę dostępu współdzielonego usługi. Nie obsługuje jednak zasad na poziomie kontenera i ma mniejszą elastyczność i kontrolę nad przyznanymi uprawnieniami. Jeśli to możliwe, użyj SAS usługi do kontroli szczegółowego dostępu. Aby uzyskać więcej informacji, zobacz Delegowanie dostępu za pomocą współdzielonej sygnatury dostępu.

Jak naprawić naruszenia

Użyj usługi SAS zamiast konta SAS, aby uzyskać szczegółową kontrolę dostępu i politykę dostępu na poziomie kontenera.

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć tę regułę, jeśli masz pewność, że uprawnienia wszystkich zasobów są tak ograniczone, jak to możliwe.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Przykłady pseudokodu

Naruszenie

Obecnie poniższy przykład pseudo-kodu ilustruje wzorzec wykryty przez tę regułę.

using System;
using Microsoft.WindowsAzure.Storage;

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

Rozwiązanie

Zamiast SAS konta, użyj SAS usługi.

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: Użyj funkcji SharedAccessProtocol HttpsOnly

CA5377: Użyj zasad dostępu na poziomie kontenera