Compartilhar via


CA5375: Não usar a assinatura de acesso compartilhado da conta

Property Valor
ID da regra CA5375
Título Não usar a assinatura de acesso compartilhado da conta
Categoria Segurança
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 8 Não

Causa

Gerar uma SAS (Assinatura de Acesso Compartilhado) de conta com o método GetSharedAccessSignature no namespace Microsoft.WindowsAzure.Storage.

Descrição da regra

Uma SAS de conta pode delegar acesso a operações de leitura, gravação e exclusão em contêineres de blob, tabelas, filas e compartilhamentos de arquivos que não são permitidos com uma SAS de serviço. No entanto, não dá suporte a políticas no nível de contêiner e tem menos flexibilidade e controle sobre as permissões concedidas. Se possível, use uma SAS de serviço para controle de acesso refinado. Para obter mais informações, confira Delegar acesso com uma assinatura de acesso compartilhado.

Como corrigir violações

Use uma SAS de serviço em vez de uma SAS de conta para controle de acesso refinado e política de acesso no nível de contêiner.

Quando suprimir avisos

É seguro suprimir essa regra se você tiver certeza de que as permissões de todos os recursos são o mais restritas possível.

Suprimir um aviso

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.

#pragma warning disable CA5375
// The code that's violating the rule is on this line.
#pragma warning restore CA5375

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA5375.severity = none

Para obter mais informações, confira Como suprimir avisos de análise de código.

Exemplos de pseudocódigo

Violação

No momento, o exemplo de pseudocódigo a seguir ilustra o padrão detectado por essa regra.

using System;
using Microsoft.WindowsAzure.Storage;

class ExampleClass
{
    public void ExampleMethod(SharedAccessAccountPolicy policy)
    {
        CloudStorageAccount cloudStorageAccount = new CloudStorageAccount();
        cloudStorageAccount.GetSharedAccessSignature(policy);
    }
}

Solução

Em vez de SAS de conta, use SAS de serviço.

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: Usar SharedAccessProtocol HttpsOnly

CA5377: Usar política de acesso no nível de contêiner