Configurar a segurança do seu servidor PostgreSQL habilitado para Azure Arc
Este documento descreve vários aspectos relacionados à segurança do seu grupo de servidores:
- Criptografia em repouso
- Gerenciamento de funções e usuários do Postgres
- Perspectivas gerais
- Alterar a senha do usuário administrativo postgres
- Audit
Observação
Como uma versão prévia do recurso, a tecnologia apresentada neste artigo está sujeita aos Termos de uso complementares para versões prévias do Microsoft Azure.
As atualizações mais recentes estão disponíveis nas notas sobre a versão.
Criptografia em repouso
Você pode implementar a criptografia em repouso criptografando os discos nos quais armazena os bancos de dados e/ou usando as funções de banco de dado para criptografar os dados inseridos ou atualizados.
Hardware: criptografia de volume do host do Linux
Implemente a criptografia de dados do sistema para proteger os dados que residem nos discos usados pela configuração dos Serviços de Dados habilitados para Azure Arc. Leia mais sobre este tópico:
- Criptografia de dados em repouso no Linux em geral
- Criptografia de disco com o comando LUKS
cryptsetup
(Linux)(https://www.cyberciti.biz/security/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/) especificamente. Uma vez que 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
no seu grupo de servidores
Além de criptografar os discos usados para hospedar a sua configuração do Azure Arc, você pode configurar o seu servidor PostgreSQL habilitado para Azure Arc a fim de expor mecanismos que os seus aplicativos podem usar para criptografar dados nos bancos de dados. A extensão pgcrypto
faz parte das extensões contrib
de Postgres e está disponível no seu servidor PostgreSQL habilitado para Azure Arc. Você encontra detalhes sobre a extensão pgcrypto
aqui.
Em resumo, com os seguintes comandos, você habilita, cria e usa a extensão:
Criar a extensão pgcrypto
Conecte-se ao grupo de servidores com a ferramenta de cliente de sua escolha e execute a consulta PostgreSQL padrão:
CREATE EXTENSION pgcrypto;
Você encontra detalhes aqui sobre como se conectar.
Verifique a lista de extensões prontas para uso em seu grupo de servidores
Você pode verificar se a extensão pgcrypto
está pronta para uso listando as extensões disponíveis em seu grupo de servidores.
Conecte-se ao grupo de servidores com a ferramenta de cliente de sua escolha e execute a consulta PostgreSQL padrão:
select * from pg_extension;
Você deverá ver pgcrypto
se a tiver habilitado e criado com os comandos indicados acima.
Usar a extensão pgcrypto
Agora você pode ajustar o código dos seus aplicativos para que eles usem qualquer uma das funções oferecidas por pgcrypto
:
- Funções gerais de hash
- Funções de hash de senha
- Funções de criptografia PGP
- Funções de criptografia bruta
- Funções de dados aleatórios
Por exemplo, para gerar valores de hash. Execute o comando:
select crypt('Les sanglots longs des violons de l_automne', gen_salt('md5'));
Retorna o seguinte hash:
crypt
------------------------------------
$1$/9ACBYOV$z52PAGjQ5WTU9xvEECBNv/
Ou, por exemplo:
select hmac('Les sanglots longs des violons de l_automne', 'md5', 'sha256');
Retorna 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 a 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 faz uma pesquisa na tabela mysecrets
e retorna o nome do usuário se houver uma correspondência entre a senha fornecida para o aplicativo e as senhas armazenadas na tabela. Por exemplo:
Passe a senha incorreta:
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 inativos (armazenar dados criptografados) no servidor PostgreSQL habilitado para Azure Arc usando a extensão pgcrypto
Postgres, e os seus aplicativos podem usar funções oferecidas por pgcrypto
para manipular esses dados criptografados.
Gerenciamento de funções e usuários do Postgres
Perspectivas gerais
Para configurar funções e usuários no seu servidor PostgreSQL habilitado para Azure Arc, use o modo Postgres padrão para gerenciar funções e usuários. Clique aqui para ler mais detalhes.
Audit
Para cenários de auditoria, configure seu grupo de servidores para usar as extensões pgaudit
do Postgres. Para saber mais sobre pgaudit
, confira o projeto do GitHubpgAudit
. Para habilitar a extensão pgaudit
no grupo de servidores, leia Usar extensões PostgreSQL.
Usar conexão SSL
O SSL é necessário para conexões de cliente. Na cadeia de conexão, o parâmetro do modo SSL não deve ser desabilitado. Formatar cadeias de conexão.
Conteúdo relacionado
- Confira a extensão
pgcrypto
- Confira Usar as extensões PostgreSQL