Cassandra Autenticación y autorización JMX: crear usuario
Hay dos tipos de seguridad en Apache Cassandra y empresa Datastax.
- Autenticación interna
- Autorización
¿Qué es la autenticación y autorización internas?
La autenticación interna consiste básicamente en validar la conexión del usuario. El usuario se autentica con login y contraseña. Todas las cuentas de usuario se administran en Cassandra internamente.
La autorización interna se ocupa del permiso del usuario. Se trata de qué acciones puede realizar el usuario. Por ejemplo, podemos otorgar permisos al usuario, como qué usuario tiene solo permiso de lectura de datos, qué usuario tiene permiso de escritura de datos y qué usuario tiene permiso de eliminación de datos.
Sin embargo, la autenticación también se puede controlar externamente con Kerberos (Kerberos se utiliza para administrar credenciales de forma segura) y LDAP (LDAP se utiliza para almacenar información autorizada sobre las cuentas, como a qué pueden acceder).
La autenticación externa es la autenticación compatible con Kerberos y LDAP. Apache Cassandra no admite autenticación externa.
Solo Datastax Enterprise admite autenticación externa con Kerberos y LDAP. Mientras que la autenticación interna es compatible tanto en Apache Cassandra así como la empresa Datastax.
Configurar autenticación y autorización
In Cassandra, de forma predeterminada, las opciones de autenticación y autorización están deshabilitadas. Tienes que configurar CassandraArchivo .yaml para habilitar la autenticación y autorización.
Abierto CassandraArchivo .yaml y líneas de descomentario que se ocupan de la autenticación y autorización internas.
- In CassandraArchivo .yaml. De manera predeterminada, el valor del autenticador es "AllowAllAuthenticator". Cambie este valor del autenticador de "AllowAllAuthenticator" a "com.datastax.bdp.cassandra.auth.PasswordAuthenticator".
- Del mismo modo, en CassandraArchivo .yaml, de forma predeterminada, el valor del autorizador será 'AllowAllAuthorizor'. Cambie este valor del autorizador de 'AllowAllAuthorizor' a 'com.datastax.bdp.cassandra.auth'.CassandraAutorizador'.
Iniciar sesión
Ahora la autenticación está habilitada, si intenta acceder a cualquier espacio de claves, Cassandra devolverá un error.
De forma predeterminada, Cassandra proporciona la cuenta super con el nombre de usuario 'cassandra' y la contraseña 'cassandra'. Al iniciar sesión en 'Cassandra'cuenta, puedes hacer lo que quieras.
Veamos la siguiente captura de pantalla para esto, donde no le permitirá iniciar sesión si no está utilizando la configuración predeterminada. Cassandra "nombre de usuario y contraseña".
Ahora, en la segunda captura de pantalla, puedes ver después de usar Cassandra credencial de inicio de sesión predeterminada, podrá iniciar sesión.
También puedes crear otro usuario con esta cuenta. Se recomienda cambiar la contraseña predeterminada. Aquí está el ejemplo de inicio de sesión. Cassandra usuario y cambiar la contraseña predeterminada.
alter user cassandra with password 'newpassword';
Crear nuevo usuario
Se pueden crear nuevas cuentas con el 'Cassandra' cuenta.
Para crear un nuevo usuario, inicie sesión, se especifica la contraseña junto con si el usuario es superusuario o no. Sólo el superusuario puede crear nuevos usuarios.
create user robin with password 'manager' superuser; create user robin with password 'newhire';
Puede obtener una lista de todos los usuarios mediante la siguiente sintaxis.
list users;
Los usuarios pueden eliminarse mediante la siguiente sintaxis.
drop user laura;
Autorización
La autorización es la asignación de permiso a los usuarios sobre qué acción puede realizar un usuario en particular.
Aquí está la sintaxis genérica para asignar permisos a los usuarios.
GRANT permission ON resource TO user
Existen los siguientes tipos de permisos que se pueden otorgar al usuario.
- TODOS
- ALTER
- AUTORIZAR
- CREAR
- DROP
- MODIFICAR
- SELECCIONAR
A continuación se muestran ejemplos de asignación de permisos al usuario.
Create user laura with password 'newhire'; grant all on dev.emp to laura; revoke all on dev.emp to laura; grant select on dev.emp to laura;
Se crea un nuevo usuario 'laura' con la contraseña 'newhire'.
Este es el ejemplo en el que el usuario "laura" intenta acceder a la tabla emp_bonus. Laura solo tiene permiso para acceder a dev.emp y no tiene permiso para esta tabla dev.emp_bonus, por eso se devolvió un error.
select* form emp_bonus;
Puede obtener una lista de todos los permisos asignados al usuario. Este es el ejemplo de cómo obtener información de permiso.
list all permissions of laura;
También puede enumerar todos los permisos del recurso. Este es el ejemplo de cómo obtener permiso de una mesa.
list all permissions on dev.emp;
Configurar el cortafuegos
Si el firewall está en ejecución, se deben abrir los siguientes puertos para la comunicación entre nodos, incluidos algunos Cassandra puertos. Si Cassandra los puertos no se abrirán, Cassandra Los nodos actuarán como servidores de bases de datos independientes en lugar de unirse al clúster de bases de datos.
Cassandra Puertos de cliente
Número de puerto | Descripción |
---|---|
9042 | Cassandra Puerto del cliente |
9160 | Cassandra Ahorro del puerto del cliente |
Cassandra Puertos entre nodos
Número de puerto | Descripción |
---|---|
7000 | Cassandra comunicación del grupo de entrenudos |
7001 | Cassandra Comunicación de clúster de entrenodos SSL |
7199 | Cassandra Puerto de monitoreo JMX |
Puertos públicos
Número de puerto | Descripción |
---|---|
22 | puerto SSH |
8888 | Sitio web del Centro de operaciones. Solicitud http del navegador. |
Cassandra Puertos del centro de operaciones
Número de puerto | Descripción |
---|---|
61620 | Puerto de monitoreo de OpsCenter. |
61621 | Puerto del agente de Opscenter |
Habilitación de la autenticación JMX
Con la configuración predeterminada de Cassandra, Solo se puede acceder a JMX desde el host local. Si desea acceder a JMX de forma remota, cambie la configuración LOCAL_JMX en Cassandra-env.sh y habilite la autenticación o SSL.
Después de habilitar la autenticación JMX, asegúrese Centro de operaciones y nodetool están configurados para usar autenticación.
Procedimiento
A continuación se indican los pasos para habilitar la autenticación JMX.
- En el archivo cassandra-env.sh, agregue o actualice las siguientes líneas.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true" JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
Además, cambie la configuración LOCAL_JMX en Cassandra-env.sh
LOCAL_JMX=no
- Copie jmxremote.password.template de /jdk_install_location/lib/management/ a /etc/cassandra/ y cámbiele el nombre a jmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
- Cambie la propiedad de jmxremote.password al usuario que ejecuta Cassandra con y cambiar el permiso para leer solo
chown cassandra:cassandra /etc/cassandra/jmxremote.password chmod 400 /etc/cassandra/jmxremote.password
- Edite jmxremote.password y agregue el usuario y la contraseña para las utilidades compatibles con JMX:
monitorRole QED controlRole R&D cassandra cassandrapassword
- Agregar el Cassandra usuario con permiso de lectura y escritura en /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly cassandra readwrite controlRole readwrite \ create javax.management.monitor.,javax.management.timer. \ unregister
- Reanudar Cassandra
- Ejecute nodetool con el Cassandra usuario y contraseña.
$ nodetool status -u cassandra -pw cassandra
Resum
Este tutorial explica sobre la seguridad en Cassandra y configurando CassandraArchivo .yaml para habilitar la seguridad. Además de esto, también explica cómo se puede crear una nueva cuenta de usuario, la asignación de permisos, la configuración del firewall, etc.