Configuración de la seguridad del servidor PostgreSQL habilitado para Azure Arc
En este documento se describen diversos aspectos relacionados con la seguridad de su grupo de servidores:
- Cifrado en reposo
- Administración de roles y usuarios de Postgres
- Perspectivas generales
- Cambio de la contraseña del usuario administrativo de Postgres
- Auditoría
Nota:
Como característica en versión preliminar, la tecnología que se presenta en este artículo está sujeta a los términos de uso complementarios para las versiones preliminares de Microsoft Azure.
Las actualizaciones más recientes están disponibles en las notas de la versión.
Cifrado en reposo
Puede implementar el cifrado en reposo mediante el cifrado de los discos en los que se almacenan las bases de datos o mediante las funciones de base de datos para cifrar los datos que se insertan o actualizan.
Hardware: cifrado de volumen de host de Linux
Implemente el cifrado de datos del sistema para proteger todos los datos que residen en los discos usados por su configuración de Data Services habilitado para Azure Arc. Puede leer más información sobre este tema aquí:
- Cifrado de datos en reposo en Linux en general
- Cifrado de disco específicamente con el comando LUKS
cryptsetup
(Linux)(https://www.cyberciti.biz/security/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/). Como Data Services habilitado para Azure Arc se ejecuta en la infraestructura física que usted proporciona, se encarga de proteger la infraestructura.
Software: Uso de la extensión pgcrypto
de PostgreSQL en el grupo de servidores
Además de cifrar los discos usados para hospedar la configuración de Azure Arc, puede configurar el servidor PostgreSQL habilitado para Azure Arc para exponer los mecanismos que las aplicaciones pueden usar para cifrar los datos de las bases de datos. La extensión de pgcrypto
forma parte de las extensiones de contrib
de Postgres y está disponible en el servidor PostgreSQL habilitado para Azure Arc. Aquí encontrará detalles sobre la extensión de pgcrypto
.
En resumen, con los siguientes comandos, se habilita la extensión, se crea y se usa:
Cree la extensión de pgcrypto
Conéctese al grupo de servidores con la herramienta cliente que prefiera y ejecute la consulta estándar de PostgreSQL:
CREATE EXTENSION pgcrypto;
Aquí encontrará detalles sobre cómo conectarse.
Comprobación de la lista de las extensiones listas para su uso en el grupo de servidores
Puede comprobar que la extensión de pgcrypto
está lista para usarse mediante la enumeración de las extensiones disponibles en su grupo de servidores.
Conéctese al grupo de servidores con la herramienta cliente que prefiera y ejecute la consulta estándar de PostgreSQL:
select * from pg_extension;
Debería ver pgcrypto
si lo habilitó y lo creó con los comandos indicados anteriormente.
Uso de la extensión de pgcrypto
Ahora puede ajustar el código de las aplicaciones para que utilicen cualquiera de las funciones que ofrece pgcrypto
:
- Funciones hash generales
- Funciones hash de contraseñas
- Funciones de cifrado de PGP
- Funciones de cifrado sin formato
- Funciones de datos aleatorios
Por ejemplo, para generar valores hash. Ejecute el comando:
select crypt('Les sanglots longs des violons de l_automne', gen_salt('md5'));
Devuelve el siguiente valor hash:
crypt
------------------------------------
$1$/9ACBYOV$z52PAGjQ5WTU9xvEECBNv/
O, por ejemplo:
select hmac('Les sanglots longs des violons de l_automne', 'md5', 'sha256');
Devuelve el siguiente valor hash:
hmac
--------------------------------------------------------------------
\xd4e4790b69d2cc8dbce3385ee63272bc7760f1603640bb211a7b864e695570c5
O, por ejemplo, para almacenar datos cifrados como una contraseña:
Una aplicación almacena los secretos en la siguiente tabla:
create table mysecrets(USERid int, USERname char(255), USERpassword char(512));
Cifre su contraseña al crear un usuario:
insert into mysecrets values (1, 'Me', crypt('MySecretPasswrod', gen_salt('md5')));
Observe que la contraseña está cifrada:
select * from mysecrets;
Salida:
- USERid: 1
- USERname: Me
- USERpassword: $1$Uc7jzZOp$NTfcGo7F10zGOkXOwjHy31
Cuando se conecta con la aplicación y pasa una contraseña, buscará en la tabla mysecrets
y devolverá el nombre del usuario si hay una coincidencia entre la contraseña que se proporciona a la aplicación y las contraseñas almacenadas en la tabla. Por ejemplo:
Paso de contraseña equivocada:
select USERname from mysecrets where (USERpassword = crypt('WrongPassword', USERpassword));
Output
USERname --------- (0 rows)
Paso de contraseña correcta:
select USERname from mysecrets where (USERpassword = crypt('MySecretPasswrod', USERpassword));
Salida:
USERname --------- Me (1 row)
En este pequeño ejemplo se muestra que puede cifrar datos en reposo (almacenar datos cifrados) en un servidor PostgreSQL habilitado para Azure Arc mediante la extensión de pgcrypto
de Postgres y las aplicaciones pueden usar las funciones que ofrece pgcrypto
para manipular estos datos cifrados.
Administración de roles y usuarios de Postgres
Perspectivas generales
Para configurar roles y usuarios del servidor PostgreSQL habilitado para Azure Arc, use la manera estándar de Postgres para administrar roles y usuarios. Para obtener más detalles, consulte aquí.
Auditoría
En escenarios de auditoría, configure el grupo de servidores para usar las extensiones pgaudit
de Postgres. Para más información sobre pgaudit
, consulte el proyecto de GitHub pgAudit
. Para habilitar la extensión pgaudit
en el grupo de servidores, lea Uso de extensiones de PostgreSQL.
Uso de la conexión SSL
SSL es necesario para las conexiones de cliente. En la cadena de conexión, el parámetro de modo SSL no debe deshabilitarse. Cadenas de conexión de formulario.
Contenido relacionado
- Consulte Extensión
pgcrypto
. - Consulte Uso de extensiones de PostgreSQL.