El camino hacia la seguridad de los datos: aplicación de gestión de roles y usuarios de Databend

Databend actualmente admite modelos de control de acceso basado en roles (RBAC) y control de acceso discrecional (DAC) para la funcionalidad de control de acceso.

A través de esta guía, comprenderemos los conceptos básicos de permisos y roles en Databend, así como también cómo administrar roles, heredar roles y establecer jerarquías, establecer roles predeterminados y la importancia de la propiedad. Estas funciones permiten a los usuarios configurar y administrar de manera flexible los permisos de acceso a datos de acuerdo con las necesidades reales, simplificando la complejidad de la administración de permisos y mejorando la eficiencia del control de seguridad de los datos.

concepto basico

Cuando un usuario accede a un objeto de datos en Databend, se le deben otorgar los permisos o roles apropiados, o debe tener la propiedad del objeto de datos. Los objetos de datos pueden hacer referencia a varios elementos, como bases de datos, tablas, vistas, etapas o UDF.

  • El privilegio juega un papel crucial al interactuar con objetos de datos en Databend. Estos permisos, como lectura, escritura y ejecución, brindan un control preciso sobre el comportamiento del usuario, lo que garantiza la coherencia con las necesidades del usuario y mantiene la seguridad de los datos.
  • Los roles simplifican el control de acceso. Los roles son conjuntos predefinidos de permisos asignados a los usuarios, lo que simplifica la gestión de permisos. Los administradores pueden clasificar a los usuarios según sus responsabilidades y otorgar permisos de manera eficiente sin necesidad de una configuración separada.
  • La propiedad es un permiso independiente en Databend y se utiliza para controlar el acceso a los datos. Cuando un usuario toma posesión de un objeto de datos, el usuario tiene el nivel más alto de control sobre el objeto de datos. Este modelo de propiedad directa permite a los usuarios gestionar sus propios datos de forma más directa.

Tipo de permiso

Los usuarios necesitan permisos específicos para realizar operaciones específicas en Databend. Por ejemplo, para consultar una tabla, el usuario necesita al menos el permiso SELECCIONAR en la tabla y para leer el conjunto de datos en el escenario, el usuario necesita al menos el permiso LEER en el escenario.

Los objetos actualmente asumidos por tipos de permisos incluyen DB, Table, UDF, STAGE

Permisos Tipo de objeto describir
TODO global Otorga todos los permisos sobre el tipo de objeto especificado.
ALTERAR global, base de datos, tabla, vista Modificar base de datos, tabla, usuario o UDF.
CREAR global, base de datos, tabla Cree una base de datos, tabla o UDF.
BORRAR superficie Eliminar o truncar filas de la tabla.
GOTA global, base de datos, tabla, vista Suelte una base de datos, tabla, vista o UDF. Restaurar tablas eliminadas.
INSERTAR superficie Inserte filas en la tabla.
SELECCIONAR Tabla de base de datos Seleccione filas de la tabla. Mostrar o utilizar la base de datos.
ACTUALIZAR superficie Actualizar filas en la tabla.
CONCEDER situacion general Otorgar/revocar permisos de usuarios o roles.
SÚPER tabla global Terminar la consulta. Establecer la configuración global. Optimizar tablas. Tabla de Análisis. Operar etapas (enumerar etapas. Crear, eliminar etapas), directorios o recursos compartidos.
USO situacion general Sinónimo de "sin permisos".
CREAR PAPEL situacion general Creando un rol.
SOLTAR PAPEL situacion general Eliminar el rol.
CREAR USUARIO situacion general Crear usuario SQL.
SOLTAR USUARIO situacion general Eliminar usuario SQL.
ESCRIBIR Escenario Escribe al escenario.
LEER Escenario Leer etapa.
USO UDF Utilice UDF.

Para otorgar TODOS los permisos a una tabla a un usuario/rol es el siguiente:

grant all on db_name.table_name to role <role_name>;
grant all on db_name.table_name to <user_name>;

rol de gestión

Los roles juegan un papel vital en Databend y simplifican la gestión de permisos. Cuando varios usuarios requieren el mismo conjunto de permisos, otorgar permisos individualmente puede resultar engorroso. Los roles proporcionan una solución al permitir que se asigne un conjunto de permisos a un rol, que luego se puede asignar fácilmente a varios usuarios.

Por ejemplo, al principio, si el usuario quiere que el usuario u1 lea los datos de las tablas db.t y db.t2, debe ejecutar el siguiente SQL:

grant select on db.t to u1;
grant select on db.t2 to u1;

En este momento, el nuevo usuario u2 también necesita leer los datos de db.t y db.t2, y el administrador debe continuar ejecutando el siguiente SQL:

grant select on db.t to u2;
grant select on db.t2 to u2;

Si hay un flujo continuo de nuevos usuarios que necesitan leer los mismos objetos, el administrador se verá inmerso en esta engorrosa gestión de derechos de usuario y es muy probable que una mala operación conduzca al acceso. Estas tediosas operaciones se pueden optimizar mediante roles:

-- 将 db.t 和 db.t2 的读取权限授权给角色 role1
grant select on db.t to role role1;
grant select on db.t2 to role role1;
-- 将 role1 的权限授予 u1
grant role role1 to u1;
-- 将 role1 的权限授予 u2
grant role role1 to u2;

Si desea consultar más tablas como t3, solo necesita autorizar role1 una vez y todos los usuarios a los que se les concede role1 pueden leer la tabla t3.

-- 执行此 grant 后,u1 和 u2 可以读取 t3 的数据
grant select on db.t3 to role role1;

Databend admite la consulta de información de usuarios y roles, consulte Usuarios y roles .

Roles integrados

Databend presenta dos roles integrados:

  • account-admin: Tiene todos los permisos, actúa como rol principal para todos los demás roles y permite cambiar sin problemas a cualquier rol dentro del inquilino.
  • public: No hereda ningún permiso, trata todos los roles como roles principales y permite que cualquier rol cambie al rol público.

Para asignar un rol a un usuario en Databend Cloud account-admin, seleccione el rol al invitar al usuario. También puede asignar roles después de que los usuarios se unan. Si está utilizando Databend Community o Enterprise Edition, primero configure un account-adminusuario durante la implementación y luego asigne roles a otros usuarios según sea necesario. Para obtener más información sobre cómo configurar usuarios administradores, consulte Configuración de usuarios administradores .

Heredar roles y crear jerarquías

Los roles de Databend introducen un mecanismo poderoso a través de la delegación de roles, lo que permite que un rol herede los permisos y responsabilidades de otro rol. Esto ayuda a crear una jerarquía flexible, similar a una estructura organizativa, donde hay dos roles integrados : el rol de nivel más alto es account-adminy el rol de nivel más bajo es public.

Considere un escenario donde se crean tres roles: gerente , ingeniero y pasante . En este ejemplo, el rol de interno se otorga al rol de ingeniero . Por lo tanto, los ingenieros no sólo tienen su propio conjunto de permisos, sino que también heredan los permisos asociados con el rol interno . Ampliando aún más esta jerarquía, si el rol de ingeniero se otorga a un gerente , el gerente ahora tiene los permisos inherentes de los roles de ingeniero y pasante .

Establecer rol predeterminado

Cuando a un usuario se le otorgan múltiples roles, puede usar el comando CREATE USER o ALTER USER para establecer un rol predeterminado para el usuario. El rol predeterminado determina el rol que se asigna automáticamente a un usuario al inicio de una sesión:

  • Los usuarios pueden cambiar a otros roles dentro de una sesión usando el comando SET ROLE .
  • Los usuarios pueden usar el comando MOSTRAR ROLES para verificar sus roles actuales y ver todos los roles que se les otorgan.
  • Si no establece explícitamente una función predeterminada para un usuario, Databend utilizará de forma predeterminada la función incorporada publiccomo función predeterminada.

Por ejemplo, otorgue el rol dba al usuario xiaoming y establezca el rol dba como rol predeterminado de xiaoming.

grant role dba to user xiaoming;
alter user xiaoming with DEFAULT_ROLE = dba;

propiedad

En pocas palabras, propiedad significa que una determinada función posee por completo un determinado objeto de datos. Tener propiedad significa que el rol puede realizar cualquier operación de acceso al objeto de datos (incluida la eliminación del objeto de datos).

La propiedad sólo actuará según el rol y es única. Por lo tanto, otorgar propiedad o revocar la propiedad de un objeto de datos a un usuario no son operaciones admitidas.

-- 在 Databend 中为非法操作
grant ownership on db.t to user u1;
revoke ownership on db.t from user u1;

La propiedad facilita la autorización. Siempre que sea un objeto de datos creado por el usuario actual, se puede acceder a él directamente. No es necesario realizar operaciones de autorización en el mismo objeto de datos repetidamente:

-- 由管理员进行用户和角色的创建,并且将角色授予对应的用户
create role role1;
create user u1 identified by '123' with DEFAULT ROLE 'role1';
grant create on db.* to role role1;
grant role role1 to u1;

-- u1 登陆数据库后,此时 role1 已经被授予了 u1 ,所以u1 可以访问自己在 db 下创建的表:
u1> create table db.t(id int);
u1> insert into db.t values(1);
u1> select * from db.t;
u1> select * from db.t_old_exists -- 失败,因为该表的 owner 并不是角色 role1

En este momento, si u2 también quiere acceder a los recursos creados por u1, el administrador solo necesita ejecutar un SQL:

-- 管理员将角色 role1 授予用户 u2
grant role role1 to u2;

Cuando ya no queremos que u1 acceda a estos objetos, el administrador solo necesita ejecutar un SQL:

-- 管理员撤销用户 u1 的角色 role1
revoke role role1 from u1;

Puede utilizar MOSTRAR GRANTS para ver información detallada sobre usuarios y roles.

Nota : La propiedad es un permiso especializado que indica que una función posee totalmente un objeto de datos específico dentro de Databend (que actualmente incluye bases de datos, tablas, UDF y etapas). La propiedad de un objeto de datos se otorga automáticamente al rol actual del usuario que lo creó. Los usuarios que comparten el mismo rol también tienen propiedad del objeto y posteriormente pueden otorgar propiedad del objeto de datos a otros roles a través del administrador (consulte el comando GRANT ).

  • La propiedad solo se puede otorgar a roles; no se permite otorgar propiedad a los usuarios. Una vez transferido de un rol a otro, la propiedad se transfiere al nuevo rol.
  • Si se elimina la función que posee la propiedad de un objeto, account_admin puede otorgar la propiedad del objeto a otra función.
  • No se puede otorgar propiedad a defaultuna tabla en la base de datos porque account_adminpertenece a una función integrada.

Por razones de seguridad, no se recomienda otorgar propiedad a roles integrados public. Si un usuario tiene el rol al crear un objeto public, todos los usuarios tendrán la propiedad del objeto porque cada usuario de Databend tiene publicel rol de forma predeterminada. Databend recomienda crear y asignar roles personalizados a los usuarios en lugar de utilizar publicroles para administrar claramente la propiedad. El siguiente ejemplo account-adminasigna roles a usuarios nuevos y existentes:

-- 将默认角色 account_admin 授予现有用户作为 root
root ALTER USER u1 WITH DEFAULT_ROLE = 'account_admin';
root grant role u1 to writer;

-- 作为 root 创建一个默认角色为 account_admin 的新用户
root create user u2 identified by '123' with DEFAULT_ROLE='account_admin';
root grant role account_admin to u2;

La eliminación de un objeto de datos revoca la propiedad del objeto de datos del rol de propietario. Restaurar (UNDROP, si está disponible) un objeto de datos eliminado no restaurará la propiedad. En este caso, deberá account_adminvolver a otorgar propiedad al rol.

Conclusión

A través de la gestión de permisos y roles, Databend proporciona un marco flexible de control y gestión de la seguridad de los datos. Permite a los usuarios gestionar eficientemente el acceso a los datos y los permisos de operación según sus propias necesidades. Garantizar la seguridad e integridad de los datos.

Linus tomó el asunto en sus propias manos para evitar que los desarrolladores del kernel reemplacen las pestañas con espacios. Su padre es uno de los pocos líderes que puede escribir código, su segundo hijo es el director del departamento de tecnología de código abierto y su hijo menor es un núcleo. Colaborador de código abierto Huawei: tomó 1 año convertir 5000 aplicaciones móviles de uso común Migración completa a Hongmeng Java es el lenguaje más propenso a vulnerabilidades de terceros Wang Chenglu, el padre de Hongmeng: el código abierto Hongmeng es la única innovación arquitectónica. En el campo del software básico en China, Ma Huateng y Zhou Hongyi se dan la mano para "eliminar rencores". Ex desarrollador de Microsoft: el rendimiento de Windows 11 es "ridículamente malo " " Aunque lo que Laoxiangji es de código abierto no es el código, las razones detrás de él. Son muy conmovedores. Meta Llama 3 se lanza oficialmente. Google anuncia una reestructuración a gran escala.
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/5489811/blog/11051868
Recomendado
Clasificación