Condividi tramite


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

Proprietà valore
ID regola CA5375
Title Non usare la firma di accesso condiviso dell'account
Categoria Sicurezza
La correzione causa un'interruzione o meno Non rompente
Abilitato per impostazione predefinita in .NET 10 No
Linguaggi applicabili C# e Visual Basic

Causa

Generazione di una firma di accesso condiviso (SAS) dell'account utilizzando il metodo GetSharedAccessSignature nello spazio dei nomi Microsoft.WindowsAzure.Storage.

Descrizione regola

Un token di accesso condiviso dell'account può delegare l'accesso alle operazioni di lettura, scrittura ed eliminazione sui contenitori BLOB, tabelle, code e condivisioni di file, che non sono consentite con un token 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 (servizio Shared Access Signature - SAS) per un controllo di accesso granulare. Per ulteriori informazioni, vedi Delegating Access with a Shared Access Signature (Delega dell'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é usare la SAS dell'account, utilizzare la SAS 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