CA5375 : Ne pas utiliser de signature d’accès partagé au compte
Propriété | Value |
---|---|
Identificateur de la règle | CA5375 |
Titre | Ne pas utiliser de signature d’accès partagé au compte |
Catégorie | Sécurité |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Non |
Cause
Génération d’une signature d’accès partagé (SAP) de compte avec la méthode GetSharedAccessSignature
sous l’espace de noms Microsoft.WindowsAzure.Storage
.
Description de la règle
Un compte SAP peut déléguer l’accès aux opérations de lecture, d’écriture et de suppression sur les conteneurs d’objets blob, les tables, les files d’attente et les partages de fichiers qui ne sont pas autorisées avec une SAP de service. Toutefois, il ne prend pas en charge les stratégies au niveau du conteneur et offre moins de flexibilité et de contrôle sur les autorisations accordées. Si possible, utilisez une SAP de service pour un contrôle d’accès affiné. Pour plus d’informations, consultez Déléguer l’accès avec une signature d’accès partagé.
Comment corriger les violations
Utilisez une SAP de service au lieu d’une SAP de compte pour un contrôle d’accès précis et une stratégie d’accès au niveau du conteneur.
Quand supprimer les avertissements
Vous pouvez supprimer cette règle en toute sécurité si vous êtes sûr que les autorisations de toutes les ressources sont aussi restreintes que possible.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA5375
// The code that's violating the rule is on this line.
#pragma warning restore CA5375
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA5375.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.
Exemples de pseudo-code
Violation
À présent, le pseudo-code suivant illustre le modèle détecté par cette règle.
using System;
using Microsoft.WindowsAzure.Storage;
class ExampleClass
{
public void ExampleMethod(SharedAccessAccountPolicy policy)
{
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount();
cloudStorageAccount.GetSharedAccessSignature(policy);
}
}
Solution
Au lieu de la SAP de compte, utilisez la SAP de service.
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);
}
}
Règles associées
CA5376 : utilisez SharedAccessProtocol HttpsOnly
CA5377 : utilisez une stratégie d’accès au niveau du conteneur