Teilen über


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 8 aktiviert Nein

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);
    }
}

CA5376: SharedAccessProtocol.HttpsOnly verwenden.

CA5377: Zugriffsrichtlinie auf Containerebene verwenden.