Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| 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);
}
}