Compartir a través de


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í:

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.