CA5375: не используйте подписанный URL-адрес учетной записи
Свойство | Значение |
---|---|
Идентификатор правила | CA5375 |
Заголовок | не используйте подписанный URL-адрес учетной записи |
Категория | Безопасность |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | No |
Причина
Создание подписанного URL-адреса (SAS) учетной записи с помощью метода GetSharedAccessSignature
в пространстве имен Microsoft.WindowsAzure.Storage
.
Описание правила
Подписанный URL-адрес (SAS) учетной записи может делегировать доступ к операциям чтения, записи и удаления в контейнерах больших двоичных объектов, таблицах, очередях и общих папках, которые запрещены в SAS службы. Однако он не поддерживает политики уровня контейнеров и обладает меньшей гибкостью и уровнем контроля предоставленных разрешений. По возможности используйте SAS службы для детализированного контроля доступа. Дополнительные сведения см. в статье Делегирование доступа с помощью подписанного URL-адреса.
Устранение нарушений
Используйте SAS службы вместо SAS учетной записи для детализированного контроля доступа и политики доступа на уровне контейнеров.
Когда лучше отключить предупреждения
Вывод предупреждений для этого правила можно отключить, если вы уверены в максимально возможном ограничении разрешений для всех ресурсов.
Отключение предупреждений
Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.
#pragma warning disable CA5375
// The code that's violating the rule is on this line.
#pragma warning restore CA5375
Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none
в файле конфигурации.
[*.{cs,vb}]
dotnet_diagnostic.CA5375.severity = none
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.
Примеры псевдокода
Нарушение
В приведенном ниже примере псевдокода показан шаблон, обнаруживаемый этим правилом.
using System;
using Microsoft.WindowsAzure.Storage;
class ExampleClass
{
public void ExampleMethod(SharedAccessAccountPolicy policy)
{
CloudStorageAccount cloudStorageAccount = new CloudStorageAccount();
cloudStorageAccount.GetSharedAccessSignature(policy);
}
}
Решение
Вместо SAS учетной записи следует использовать SAS службы.
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);
}
}