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
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 8'de varsayılan olarak etkin Hayır

Neden

Ad alanı altındaki Microsoft.WindowsAzure.Storage yöntemiyle GetSharedAccessSignature bir hesap Paylaşılan Erişim İmzası (SAS) oluşturma.

Kural açıklaması

Hesap SAS'sı, hizmet SAS'siyle izin verilmeyen blob kapsayıcıları, tablolar, kuyruklar ve dosya paylaşımlarındaki okuma, yazma ve silme işlemlerine erişim yetkisi verebilir. Ancak kapsayıcı düzeyinde ilkeleri 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ı düzeyinde erişim ilkesi için hesap SAS'i yerine hizmet SAS'sini 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 HttpsOnly kullanma

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