Бөлісу құралы:


CA5375: не используйте подписанный URL-адрес общего доступа учетной записи

Свойство Значение
Идентификатор правила CA5375
Заголовок Не используйте открытый ключ доступа к учетной записи.
Категория Безопасность
Исправление является критическим или не критическим неразрывный
Включен по умолчанию в .NET 10 Нет
Применимые языки C# и Visual Basic

Причина

Создание токена совместного доступа (SAS) учетной записи с использованием метода GetSharedAccessSignature в пространстве имен Microsoft.WindowsAzure.Storage.

Описание правила

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: использование политики доступа на уровне контейнера