Recomendações para proteger segredos de aplicativo
Aplica-se a esta recomendação da lista de verificação de segurança bem arquitetada: Power Platform
SE:07 | Proteja os segredos de aplicativo reforçando o armazenamento e restringindo o acesso e a manipulação, além de auditar essas ações. Execute um processo de rotação confiável e regular capaz de improvisar rotações para emergências. |
---|
Este guia descreve as recomendações para proteger informações confidenciais em cargas de trabalho. O gerenciamento indicado de segredos é crucial para manter a segurança e a integridade do aplicativo, da carga de trabalho e dos dados associados. O processamento indevido de segredos pode acarretar violações de dados, interrupção do serviço, violações regulatórias e outros problemas.
Credenciais, como chaves de API, tokens de Autorização Aberta (OAuth) e chaves Secure Shell (SSH) são segredos. Os requisitos de conformidade podem fazer com que definições de configuração normalmente não consideradas secretas sejam tratadas como segredos de aplicativo.
Definições
Termo | Definição |
---|---|
Certificados | Arquivos digitais que contêm as chaves públicas de criptografia ou descriptografia. |
Credenciais | Informações usadas para verificar a identidade do editor ou do consumidor em um canal de comunicação. |
Exame de credenciais | O processo de validação do código-fonte para garantir que os segredos não sejam incluídos. |
Criptografia | O processo pelo qual os dados são tornados ilegíveis e bloqueados com um código secreto. |
Key | Um código secreto usado para bloquear ou desbloquear dados criptografados. |
Acesso com privilégios mínimos | Um princípio de Confiança Zero que visa minimizar um conjunto de permissões para concluir uma função de trabalho. |
Identidade gerenciada | Uma identidade atribuída a recursos e gerenciada pelo Azure. |
Não secreto | Informações que não comprometem a postura de segurança da carga de trabalho se vazadas. |
Rotação | O processo de atualização regular dos segredos para que, se forem comprometidos, só permaneçam disponíveis por um tempo limitado. |
Segredo | Um componente confidencial do sistema que facilita a comunicação entre os componentes da carga de trabalho. Se vazados, os segredos podem causar uma violação. |
X.509 | Um padrão que define o formato dos certificados de chave pública. |
Importante
Não trate não segredos como segredos. Os segredos exigem um rigor operacional que é desnecessário para não segredos e que pode acarretar custos extras.
As configurações do aplicativo que não são segredos, como as URLs das APIs de que o aplicativo precisa, devem ser mantidas à parte do código do aplicativo ou dos segredos do aplicativo. Para armazenar a configuração do aplicativo, leve em consideração o uso de um conector personalizado ou de variáveis de ambiente. Outra opção é usar uma tabela do Dataverse para armazenar metadados sobre a configuração do aplicativo. No entanto, você vai precisar encontrar uma maneira de preencher esses dados em um novo ambiente, como transferir dados de configuração do desenvolvimento para o teste ou a produção. Você pode usar fluxos de dados para conseguir isso.
Estratégias-chave de design
Leve em consideração as seguintes áreas de preocupação antes de armazenar e gerenciar segredos:
- Os segredos criados devem ser mantidos em armazenamento seguro com controles de acesso rigorosos.
- A rotação de segredos é uma operação proativa, e a revogação é reativa.
- Somente identidades confiáveis devem ter acesso a segredos.
- Você deve manter uma trilha de auditoria para inspecionar e validar o acesso a segredos.
Compile uma estratégia relacionada a esses pontos para ajudar a evitar roubo de identidade, evitar o repúdio e minimizar a exposição desnecessária a informações.
Práticas seguras para gerenciamento de segredos
Recomendamos que as chaves tenham três funções distintas: usuário, administrador e auditor. A distinção da função ajuda a garantir que apenas identidades confiáveis tenham acesso a segredos com o nível de permissão indicado. Instrua desenvolvedores, administradores e outro pessoal relevante sobre a importância do gerenciamento de segredos e das melhores práticas de segurança.
Chaves pré-compartilhadas
Você pode controlar o acesso criando chaves distintas para cada consumidor. Por exemplo, um cliente, como um aplicativo ou um fluxo, se comunica com uma API de terceiros usando uma chave pré-compartilhada. Se outro cliente precisar acessar a mesma API, deverá usar outra chave. Não compartilhe chaves, mesmo que dois consumidores tenham os mesmos padrões de acesso ou funções. Os escopos do consumidor podem mudar com o passar do tempo, e você não poderá atualizar permissões ou distinguir padrões de uso de maneira independente depois que uma chave for compartilhada. O acesso distinto também facilita a revogação. Se a chave de um consumidor for comprometida, será mais fácil revogá-la ou fazer a rotação dela sem afetar outros consumidores.
Essas diretrizes se aplicam a diferentes ambientes. A mesma chave não deve ser usada em ambientes de produção e pré-produção. Se você for responsável por criar chaves pré-compartilhadas, não se esqueça de criar várias chaves para dar suporte a vários clientes.
Para obter mais informações, consulte Recomendações para gerenciamento de identidade e acesso.
Armazenamento de segredo
Use um sistema de geranciamento de segredos, como o Azure Key Vault, para armazenar segredos em um ambiente reforçado, criptografar em repouso e em trânsito e auditar o acesso e as alterações aos segredos. Se você precisar armazenar segredos de aplicativo, mantenha-os fora do código-fonte para facilitar a rotação.
Um sistema de gerenciamento de segredos dedicado facilita o armazenamento, a distribuição e o controle de acesso a segredos de aplicativo. Somente identidades e serviços autorizados devem ter acesso a repositório de segredos. O acesso ao sistema pode ser restrito por meio de permissões. Sempre aplique a abordagem de privilégios mínimos ao atribuir permissões.
Você também precisa controlar o acesso no nível do segreto. Cada segredo só deve ter acesso a um único escopo de recurso. Crie limites de isolamento para que um componente só possa usar segredos de que precisa. Se for comprometido, um componente isolado não poderá obter controle de outros segredos e, potencialmente, de toda a carga de trabalho. Uma maneira de isolar segredos é usar vários cofres de chaves. Não há custos adicionais para a criação de cofres de chaves extras.
Implemente auditoria e monitoramento para acesso ao segredo. Registre quem acessa segredos e quando identificar atividades não autorizadas ou suspeitas. Para obter informações sobre registro em log de um ponto de vista da segurança, consulte Recomendações para monitoramento e detecção de ameaças.
Rotação de segredos
Implante um processo que mantenha a higiene do segredo. A longevidade de um segredo influencia o gerenciamento desse segredo. Para reduzir vetores de ataque, os segredos devem ser aposentados e substituídos por novos segredos com a maior frequência possível.
Manuseie OAuth os tokens de acesso com cuidado, levando em consideração seu tempo de vida. Leve em consideração se a janela de exposição precisa ser ajustada para um período mais curto. Os tokens de atualização devem ser armazenados de maneira segura com exposição limitada ao aplicativo. Os certificados renovados também devem usar uma chave nova. Para obter informações sobre tokens de atualização, consulte Tokens de atualização Secure OAuth 2.0 On-Behalf-Of.
Substitua segredos depois que eles chegarem ao fim da vida útil, não forem mais usados pela carga de trabalho ou se tiverem sido comprometidos. Por outro lado, não aposente segredos ativos, a menos que seja uma emergência. Você pode determinar o status de um segredo exibindo os logs de acesso. Os processos de rotação de segredos não devem afetar a confiabilidade ou o desempenho da carga de trabalho. Use estratégias que compilem redundância em segredos, consumidores e métodos de acesso para uma rotação tranquila.
Práticas seguras para o uso de segredos
Como gerador ou operador de segredos, você deve ser capaz de distribuir segredos de maneira segura. Muitas organizações usam ferramentas para compartilhar segredos com segurança dentro da organização e externamente com parceiros. Na ausência de uma ferramenta, tenha um processo para entregar corretamente as credenciais aos destinatários autorizados. Os planos para recuperação de desastres devem incluir procedimentos para recuperação de segredos. Tenha um processo para situações nas quais uma chave esteja comprometida ou vazada e precise ser regenerada sob demanda. Leve em consideração as seguintes melhores práticas para fins de segurança ao usar segredos:
Evitar codificação
Não codifique segredos como texto estático em artefatos de código, como fluxos de nuvem e aplicativos Canvas, arquivos de configuração e pipelines de construção e implantação. Essa prática de alto risco deixa o código vulnerável porque os segredos são expostos a todos com acesso de leitura.
Use ferramentas que detectam periodicamente segredos expostos no código do seu aplicativo e crie artefatos. Você pode adicionar essas ferramentas como parte dos pipelines de implantação para procurar credenciais antes da implantação de confirmações do código-fonte. Revise e limpe os logs do aplicativo regularmente para ajudar a garantir que nenhum segredo seja registrado inadvertidamente. Você também pode reforçar a detecção por meio de revisões por pares.
Observação
Se as ferramentas de exame descobrirem um segredo, esse segredo deverá ser considerado comprometido. Ele deve ser revogado.
Responder à rotação de segredos
Como proprietário da carga de trabalho, você precisa compreender o plano e as políticas de rotação dos segredos para poder incorporar novos segredos com o mínimo de interrupção para os usuários. Quando é feita a rotação de um segredo, pode haver uma janela quando o segredo anterior não é válido, mas o novo não foi inserido. Durante essa janela, o componente que a carga de trabalho está tentando alcançar não reconhece as solicitações. Você pode minimizar esses problemas compilando a lógica de repetição no código. Você também pode usar padrões de acesso simultâneo que permitam ter várias credenciais que possam ser alteradas de maneira segura sem afetar umas às outras.
Trabalhe com a equipe de operações e faça parte do processo de gerenciamento de alterações. Você deve informar aos proprietários de credencial, quando desativar uma parte da carga de trabalho que usa credenciais, que elas não são mais necessárias.
Integre a recuperação e a configuração do segredo ao pipeline de implantação automatizada. A recuperação do segredo ajuda a garantir que os segredos sejam buscados automaticamente durante a implantação. Você também pode usar padrões de injeção do segredo para inserir segredos no código do aplicativo ou na configuração em tempo de execução, o que evita que segredos sejam expostos acidentalmente a logs ou controle de versão.
Facilitação do Power Platform
As seções a seguir descrevem recursos e capacidades do Power Platform que você pode usar para gerenciar segredos de aplicativo.
Usar segredos do Azure Key Vault
As variáveis de ambiente permitem referenciar segredos armazenados no Azure Key Vault. Esses segredos são então disponibilizados para uso nos fluxos e nos conectores personalizados do Power Automate. Os segredos não estão disponíveis para uso em outras personalizações ou de maneira geral por meio da API.
Os segredos reais são armazenados no Azure Key Vault e a variável de ambiente faz referência ao local do segredo do cofre de chaves. O uso de segredos do Azure Key Vault com variáveis de ambiente exige a configuração do Azure Key Vault para que o Power Platform possa ler os segredos específicos que você deseja referenciar. Para obter mais informações, consulte Usar variáveis de ambiente em soluções e Usar variáveis de ambiente em conectores personalizados de solução.
Usar o verificador da solução
Com o recurso verificador de soluções, é possível executar uma rica verificação de análise estática em suas soluções em relação a um conjunto de regras de práticas recomendadas e identificar rapidamente esses padrões problemáticos. Após concluir a verificação, você receberá um relatório detalhado que lista os problemas identificados, os componentes e o código afetados e links para a documentação que descreve como resolver cada problema. Revise as regras do verificador de solução disponíveis na categoria Segurança. Para obter mais informações, consulte Usar o verificador de soluções para validar as soluções.
Usar ações do CyberArk
O CyberArk oferece uma plataforma de segurança de identidade que protege identidades humanas e de máquina de ponta a ponta. Os fluxos da área de trabalho do Power Automate permitem a você recuperar credenciais do CyberArk. Para obter mais informações, consulte Ações do CyberArk.
Informações relacionadas
- Use variáveis de ambiente em soluções
- Use variáveis de ambiente em conectores personalizados de solução
- Use o verificador de soluções para validar suas soluções
- CyberArk ações
- Azure DevOps Scanner de credenciais tarefa
- Configurar a extensão Microsoft Security DevOps Azure DevOps
- Configurar o GitHub Advanced Security para Azure DevOps
- Recomendações para monitoramento e detecção de ameaças
- Recomendações para geranciamento de identidade e acesso
Lista de verificação de segurança
Consulte o conjunto completo de recomendações.