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 9'da varsayılan olarak etkin | Hayır |
Neden
Ad alanı altındaki GetSharedAccessSignature
yöntemiyle Microsoft.WindowsAzure.Storage
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 none
olarak 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);
}
}