Поделиться через


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);
    }
}

CA5376: использование SharedAccessProtocol HttpsOnly

CA5377: использование политики доступа на уровне контейнера