CA5375: Shared Access Signature des Kontos nicht verwenden.
Eigenschaft | Wert |
---|---|
Regel-ID | CA5375 |
Titel | Shared Access Signature des Kontos nicht verwenden. |
Kategorie | Security |
Fix führt oder führt nicht zur Unterbrechung | Nicht unterbrechend |
Standardmäßig in .NET 9 aktiviert | No |
Ursache
Erstellen einer Shared Access Signature (SAS) eines Kontos mit der GetSharedAccessSignature
-Methode unter dem Microsoft.WindowsAzure.Storage
-Namespace.
Regelbeschreibung
Eine Konto-SAS kann den Zugriff auf Lese-, Schreib- und Löschvorgänge in Blobcontainern, Tabellen, Warteschlangen und Dateifreigaben delegieren, die mit einer Dienst-SAS nicht zulässig sind. Sie unterstützt allerdings keine Richtlinien auf Containerebene und bietet weniger Flexibilität und Kontrolle über die gewährten Berechtigungen. Verwenden Sie nach Möglichkeit eine Dienst-SAS für eine differenzierte Zugriffssteuerung. Weitere Informationen finden Sie unter Delegieren des Zugriffs mit einer SAS (Shared Access Signature).
Behandeln von Verstößen
Verwenden Sie eine Dienst-SAS anstelle einer Konto-SAS für eine differenzierte Zugriffssteuerung und Zugriffsrichtlinie auf Containerebene.
Wann sollten Warnungen unterdrückt werden?
Es ist sicher, diese Regel zu unterdrücken, wenn Sie sicher sind, dass die Berechtigungen aller Ressourcen so eingeschränkt wie möglich sind.
Unterdrücken einer Warnung
Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.
#pragma warning disable CA5375
// The code that's violating the rule is on this line.
#pragma warning restore CA5375
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none
fest.
[*.{cs,vb}]
dotnet_diagnostic.CA5375.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.
Pseudocodebeispiele
Verletzung
Derzeit veranschaulicht das folgende Pseudocodebeispiel das von dieser Regel erkannte Muster.
using System;
using Microsoft.WindowsAzure.Storage;
class ExampleClass
{
public void ExampleMethod(SharedAccessAccountPolicy policy)
{
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount();
cloudStorageAccount.GetSharedAccessSignature(policy);
}
}
Lösung
Verwenden Sie anstelle der Konto-SAS die Dienst-SAS.
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);
}
}