Explicación detallada de las capacidades de seguridad 3A de los almacenes de datos

Este artículo se comparte desde la comunidad de la nube de Huawei " Capacidades de seguridad GaussDB (DWS) 3A ", autor: yd_281561943.

1. Introducción

  • Versión aplicable: [8.0.0 (y superior)]

La seguridad de la base de datos se refiere a la tecnología que protege las bases de datos para evitar que usuarios no autorizados roben, alteren y destruyan la información de los datos de la base de datos. La tecnología de seguridad de bases de datos se puede dividir simplemente en tres A:

  • Autenticación: la autenticación resuelve el problema de quién puede entrar (entrada)
  • Autorización: Autorización para solucionar el problema de lo que se puede hacer (trabajo)
  • Auditoría: La auditoría resuelve el problema de lo que se ha hecho (seguimiento)

2. Autenticación——Autenticación

La autenticación de conexión resuelve el problema de si los usuarios pueden iniciar sesión en la base de datos. Este producto admite los siguientes métodos de autenticación:

  • Autenticación basada en host: el servidor verifica el archivo de configuración según la dirección IP del cliente, el nombre de usuario y la base de datos a la que se accederá para determinar si el usuario ha pasado la autenticación.
  • Autenticación de contraseña: incluida la autenticación de contraseña cifrada para conexiones remotas y la autenticación de contraseña no cifrada para conexiones locales.
  • Autenticación de certificado: este modo requiere la configuración de la conexión SSL y el cliente debe proporcionar un certificado SSL válido y no se requiere contraseña de usuario.
  • Autenticación de terceros: ldap, oneaccess, etc.

Todos estos métodos necesitan configurar el archivo "pg_hba.conf", formato de archivo pg_hba.conf, pg_hba consta de varias líneas de registros HBA:

El significado de un registro HBA es qué usuarios (USUARIO) están permitidos, desde qué direcciones IP (DIRECCIÓN), en qué tipo de conexión (TIPO), en qué método de autenticación (MÉTODO) y a qué bases de datos (BASE DE DATOS) conectarse.

Durante la autenticación, los registros en el archivo hba se verifican de abajo hacia abajo para cada solicitud de conexión. Si el registro actual coincide, se devuelve. El orden de los registros HBA es muy crítico. Esta lógica de hba es muy importante y no debe cambiarse fácilmente, de lo contrario causará problemas muy graves.

Caso: Problemas causados ​​por cambios lógicos de hba

Hubo un problema con la conexión ldap. Durante el proceso de actualización, los registros en el archivo pg_hba.conf se ordenaron, lo que provocó que el orden de las líneas de configuración ldap antes y después de la actualización cambiara al final de la línea de configuración sha256. Debido al mecanismo transversal secuencial de pg_hba.conf, después de la actualización, el usuario ldap coincide incorrectamente con la línea de configuración sha256 y la conexión falla.

Para resolver los problemas causados ​​​​por el cambio de orden, la primera versión del plan de modificación es colocar la lógica de juicio de ldap al comienzo del recorrido del bucle: primero mire el tipo de autenticación. Si es autenticación de ldap, juzgue si. El campo de método de la línea de configuración es ldap. Si no, salte a La siguiente línea es hasta que se encuentre que el método es ldap.

Según esta versión del plan de modificación, las conexiones de autenticación ldap coinciden con todos los registros ldap hba. Cuando el usuario se conecta a la base de datos, la conexión puede ser exitosa, pero el negocio no se puede realizar y se informa un mensaje de error: "Nombre de usuario/contraseña no válidos, inicio de sesión denegado". La razón es que cuando los nodos internos ejecutan declaraciones, se realizará la autenticación entre nodos. El tipo de autenticación es de confianza y no se proporcionará ninguna contraseña. Después de la modificación, solo se compararán los registros ldap y el método ldap requiere una contraseña, lo que informa un error.

Antes y después de la actualización, las ubicaciones de las líneas de configuración ldap y sha256 son las siguientes:

Antes de actualizar:
alojar todo @/etc/ldap/ldap_user 0.0.0.0/0 ldap ldapserver=xxx.xxx.xxx.xxx ldapport=xxx ldapprefix="CN=" ldapsuffix="OU=test_dmj_group,DC=com"
alojar todo todo 0.0.0.0/0 sha256
Después de la actualización:
alojar todo todo 0.0.0.0/0 sha256
alojar todo @/etc/ldap/ldap_user 0.0.0.0/0 ldap ldapserver=xxx.xxx.xxx.xxx ldapport=xxx ldapprefix="CN=" ldapsuffix="OU=test_dmj_group,DC=com"

TIPO : el tipo es uno de cuatro tipos: local, host, hostssl y hostnossl.

Respectivamente:

local: solo se permiten conexiones de socket de dominio Unix.

host: permite conexiones TCP/IP y puede coincidir con solicitudes de conexión SSL y no SSL.

hostssl: permite conexiones TCP/IP y solo coincide con solicitudes de conexión SSL.

hostnossl: permite conexiones TCP/IP y solo coincide con solicitudes de conexión que no sean SSL.

BASE DE DATOS : Puede usar all para representar todas las bases de datos, o puede especificar las bases de datos explícitamente separándolas con comas.

USUARIO : Puede utilizar todo para representar a todos los usuarios, o puede especificar usuarios explícitamente separándolos con comas. Puede ser el nombre de un usuario de base de datos específico o un nombre de grupo precedido por +. La marca + en realidad significa "coincidir con cualquier rol que pertenezca directa o indirectamente a este rol", mientras que un nombre sin la marca + solo coincide con ese rol específico.

DIRECCIÓN : La dirección con la que coincide el registro de declaración y a la que permite el acceso. Cuando el tipo es local, significa conexión local y no es necesario especificar ninguna dirección IP.

MÉTODO : Los métodos de autenticación incluyen confianza, rechazo, md5, sha256, ldap, cert, oneaccess, etc.

confianza: lista blanca, que permite conexiones incondicionalmente.

Rechazar: lista negra, rechaza incondicionalmente conexiones.

md5: el método de autenticación de contraseña de pg no es seguro.

sha256: Autenticación de contraseña para gaussdb.

ldap: utilice LDAP para la autenticación de terceros.

cert: modo de autenticación del certificado del cliente. Este modo requiere la configuración de la conexión SSL y requiere que el cliente proporcione un certificado SSL válido. No se requiere contraseña de usuario.

oneaccess: utilice oneaccess para la autenticación de terceros.

3.Autorización——Autorización

Los permisos indican si se permiten las operaciones de un usuario en un objeto de base de datos. Los permisos en GaussDB (DWS) incluyen tres escenarios: permisos del sistema, permisos de objetos de datos y permisos de usuario.

3.1 Permisos del sistema

3.1.1 Separación de poderes

De forma predeterminada, los administradores del sistema con el atributo SYSADMIN tienen la máxima autoridad en el sistema. En la gestión empresarial real, para evitar altos riesgos causados ​​por una concentración excesiva de derechos de los administradores del sistema, se puede configurar la separación de poderes y los permisos del atributo CREATEROLE del administrador del sistema y del atributo AUDITADMIN se otorgan al administrador de seguridad y al administrador de auditoría, respectivamente. .

3.1.2 Autorización de permisos del sistema

Los permisos del sistema también se denominan atributos de usuario, incluidos SYSADMIN, CREATEDB, CREATEROLE, AUDITADMIN e LOGIN.

Los permisos del sistema se pueden autorizar al crear o modificar roles o usuarios. En la opción CREATE/ALTER ROLE/USER nombre_usuario [CON], se pueden configurar los siguientes campos para implementar la autorización de permisos del sistema.

SYSADMIN | NOSYSADMIN

Determine si una nueva función es "administrador del sistema". La función con el atributo SYSADMIN tiene la máxima autoridad en el sistema. El valor predeterminado es NOSYSADMIN.

AUDITADMIN | NOAUDITADMIN

Defina si el rol tiene atributos de gestión de auditoría. El valor predeterminado es NOAUDITADMIN.

CREADOB | NOCRADOB

Determina si un nuevo rol puede crear bases de datos. El nuevo rol no tiene permiso para crear bases de datos. El valor predeterminado es NOCREADOB.

CREATEROLA | NOCREATEROL

Determina si un rol puede crear nuevos roles (es decir, ejecutar CREATE ROLE y CREATE USER). Un rol con permisos CREATEROLE también puede modificar y eliminar otros roles. El valor predeterminado es NOCREATEROLE.

INICIAR SESIÓN | NOLOGIN

Sólo los roles con el atributo LOGIN pueden iniciar sesión en la base de datos. Un rol con el atributo LOGIN puede considerarse usuario. El valor predeterminado es NOLOGIN.

3.2 Permisos de objetos de datos

Los objetos de datos incluyen tablas y vistas, campos designados, bases de datos, funciones, esquemas, etc. Operaciones como crear, agregar, eliminar, modificar y consultar son permisos de objetos de datos. El formato de sintaxis de autorización es: OTORGAR [privilegios] EN [objetos] A [usuarios], y el formato de sintaxis de revocación de permisos es REVOCAR [privilegios] EN [objetos] DE [usuarios].

3.3 Permisos de usuario

3.3.1 Autorización de derechos de usuario

Otorgue los permisos de un rol o usuario a uno o más roles o usuarios. Un rol o usuario autorizado tiene los permisos del rol o usuario autorizado. Cuando se declara CON OPCIÓN DE ADMINISTRADOR, el usuario autorizado puede otorgar el permiso nuevamente a otros roles o usuarios y revocar todos los permisos heredados por el rol o usuario. Cuando se cambia o revoca un rol o usuario autorizado, los permisos de todos los usuarios que heredan el rol o los permisos de usuario se cambiarán en consecuencia. El formato de sintaxis es OTORGAR rol AL usuario.

3.3.2 Roles preestablecidos

GaussDB (DWS) proporciona un conjunto de roles preestablecidos, cuyo nombre comienza con "gs_role_". Estos roles preestablecidos tienen algunos permisos fijos. Cuando algunos usuarios necesitan realizar operaciones relacionadas, solo necesitan otorgarles los roles preestablecidos. Las funciones preestablecidas actuales de GaussDB (DWS) son las siguientes:

4.Auditoría——Auditoría

La auditoría se refiere al registro del inicio de sesión y la salida del usuario, así como el comportamiento y las operaciones en la base de datos después del inicio de sesión, de modo que el administrador de seguridad de la base de datos pueda utilizar esta información de registro para averiguar el usuario, la hora y el contenido de las operaciones ilegales.

4.1 Establecer elementos de configuración de auditoría

Para permitir que la base de datos audite una determinada función, debe activar el interruptor principal de auditoría (audit_enabled) y el interruptor del elemento de auditoría correspondiente (audit_operation_exec). Ambos admiten la carga dinámica. La modificación del valor de este elemento de configuración durante la operación de la base de datos tendrá efecto. Inmediatamente no es necesario reiniciar la base de datos.

Hay dos puntos a tener en cuenta: primero, si audita operaciones ddl, debe configurar audit_system_object para auditar las operaciones ddl de un objeto específico. Segundo, si audita una transacción, si las operaciones dentro de la transacción se auditan depende de si. Se configuran elementos de configuración específicos. Control de parámetros de los elementos de auditoría:

4.2 Ver registros de auditoría

El comando de consulta de auditoría es pgxc_query_audit:

seleccione * de pgxc_query_audit(hora de inicio de marca de tiempo, hora de finalización de marca de tiempo, registro de auditoría);

starttime y endtime respectivamente representan la hora de inicio y finalización del registro de auditoría. audit_log representa la nueva ruta del archivo físico del registro de auditoría que se está viendo. Cuando no se especifica audit_log, la información del registro de auditoría conectada a la instancia actual se ve de forma predeterminada. Los resultados de la consulta de auditoría son los siguientes:

postgres=# crear tabla t1(id int);
ERROR: la relación "t1" ya existe
postgres=# select * from pgxc_query_audit('2021-03-21','2021-03-30') orden por límite de descripción de hora de finalización 1;
-[ GRABAR 1 ]---+--------------------------------
hora de inicio | 2021-03-21 11:49:41.643+08
hora de finalización | 2021-03-21 11:49:41.652+08
tipo_operación | ddl
tipo_auditoría | ddl_table
resultado | fallido
nombre de usuario | perfadm
base de datos | postgres
client_conninfo | gsql@[local]
nombre_objeto | t1
texto_comando | crear tabla t1 (id int);
información_detalle | la relación "t1" ya existe
transacción_xid | 0
id_consulta | 1062177
nombre_nodo | cn_5001
thread_id | 139916885260032@669613657906735
puerto_local | 6000
puerto_remoto |

5. Otras tecnologías de seguridad del almacén de datos

Visualización de seguridad de datos: desensibilización de datos, control de acceso a nivel de fila.

Almacenamiento de seguridad de datos: cifrado de almacenamiento de datos, cifrado transparente.

 

Haga clic para seguir y conocer las nuevas tecnologías de Huawei Cloud lo antes posible ~

Un programador nacido en los años 90 desarrolló un software de portabilidad de vídeo y ganó más de 7 millones en menos de un año. ¡El final fue muy duro! Los estudiantes de secundaria crean su propio lenguaje de programación de código abierto como una ceremonia de mayoría de edad: comentarios agudos de los internautas: debido al fraude desenfrenado, confiando en RustDesk, el servicio doméstico Taobao (taobao.com) suspendió los servicios domésticos y reinició el trabajo de optimización de la versión web Java 17 es la versión Java LTS más utilizada. Cuota de mercado de Windows 10. Alcanzando el 70%, Windows 11 continúa disminuyendo. Open Source Daily | Google apoya a Hongmeng para hacerse cargo de los teléfonos Android de código abierto respaldados por Docker; Electric cierra la plataforma abierta Apple lanza el chip M4 Google elimina el kernel universal de Android (ACK) Soporte para la arquitectura RISC-V Yunfeng renunció a Alibaba y planea producir juegos independientes en la plataforma Windows en el futuro
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/11093720
Recomendado
Clasificación