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