Configurar a segurança para seu servidor PostgreSQL habilitado para Azure Arc
Este documento descreve vários aspetos relacionados à segurança do seu grupo de servidores:
- Encriptação inativa
- Funções do Postgres e gerenciamento de usuários
- Perspetivas gerais
- Alterar a senha do usuário administrativo do postgres
- Audit
Nota
Como funcionalidade de pré-visualização, a tecnologia apresentada neste artigo está sujeita aos Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure.
As atualizações mais recentes estão disponíveis nas notas de versão.
Encriptação inativa
Você pode implementar a criptografia em repouso criptografando os discos nos quais armazena seus bancos de dados e/ou usando funções de banco de dados para criptografar os dados inseridos ou atualizados.
Hardware: criptografia de volume do host Linux
Implemente a criptografia de dados do sistema para proteger todos os dados que residem nos discos usados pela configuração dos Serviços de Dados habilitados para Azure Arc. Você pode ler mais sobre este tópico:
- Criptografia de dados em repouso no Linux em geral
- Criptografia de disco com comando LUKS
cryptsetup
(Linux)(https://www.cyberciti.biz/security/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/) especificamente. Como os Serviços de Dados habilitados para Azure Arc são executados na infraestrutura física que você fornece, você é responsável por proteger a infraestrutura.
Software: Use a extensão PostgreSQL pgcrypto
em seu grupo de servidores
Além de criptografar os discos usados para hospedar sua configuração do Azure Arc, você pode configurar seu servidor PostgreSQL habilitado para Azure Arc para expor mecanismos que seus aplicativos podem usar para criptografar dados no(s) seu(s) banco(s) de dados. A pgcrypto
extensão faz parte das contrib
extensões do Postgres e está disponível em seu servidor PostgreSQL habilitado para Azure Arc. Você encontra detalhes sobre a pgcrypto
extensão aqui.
Em resumo, com os seguintes comandos, você habilita a extensão, cria-a e usa-a:
Criar a pgcrypto
extensão
Conecte-se ao seu grupo de servidores com a ferramenta cliente de sua escolha e execute a consulta PostgreSQL padrão:
CREATE EXTENSION pgcrypto;
Encontre detalhes aqui sobre como se conectar.
Verifique a lista das extensões prontas para uso em seu grupo de servidores
Você pode verificar se a pgcrypto
extensão está pronta para uso listando as extensões disponíveis no seu grupo de servidores.
Conecte-se ao seu grupo de servidores com a ferramenta cliente de sua escolha e execute a consulta PostgreSQL padrão:
select * from pg_extension;
Você deve ver pgcrypto
se você ativou e criou com os comandos indicados acima.
Use a pgcrypto
extensão
Agora você pode ajustar o código de seus aplicativos para que eles usem qualquer uma das funções oferecidas por pgcrypto
:
- Funções de hashing gerais
- Funções de hashing de palavras-passe
- Funções de encriptação PGP
- Funções de criptografia brutas
- Funções de dados aleatórios
Por exemplo, para gerar valores hash. Execute o comando:
select crypt('Les sanglots longs des violons de l_automne', gen_salt('md5'));
Devolve o seguinte hash:
crypt
------------------------------------
$1$/9ACBYOV$z52PAGjQ5WTU9xvEECBNv/
Ou, por exemplo:
select hmac('Les sanglots longs des violons de l_automne', 'md5', 'sha256');
Devolve o seguinte hash:
hmac
--------------------------------------------------------------------
\xd4e4790b69d2cc8dbce3385ee63272bc7760f1603640bb211a7b864e695570c5
Ou, por exemplo, para armazenar dados criptografados como uma senha:
Um aplicativo armazena segredos na tabela a seguir:
create table mysecrets(USERid int, USERname char(255), USERpassword char(512));
Criptografe sua senha ao criar um usuário:
insert into mysecrets values (1, 'Me', crypt('MySecretPasswrod', gen_salt('md5')));
Observe que a senha está criptografada:
select * from mysecrets;
Saída:
- USERid: 1
- USERname: Me
- USERpassword: $1$Uc7jzZOp$NTfcGo7F10zGOkXOwjHy31
Quando você se conecta ao aplicativo e passa uma senha, ele procura na mysecrets
tabela e retorna o nome do usuário se houver uma correspondência entre a senha fornecida ao aplicativo e as senhas armazenadas na tabela. Por exemplo:
Passe a senha errada:
select USERname from mysecrets where (USERpassword = crypt('WrongPassword', USERpassword));
Saída
USERname --------- (0 rows)
Passe a senha correta:
select USERname from mysecrets where (USERpassword = crypt('MySecretPasswrod', USERpassword));
Saída:
USERname --------- Me (1 row)
Este pequeno exemplo demonstra que você pode criptografar dados em repouso (armazenar dados criptografados) no servidor PostgreSQL habilitado para Azure Arc usando a extensão Postgres pgcrypto
e seus aplicativos podem usar funções oferecidas por pgcrypto
para manipular esses dados criptografados.
Funções do Postgres e gerenciamento de usuários
Perspetivas gerais
Para configurar funções e usuários em seu servidor PostgreSQL habilitado para Azure Arc, use a maneira padrão do Postgres para gerenciar funções e usuários. Para mais detalhes, leia aqui.
Audit
Para cenários de auditoria, configure seu grupo de servidores para usar as pgaudit
extensões do Postgres. Para obter mais detalhes sobre pgaudit
o projeto pgAudit
GitHub. Para habilitar a pgaudit
extensão em seu grupo de servidores, leia Usar extensões PostgreSQL.
Usar conexão SSL
SSL é necessário para conexões de cliente. Na cadeia de conexão, o parâmetro de modo SSL não deve ser desabilitado. Cadeias de conexão de formulário.
Conteúdos relacionados
- Ver
pgcrypto
extensão - Consulte Usar extensões do PostgreSQL