Partilhar via


Quadro de segurança: Autorização | Atenuações

Produto/Serviço Artigo
Limite de confiança da máquina
Aplicação Web
Base de dados
Gateway de nuvem IoT
Hub de Eventos do Azure
Banco de Dados de Documentos do Azure
Limite de Confiança do Azure
Limite de confiança do Service Fabric
Dynamics CRM
Dynamics CRM Portal
Armazenamento do Azure
Cliente Móvel
WCF
API Web
Dispositivo IoT
Gateway de campo IoT

Verifique se as ACLs adequadas estão configuradas para restringir o acesso não autorizado aos dados no dispositivo

Título Detalhes
Componente Limite de confiança da máquina
Fase SDL Implementação
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos Verifique se as ACLs adequadas estão configuradas para restringir o acesso não autorizado aos dados no dispositivo

Certifique-se de que o conteúdo confidencial do aplicativo específico do usuário seja armazenado no diretório de perfil de usuário

Título Detalhes
Componente Limite de confiança da máquina
Fase SDL Implementação
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos Certifique-se de que o conteúdo confidencial do aplicativo específico do usuário esteja armazenado no diretório de perfil de usuário. Isso é para evitar que vários usuários da máquina acessem os dados uns dos outros.

Certifique-se de que os aplicativos implantados sejam executados com privilégios mínimos

Título Detalhes
Componente Limite de confiança da máquina
Fase SDL Implementação
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos Certifique-se de que o aplicativo implantado seja executado com o mínimo de privilégios.

Impor ordem de etapa sequencial ao processar fluxos de lógica de negócios

Título Detalhes
Componente Aplicação Web
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos Para verificar se esse estágio foi executado por um usuário genuíno, você deseja impor o aplicativo para processar apenas fluxos de lógica de negócios em ordem de etapas sequenciais, com todas as etapas sendo processadas em tempo humano realista, e não processar fora de ordem, etapas ignoradas, etapas processadas de outro usuário ou transações enviadas muito rapidamente.

Implementar mecanismo de limitação de taxa para evitar a enumeração

Título Detalhes
Componente Aplicação Web
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos Certifique-se de que os identificadores confidenciais são aleatórios. Implemente o controle CAPTCHA em páginas anônimas. Certifique-se de que o erro e a exceção não devem revelar dados específicos

Garantir que a autorização adequada esteja em vigor e que o princípio dos privilégios mínimos seja seguido

Título Detalhes
Componente Aplicação Web
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos

O princípio significa dar a uma conta de usuário apenas os privilégios que são essenciais para que os usuários trabalhem. Por exemplo, um usuário de backup não precisa instalar software: portanto, o usuário de backup tem direitos apenas para executar aplicativos relacionados a backup e backup. Quaisquer outros privilégios, como a instalação de novo software, são bloqueados. O princípio aplica-se também a um utilizador de computador pessoal que normalmente trabalha numa conta de utilizador normal e abre uma conta privilegiada protegida por palavra-passe (ou seja, um superutilizador) apenas quando a situação o exige.

Este princípio também pode ser aplicado às suas aplicações Web. Em vez de depender apenas de métodos de autenticação baseados em função usando sessões, queremos atribuir privilégios aos usuários por meio de um sistema de autenticação baseada em banco de dados. Ainda usamos sessões para identificar se o usuário estava conectado corretamente, só que agora, em vez de atribuir a esse usuário uma função específica, atribuímos a ele privilégios para verificar quais ações ele tem o privilégio de executar no sistema. Também um grande pró deste método é, sempre que um usuário tem que ser atribuído menos privilégios, suas alterações serão aplicadas na hora, uma vez que a atribuição não depende da sessão que, de outra forma, tinha que expirar primeiro.

A lógica de negócios e as decisões de autorização de acesso a recursos não devem ser baseadas em parâmetros de solicitação de entrada

Título Detalhes
Componente Aplicação Web
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos Sempre que você estiver verificando se um usuário está restrito a revisar determinados dados, as restrições de acesso devem ser processadas no lado do servidor. O userID deve ser armazenado dentro de uma variável de sessão no login e deve ser usado para recuperar dados do usuário do banco de dados

Exemplo

SELECT data 
FROM personaldata 
WHERE userID=:id < - session var 

Agora, um possível invasor não pode adulterar e alterar a operação do aplicativo, uma vez que o identificador para recuperar os dados é manipulado no lado do servidor.

Certifique-se de que o conteúdo e os recursos não são enumeráveis ou acessíveis por meio de navegação forçada

Título Detalhes
Componente Aplicação Web
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos

Arquivos estáticos e de configuração confidenciais não devem ser mantidos na raiz da web. Para conteúdos que não têm de ser públicos, devem ser aplicados controlos de acesso adequados ou a remoção do próprio conteúdo.

Além disso, a navegação forçada geralmente é combinada com técnicas de Força Bruta para coletar informações, tentando acessar o maior número possível de URLs para enumerar diretórios e arquivos em um servidor. Os atacantes podem verificar todas as variações de ficheiros normalmente existentes. Por exemplo, uma pesquisa de arquivo de senha englobaria arquivos incluindo psswd.txt, password.htm, password.dat e outras variações.

Para atenuar esta situação, devem ser incluídas capacidades de deteção de tentativas de força bruta.

Verifique se as contas com privilégios mínimos são usadas para se conectar ao servidor de banco de dados

Título Detalhes
Componente Base de Dados
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências Hierarquia de permissões SQL, protegíveis SQL
Passos As contas menos privilegiadas devem ser usadas para se conectar ao banco de dados. O login do aplicativo deve ser restrito no banco de dados e deve executar apenas os procedimentos armazenados selecionados. O login do aplicativo não deve ter acesso direto à tabela.

Implementar RLS de segurança em nível de linha para impedir que os locatários acessem os dados uns dos outros

Título Detalhes
Componente Base de Dados
Fase SDL Compilar
Tecnologias aplicáveis Sql Azure, OnPrem
Atributos Versão SQL - V12, Versão SQL - MsSQL2016
Referências Segurança em nível de linha (RLS) do SQL Server
Passos

A Segurança ao Nível da Linha permite aos clientes controlar o acesso às linhas numa tabela de base de dados com base nas características do utilizador que executa uma consulta (por exemplo, associação a um grupo ou contexto de execução).

A Segurança em Nível de Linha (RLS) simplifica o design e a codificação da segurança em seu aplicativo. O RLS permite-lhe implementar restrições ao acesso à linha de dados. É possível, por exemplo, garantir que os colaboradores só têm acesso às linhas de dados que são pertinentes para o departamento deles ou limitar o acesso a dados por parte de um cliente apenas àqueles que são relevantes para a empresa dele.

A lógica de restrição de acesso está localizada na camada de banco de dados em vez de longe dos dados em outra camada de aplicativo. O sistema de banco de dados aplica as restrições de acesso sempre que o acesso aos dados é tentado a partir de qualquer camada. Isto torna o sistema de segurança mais fiável e robusto, reduzindo a área de superfície do sistema de segurança.

Observe que a RLS como um recurso de banco de dados pronto para uso é aplicável somente ao SQL Server a partir de 2016, ao Banco de Dados SQL do Azure e à Instância Gerenciada do SQL. Se o recurso RLS pronto para uso não for implementado, deve-se garantir que o acesso aos dados seja restrito Usando exibições e procedimentos

A função Sysadmin só deve ter usuários necessários válidos

Título Detalhes
Componente Base de Dados
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências Hierarquia de permissões SQL, protegíveis SQL
Passos Os membros da função de servidor fixa SysAdmin devem ser muito limitados e nunca conter contas usadas por aplicativos. Revise a lista de usuários na função e remova todas as contas desnecessárias

Conecte-se ao Cloud Gateway usando tokens menos privilegiados

Título Detalhes
Componente Gateway de nuvem IoT
Fase SDL Implementação
Tecnologias aplicáveis Genérica
Atributos Escolha de gateway - Hub IoT do Azure
Referências Controle de acesso do Hub Iot
Passos Forneça permissões de privilégios mínimos para vários componentes que se conectam ao Cloud Gateway (Hub IoT). Exemplo típico é – O componente de gerenciamento/provisionamento de dispositivos usa registryread/write, o Event Processor (ASA) usa o Service Connect. Dispositivos individuais se conectam usando credenciais de dispositivo

Usar uma chave SAS de permissões somente de envio para gerar tokens de dispositivo

Título Detalhes
Componente Hub de Eventos do Azure
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências Visão geral do modelo de autenticação e segurança dos Hubs de Eventos
Passos Uma chave SAS é usada para gerar tokens de dispositivo individuais. Use uma chave SAS de permissões somente de envio ao gerar o token de dispositivo para um determinado editor

Não use tokens de acesso que forneçam acesso direto ao Hub de Eventos

Título Detalhes
Componente Hub de Eventos do Azure
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências Visão geral do modelo de autenticação e segurança dos Hubs de Eventos
Passos Um token que concede acesso direto ao hub de eventos não deve ser fornecido ao dispositivo. Usar um token menos privilegiado para o dispositivo que dá acesso apenas a um editor ajudaria a identificar e não permitir que ele fosse um dispositivo fraudulento ou comprometido.

Conectar-se ao Hub de Eventos usando chaves SAS que têm as permissões mínimas necessárias

Título Detalhes
Componente Hub de Eventos do Azure
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências Visão geral do modelo de autenticação e segurança dos Hubs de Eventos
Passos Forneça permissões de privilégios mínimos para vários aplicativos back-end que se conectam ao Hub de Eventos. Gere chaves SAS separadas para cada aplicativo back-end e forneça apenas as permissões necessárias - Enviar, Receber ou Gerenciar para elas.

Usar tokens de recursos para se conectar ao Azure Cosmos DB sempre que possível

Título Detalhes
Componente Banco de Dados de Documentos do Azure
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos Um token de recurso é associado a um recurso de permissão do Azure Cosmos DB e captura a relação entre o usuário de um banco de dados e a permissão que o usuário tem para um recurso de aplicativo específico do Azure Cosmos DB (por exemplo, coleção, documento). Sempre use um token de recurso para acessar o Azure Cosmos DB se não for possível confiar no cliente para manipular chaves mestras ou somente leitura - como um aplicativo de usuário final, como um cliente móvel ou de desktop. Use a chave mestra ou chaves somente leitura de aplicativos de back-end que podem armazenar essas chaves com segurança.

Habilitar o gerenciamento de acesso refinado à Assinatura do Azure usando o RBAC do Azure

Título Detalhes
Componente Limite de Confiança do Azure
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências Atribuir funções do Azure para gerir o acesso aos seus recursos de subscrição do Azure
Passos O controle de acesso baseado em função do Azure (Azure RBAC) permite o gerenciamento de acesso refinado para o Azure. Usando o RBAC do Azure, você pode conceder apenas a quantidade de acesso que os usuários precisam para executar seus trabalhos.

Restringir o acesso do cliente às operações de cluster usando o RBAC do Service Fabric

Título Detalhes
Componente Limite de confiança do Service Fabric
Fase SDL Implementação
Tecnologias aplicáveis Genérica
Atributos Ambiente - Azure
Referências Controle de acesso baseado em função do Service Fabric para clientes do Service Fabric
Passos

O Azure Service Fabric dá suporte a dois tipos diferentes de controle de acesso para clientes conectados a um cluster do Service Fabric: administrador e usuário. O controle de acesso permite que o administrador do cluster limite o acesso a determinadas operações de cluster para diferentes grupos de usuários, tornando o cluster mais seguro.

Os administradores têm acesso total aos recursos de gerenciamento (incluindo recursos de leitura/gravação). Os usuários, por padrão, têm apenas acesso de leitura aos recursos de gerenciamento (por exemplo, recursos de consulta) e a capacidade de resolver aplicativos e serviços.

Você especifica as duas funções de cliente (administrador e cliente) no momento da criação do cluster fornecendo certificados separados para cada uma.

Execute modelagem de segurança e use Segurança de Nível de Campo quando necessário

Título Detalhes
Componente Dynamics CRM
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos Execute modelagem de segurança e use Segurança de Nível de Campo quando necessário

Execute a modelagem de segurança das contas do portal tendo em mente que o modelo de segurança do portal difere do restante do CRM

Título Detalhes
Componente Dynamics CRM Portal
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos Execute a modelagem de segurança das contas do portal tendo em mente que o modelo de segurança do portal difere do restante do CRM

Conceder permissão refinada em uma variedade de entidades no Armazenamento de Tabela do Azure

Título Detalhes
Componente Armazenamento do Azure
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos StorageType - Tabela
Referências Como delegar acesso a objetos em sua conta de armazenamento do Azure usando SAS
Passos Em determinados cenários de negócios, o Armazenamento de Tabela do Azure pode ser necessário para armazenar dados confidenciais que atendem a diferentes partes. Por exemplo, dados sensíveis pertencentes a diferentes países/regiões. Nesses casos, as assinaturas SAS podem ser construídas especificando os intervalos de chaves de partição e linha, de modo que um usuário possa acessar dados específicos de um determinado país/região.

Habilitar o controle de acesso baseado em função do Azure (Azure RBAC) para a conta de armazenamento do Azure usando o Azure Resource Manager

Título Detalhes
Componente Armazenamento do Azure
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências Como proteger sua conta de armazenamento com o controle de acesso baseado em função do Azure (Azure RBAC)
Passos

Ao criar uma nova conta de armazenamento, você seleciona um modelo de implantação do Classic ou do Azure Resource Manager. O modelo Clássico de criação de recursos no Azure permite apenas o acesso de tudo ou nada à subscrição e, por sua vez, à conta de armazenamento.

Com o modelo do Azure Resource Manager, você coloca a conta de armazenamento em um grupo de recursos e controla o acesso ao plano de gerenciamento dessa conta de armazenamento específica usando a ID do Microsoft Entra. Por exemplo, você pode dar a usuários específicos a capacidade de acessar as chaves da conta de armazenamento, enquanto outros usuários podem exibir informações sobre a conta de armazenamento, mas não podem acessar as chaves da conta de armazenamento.

Implementar jailbreak implícito ou deteção de enraizamento

Título Detalhes
Componente Cliente Móvel
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos

O aplicativo deve proteger sua própria configuração e dados do usuário no caso de o telefone está enraizado ou jail broken. Rooting/jail break implica acesso não autorizado, o que usuários normais não farão em seus próprios telefones. Portanto, o aplicativo deve ter lógica de deteção implícita na inicialização do aplicativo, para detetar se o telefone foi rooteado.

A lógica de deteção pode ser simplesmente acessar arquivos que normalmente apenas o usuário root pode acessar, por exemplo:

  • /sistema/aplicativo/Superuser.apk
  • /sbin/su
  • /sistema/bin/su
  • /sistema/xbin/su
  • /dados/local/xbin/su
  • /dados/local/bin/su
  • /sistema/sd/xbin/su
  • /sistema/bin/failsafe/su
  • /dados/local/su

Se o aplicativo pode acessar qualquer um desses arquivos, isso indica que o aplicativo está sendo executado como usuário root.

Referência de classe fraca no WCF

Título Detalhes
Componente WCF
Fase SDL Compilar
Tecnologias aplicáveis Genérico, NET Framework 3
Atributos N/A
Referências MSDN, Reino Fortify
Passos

O sistema usa uma referência de classe fraca, que pode permitir que um invasor execute código não autorizado. O programa faz referência a uma classe definida pelo usuário que não é identificada exclusivamente. Quando o .NET carrega essa classe fracamente identificada, o carregador de tipo CLR procura a classe nos seguintes locais na ordem especificada:

  1. Se a montagem do tipo for conhecida, o carregador pesquisará os locais de redirecionamento do arquivo de configuração, o GAC, o assembly atual usando informações de configuração e o diretório base do aplicativo
  2. Se o assembly for desconhecido, o carregador pesquisará o assembly atual, mscorlib e o local retornado pelo manipulador de eventos TypeResolve
  3. Essa ordem de pesquisa CLR pode ser modificada com ganchos, como o mecanismo Type Forwarding e o evento AppDomain.TypeResolve

Se um invasor explorar a ordem de pesquisa do CLR criando uma classe alternativa com o mesmo nome e colocando-a em um local alternativo que o CLR carregará primeiro, o CLR executará involuntariamente o código fornecido pelo invasor

Exemplo

O <behaviorExtensions/> elemento do arquivo de configuração do WCF abaixo instrui o WCF a adicionar uma classe de comportamento personalizada a uma extensão WCF específica.

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name=""myBehavior"" type=""MyBehavior"" />
        </behaviorExtensions>
    </extensions>
</system.serviceModel>

Usar nomes totalmente qualificados (fortes) identifica exclusivamente um tipo e aumenta ainda mais a segurança do seu sistema. Use nomes de assembly totalmente qualificados ao registrar tipos nos arquivos machine.config e app.config.

Exemplo

O <behaviorExtensions/> elemento do arquivo de configuração do WCF abaixo instrui o WCF a adicionar classe de comportamento personalizado fortemente referenciada a uma extensão WCF específica.

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name=""myBehavior"" type=""Microsoft.ServiceModel.Samples.MyBehaviorSection, MyBehavior,
            Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"" />
        </behaviorExtensions>
    </extensions>
</system.serviceModel>

WCF-Implementar controle de autorização

Título Detalhes
Componente WCF
Fase SDL Compilar
Tecnologias aplicáveis Genérico, NET Framework 3
Atributos N/A
Referências MSDN, Reino Fortify
Passos

Este serviço não usa um controle de autorização. Quando um cliente chama um serviço WCF específico, o WCF fornece vários esquemas de autorização que verificam se o chamador tem permissão para executar o método de serviço no servidor. Se os controles de autorização não estiverem habilitados para serviços WCF, um usuário autenticado poderá obter escalonamento de privilégios.

Exemplo

A configuração a seguir instrui o WCF a não verificar o nível de autorização do cliente ao executar o serviço:

<behaviors>
    <serviceBehaviors>
        <behavior>
            ...
            <serviceAuthorization principalPermissionMode=""None"" />
        </behavior>
    </serviceBehaviors>
</behaviors>

Use um esquema de autorização de serviço para verificar se o chamador do método de serviço está autorizado a fazê-lo. WCF fornece dois modos e permite a definição de um esquema de autorização personalizado. O modo UseWindowsGroups usa funções e usuários do Windows e o modo UseAspNetRoles usa um provedor de função ASP.NET, como o SQL Server, para autenticar.

Exemplo

A configuração a seguir instrui o WCF a certificar-se de que o cliente faz parte do grupo Administradores antes de executar o serviço Adicionar:

<behaviors>
    <serviceBehaviors>
        <behavior>
            ...
            <serviceAuthorization principalPermissionMode=""UseWindowsGroups"" />
        </behavior>
    </serviceBehaviors>
</behaviors>

O serviço é então declarado da seguinte forma:

[PrincipalPermission(SecurityAction.Demand,
Role = ""Builtin\\Administrators"")]
public double Add(double n1, double n2)
{
double result = n1 + n2;
return result;
}

Implementar o mecanismo de autorização adequado em ASP.NET API Web

Título Detalhes
Componente API da Web
Fase SDL Compilar
Tecnologias aplicáveis Genérico, MVC5
Atributos N/D, Provedor de Identidade - ADFS, Provedor de Identidade - Microsoft Entra ID
Referências Autenticação e autorização em ASP.NET API Web
Passos

As informações de função para os usuários do aplicativo podem ser derivadas de declarações do Microsoft Entra ID ou ADFS se o aplicativo depender deles como provedor de identidade ou se o próprio aplicativo puder fornecê-lo. Em qualquer um desses casos, a implementação de autorização personalizada deve validar as informações da função de usuário.

As informações de função para os usuários do aplicativo podem ser derivadas de declarações do Microsoft Entra ID ou ADFS se o aplicativo depender deles como provedor de identidade ou se o próprio aplicativo puder fornecê-lo. Em qualquer um desses casos, a implementação de autorização personalizada deve validar as informações da função de usuário.

Exemplo

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class ApiAuthorizeAttribute : System.Web.Http.AuthorizeAttribute
{
        public async override Task OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
        {
            if (actionContext == null)
            {
                throw new Exception();
            }

            if (!string.IsNullOrEmpty(base.Roles))
            {
                bool isAuthorized = ValidateRoles(actionContext);
                if (!isAuthorized)
                {
                    HandleUnauthorizedRequest(actionContext);
                }
            }

            base.OnAuthorization(actionContext);
        }

public bool ValidateRoles(actionContext)
{
   //Authorization logic here; returns true or false
}

}

Todos os controladores e métodos de ação que precisam ser protegidos devem ser decorados com o atributo acima.

[ApiAuthorize]
public class CustomController : ApiController
{
     //Application code goes here
}

Execute verificações de autorização no dispositivo se ele oferecer suporte a várias ações que exijam diferentes níveis de permissão

Título Detalhes
Componente Dispositivo IoT
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos

O dispositivo deve autorizar o chamador a verificar se ele tem as permissões necessárias para executar a ação solicitada. Por exemplo, digamos que o dispositivo é uma fechadura de porta inteligente que pode ser monitorada a partir da nuvem, além de fornecer funcionalidades como bloquear remotamente a porta.

A fechadura inteligente fornece funcionalidade de desbloqueio apenas quando alguém se aproxima fisicamente da porta com um cartão. Neste caso, a implementação do comando e controle remoto deve ser feita de tal forma que não forneça nenhuma funcionalidade para destrancar a porta, pois o gateway de nuvem não está autorizado a enviar um comando para destrancar a porta.

Execute verificações de autorização no Field Gateway se ele oferecer suporte a várias ações que exijam diferentes níveis de permissão

Título Detalhes
Componente Gateway de campo IoT
Fase SDL Compilar
Tecnologias aplicáveis Genérica
Atributos N/A
Referências N/A
Passos O Gateway de Campo deve autorizar o chamador a verificar se ele tem as permissões necessárias para executar a ação solicitada. Por exemplo, deve haver permissões diferentes para uma interface de usuário admin / API usada para configurar um gateway de campo v/s dispositivos que se conectam a ele.