LindormTSDB protege sus datos mediante un control de acceso multicapa. En el nivel del motor, el control de acceso se aplica a través de la autenticación de usuarios y la verificación de permisos; esta función está deshabilitada de forma predeterminada. Este tema explica cómo habilitar la autenticación, agregar credenciales a las conexiones de cliente y comprender el modelo de permisos.
Control de acceso en LindormTSDB
LindormTSDB aplica el control de acceso en tres capas:
RAM: Resource Access Management (RAM) de Alibaba Cloud determina qué cuentas de Alibaba Cloud pueden acceder a la instancia.
Capa física: listas de permitidos de IP a nivel de instancia. Para más detalles, consulte Configure whitelists.
Capa lógica: autenticación de usuarios y verificación de permisos a nivel del motor. Este tema aborda ambos aspectos.
Antes de habilitar la autenticación
Al habilitar la autenticación, fallan todas las conexiones de servicio existentes que no incluyan credenciales. Antes de habilitarla, complete los siguientes pasos:
Compruebe las credenciales del usuario inicial. Cada instancia de Lindorm incluye un usuario inicial. En las instancias con LindormTSDB 3.4.30 o versiones anteriores, tanto el nombre de usuario como la contraseña predeterminados son
root. En versiones posteriores, ambos valores sonroot_tsdb. Cambie la contraseña inmediatamente después de crear la instancia.Actualice todas las cadenas de conexión de las aplicaciones para incluir las credenciales.
Planifique los reinicios del servicio. Una vez habilitada la autenticación, cualquier servicio en ejecución que no incluya credenciales en su conexión dejará de funcionar. Programe las ventanas de mantenimiento correspondientes.
Habilitar la autenticación
Ejecute la siguiente instrucción SQL para habilitar la autenticación:
ALTER SYSTEM SET USER_AUTH=TRUE;
Para comprobar que la autenticación está habilitada:
SHOW PARAMETER USER_AUTH;
Para deshabilitar la autenticación, ejecute ALTER SYSTEM SET USER_AUTH=FALSE;. Al deshabilitar la autenticación se eliminan todos los controles de acceso y la instancia queda expuesta a riesgos de seguridad. Mantenga la autenticación habilitada en entornos de producción.
Conectarse con credenciales
Una vez habilitada la autenticación, todas las conexiones de cliente deben incluir un nombre de usuario y una contraseña. Además, el usuario que se conecta debe contar con los permisos adecuados sobre la base de datos o tabla de destino.
lindorm-cli
lindorm-cli -url <Endpoint for LindormTSDB SQL> -username <Username> -password <Password> -database <Database name>
Para más detalles, consulte Use Lindorm-cli to connect to and use LindormTSDB.
JDBC
String url = "<Endpoint for LindormTSDB SQL>";
String username = "<Username>";
String password = "<Password>";
Connection conn = null;
try {
conn = DriverManager.getConnection(url, username, password);
// Perform operations after the client is connected to LindormTSDB.
} catch (SQLException e) {
e.printStackTrace();
}
Para más detalles, consulte Tutorial: Use the JDBC driver for Lindorm to connect to and use LindormTSDB.
Pool de conexiones de Druid
dataSource.setDriver(DriverManager.getDriver("<Endpoint for LindormTSDB SQL>"))
dataSource.setUrl("<Endpoint for LindormTSDB SQL>")
dataSource.setUsername("<Username>")
dataSource.setPassword("<Password>")
Para más detalles, consulte Tutorial: Use the Druid connection pool to connect to LindormTSDB.
API HTTP
Las aplicaciones que utilizan operaciones de la API HTTP compatible con OpenTSDB deben incluir las credenciales en el encabezado Authorization como una cadena codificada en Base64.
En el siguiente ejemplo se construye el encabezado de autorización y se envía una solicitud SQL:
import base64
import requests
url = "<HTTP Endpoint for LindormTSDB>/api/v2/sql"
username = "<Username>"
password = "<Password>"
# Encode credentials as Base64
credentials = base64.b64encode(f"{username}:{password}".encode()).decode()
headers = {
"Content-Type": "text/plain",
"Authorization": f"Basic {credentials}"
}
response = requests.post(url, headers=headers, data="SELECT * FROM my_table LIMIT 10")
print(response.json())
Si sus aplicaciones usan los SDK de TSDB, pase las credenciales mediante el método basicAuth al crear un objeto TSDBConfig.
Para consultar la especificación completa de autenticación, consulte Specify user credentials for authentication. Para conocer los detalles del formato de solicitud, consulte Request content.
Modelo de permisos
Tipos de permisos
LindormTSDB define cuatro tipos de permisos:
|
Permiso |
Descripción |
|
READ |
Obligatorio para consultar datos de las tablas. |
|
WRITE |
Obligatorio para escribir datos en las tablas. |
|
ADMIN |
Obligatorio para gestionar objetos de datos (crear, modificar o eliminar bases de datos y tablas). |
|
SYSTEM |
Obligatorio para las operaciones a nivel de instancia que afectan a toda la instancia. |
Los permisos efectivos de un usuario corresponden a la unión de todos los permisos otorgados. Por ejemplo, un usuario con GLOBAL READ y DATABASE READ en DB1 puede consultar datos en todas las bases de datos.
Ámbitos de los permisos
Los permisos se otorgan en uno de estos dos ámbitos:
GLOBAL: se aplica a todas las bases de datos y tablas de la instancia. Un usuario con GLOBAL READ puede consultar cualquier tabla de series temporales en cualquier base de datos.
DATABASE: se aplica a todas las tablas dentro de una base de datos específica. Un usuario con READ en
DB1puede consultar cualquier tabla de series temporales enDB1.
Reglas de autorización
El ámbito del permiso SYSTEM siempre es GLOBAL. No se puede limitar a una sola base de datos.
Solo los usuarios con permisos GLOBAL ADMIN o SYSTEM pueden crear, eliminar, modificar o autorizar usuarios.
Gestionar usuarios y permisos
Usar SQL
Utilice las siguientes instrucciones SQL para gestionar usuarios y permisos:
|
Tarea |
Referencia de SQL |
|
Crear un usuario |
|
|
Eliminar un usuario |
|
|
Cambiar la contraseña de un usuario |
|
|
Listar todos los usuarios |
|
|
Otorgar permisos |
|
|
Revocar permisos |
Usar el sistema de gestión del clúster
Los datos de usuarios y permisos se comparten entre LindormTSDB y LindormTable. Si LindormTable está activado, inicie sesión en el sistema de gestión del clúster de LindormTable para gestionar usuarios y permisos. Para más detalles, consulte Log on to the cluster management system.
El sistema de gestión del clúster admite el permiso TRASH, el cual no se utiliza en LindormTSDB.
Si un namespace de LindormTable tiene el mismo nombre que una base de datos de LindormTSDB, cualquier usuario con permisos sobre ese namespace obtendrá automáticamente acceso a la base de datos homónima en LindormTSDB.
Referencia de permisos
Permisos obligatorios para las instrucciones SQL
La siguiente tabla muestra los permisos necesarios para ejecutar las instrucciones SQL más comunes. Para identificar los permisos de una instrucción específica, ubique su fila y compruebe qué columnas están marcadas con ○.
○ = obligatorio, × = no obligatorio.
|
Instrucción SQL |
GLOBAL READ |
GLOBAL WRITE |
GLOBAL ADMIN |
GLOBAL SYSTEM |
DATABASE READ |
DATABASE WRITE |
DATABASE ADMIN |
|
|
○ |
× |
× |
× |
○ |
× |
× |
|
|
× |
○ |
× |
× |
× |
○ |
× |
|
|
○ |
○ |
× |
× |
○ |
○ |
× |
|
|
× |
× |
○ |
× |
× |
× |
○ |
|
|
× |
× |
○ |
× |
× |
× |
× |
|
|
× |
× |
○ |
× |
× |
× |
○ |
|
|
× |
× |
○ |
× |
× |
× |
○ |
|
|
× |
× |
○ |
× |
× |
× |
× |
|
|
○ |
× |
× |
× |
○ |
× |
× |
|
|
× |
× |
○ |
× |
× |
× |
○ |
|
|
× |
× |
○ |
× |
× |
× |
○ |
|
|
× |
× |
○ |
○ |
× |
× |
× |
|
|
× |
× |
○ |
○ |
× |
× |
× |
|
|
× |
× |
○ |
○ |
× |
× |
× |
|
|
× |
× |
○ |
○ |
× |
× |
× |
|
|
× |
× |
○ |
○ |
× |
× |
× |
|
|
× |
× |
○ |
○ |
× |
× |
× |
|
|
× |
× |
○ |
○ |
× |
× |
× |
|
|
× |
× |
× |
○ |
× |
× |
× |
|
|
× |
× |
× |
○ |
× |
× |
× |
INSERT INTO...SELECT... requiere el permiso WRITE en la tabla de destino y READ en la tabla de origen.
Permisos obligatorios para las operaciones de la API HTTP compatible con OpenTSDB
Todas las operaciones de la API HTTP compatible con OpenTSDB requieren permisos de ámbito GLOBAL. ○ = obligatorio, × = no obligatorio.
|
Operación de API |
GLOBAL WRITE |
GLOBAL READ |
GLOBAL ADMIN |
|
|
○ |
× |
× |
|
|
× |
○ |
× |
|
|
× |
○ |
× |
|
|
○ |
× |
× |
|
|
× |
○ |
× |
|
|
× |
○ |
× |
|
|
× |
○ |
× |
|
|
× |
○ |
× |
|
|
× |
○ |
× |
|
|
× |
× |
○ |
|
|
× |
× |
○ |