CA5375: Non usare la firma di accesso condiviso dell'account

Proprietà valore
ID regola CA5375
Titolo Non usare la firma di accesso condiviso dell'account
Categoria Sicurezza
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 No

Causa

Generazione di una firma di accesso condiviso con l'account con il GetSharedAccessSignature metodo nello spazio dei Microsoft.WindowsAzure.Storage nomi .

Descrizione regola

Una firma di accesso condiviso dell'account può delegare l'accesso alle operazioni di lettura, scrittura ed eliminazione in contenitori BLOB, tabelle, code e condivisioni file non consentite con una firma di accesso condiviso del servizio. Tuttavia, non supporta i criteri a livello di contenitore e ha meno flessibilità e controllo sulle autorizzazioni concesse. Se possibile, usare una firma di accesso condiviso del servizio per un controllo di accesso granulare. Per altre informazioni, vedere Delegare l'accesso con una firma di accesso condiviso.

Come correggere le violazioni

Usare una firma di accesso condiviso del servizio anziché una firma di accesso condiviso dell'account per il controllo di accesso con granularità fine e i criteri di accesso a livello di contenitore.

Quando eliminare gli avvisi

È consigliabile eliminare questa regola se si è certi che le autorizzazioni di tutte le risorse siano il più possibile limitate.

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#pragma warning disable CA5375
// The code that's violating the rule is on this line.
#pragma warning restore CA5375

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

[*.{cs,vb}]
dotnet_diagnostic.CA5375.severity = none

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Esempi di pseudo-codice

Violazione

Attualmente, l'esempio di pseudo-codice seguente illustra il modello rilevato da questa regola.

using System;
using Microsoft.WindowsAzure.Storage;

class ExampleClass
{
    public void ExampleMethod(SharedAccessAccountPolicy policy)
    {
        CloudStorageAccount cloudStorageAccount = new CloudStorageAccount();
        cloudStorageAccount.GetSharedAccessSignature(policy);
    }
}

Soluzione

Anziché la firma di accesso condiviso dell'account, usare la firma di accesso condiviso del servizio.

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: Usare SharedAccessProtocol HttpsOnly

CA5377: Usare i criteri di accesso a livello di contenitore