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 powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Nie. |
Przyczyna
Generowanie sygnatury dostępu współdzielonego konta za pomocą GetSharedAccessSignature
metody w Microsoft.WindowsAzure.Storage
przestrzeni nazw.
Opis reguły
Sygnatura dostępu współdzielonego konta może delegować dostęp do operacji odczytu, zapisu i usuwania w kontenerach obiektów blob, tabelach, kolejkach i udziałach plików, które nie są dozwolone przy użyciu sygnatury 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 sygnatury dostępu współdzielonego usługi do szczegółowej kontroli dostępu. Aby uzyskać więcej informacji, zobacz Delegowanie dostępu za pomocą sygnatury dostępu współdzielonego.
Jak naprawić naruszenia
Użyj sygnatury dostępu współdzielonego usługi zamiast sygnatury dostępu współdzielonego konta w celu uzyskania szczegółowej kontroli dostępu i zasad 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 przykładów kodu przykładowego
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 sygnatury dostępu współdzielonego konta użyj sygnatury dostępu współdzielonego 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);
}
}