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