CA5375: Não use assinatura de acesso compartilhado de conta
Propriedade | valor |
---|---|
ID da regra | CA5375 |
Cargo | Não use a assinatura de acesso compartilhado da conta |
Categoria | Segurança |
A correção está quebrando ou não quebrando | Sem quebra |
Habilitado por padrão no .NET 8 | Não |
Causa
Gerando uma conta Assinatura de Acesso Compartilhado (SAS) com o método sob o GetSharedAccessSignature
Microsoft.WindowsAzure.Storage
namespace.
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, ele não oferece 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, consulte 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 tão restritas quanto possível.
Suprimir um aviso
Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar 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 de um arquivo, pasta ou projeto, defina sua gravidade como none
no arquivo de configuração.
[*.{cs,vb}]
dotnet_diagnostic.CA5375.severity = none
Para obter mais informações, consulte 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 detetado 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);
}
}