Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Ö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);
}
}
İlgili kurallar
CA5376: SharedAccessProtocol'u yalnızca Https olarak kullanın