Freigeben über


CA5375: Verwenden Sie keine Shared Access Signature für das Konto.

Eigenschaft Wert
Regel-ID CA5375
Titel Verwenden Sie keine geteilte Zugriffssignatur für das Konto.
Kategorie Security
Fix führt zu Unterbrechungen oder bleibt funktionsfähig Untrennbar
Standardmäßig in .NET 10 aktiviert Nein
Anwendbare Sprachen C# und Visual Basic

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 Delegierten Zugriff mit einer Shared Access Signature (SAS).

So beheben Sie Verstöße

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 auf none in der Konfigurationsdatei 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 statt 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);
    }
}

CA5376: SharedAccessProtocol.HttpsOnly verwenden.

CA5377: Zugriffsrichtlinie auf Containerebene verwenden.