CA5375: Hesap paylaşılan erişim imzası kullanmayın

Özellik Değer
Kural Kimliği CA5375
Başlık Hesabın paylaşılan erişim imzasını kullanmayın
Kategori Güvenlik
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
.NET 10'da varsayılan olarak etkin Hayır
Geçerli diller C# ve Visual Basic

Neden

Ad alanı içindeki Microsoft.WindowsAzure.Storage yöntemini kullanarak bir hesap için Paylaşılan Erişim İmzası (SAS) oluşturma.

Kural açıklaması

Hesap SAS'sı, hizmet SAS'ın izin vermediği blob kapsayıcıları, tablolar, kuyruklar ve dosya paylaşımlarında okuma, yazma ve silme işlemleri için erişim yetkisi verebilir. Ancak kapsayıcı düzeyinde politikaları desteklemez ve verilen izinler üzerinde daha az esnekliğe ve denetime sahiptir. Mümkünse ayrıntılı erişim denetimi için hizmet SAS'sini kullanın. Daha fazla bilgi için bkz Paylaşılan erişim imzasıyla temsilci erişimi.

İhlalleri düzeltme

Ayrıntılı erişim denetimi ve kapsayıcı seviyesinde erişim ilkesi için hesap SAS'i yerine hizmet SAS'i kullanın.

Uyarıların ne zaman bastırılması gerekiyor?

Tüm kaynakların izinlerinin mümkün olduğunca kısıtlandığından eminseniz, bu kuralı gizlemeniz güvenlidir.

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.

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

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.

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

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.

Sahte kod örnekleri

Ihlal

Şu anda aşağıdaki sahte kod örneği, bu kural tarafından algılanan deseni göstermektedir.

using System;
using Microsoft.WindowsAzure.Storage;

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

Çözüm

Hesap SAS'i yerine hizmet SAS'sini kullanın.

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'u yalnızca Https olarak kullanın

CA5377: Kapsayıcı düzeyi erişim ilkesini kullanma