Compartir vía


Tutorial: Concesión de acceso de proyecto y base de datos a un nuevo usuario

Importante

El escalado automático de Lakebase está en Beta en las siguientes regiones: eastus2, westeurope, westus.

El escalado automático de Lakebase es la versión más reciente de Lakebase con proceso de escalado automático, escalado a cero, bifurcación y restauración instantánea. Para ver la comparación de características con Lakebase Provisioned, consulte Elección entre versiones.

Aprenda a configurar un nuevo usuario con acceso al proyecto y la base de datos de Lakebase. En este tutorial se tratan los permisos de nivel de proyecto (para administrar recursos de Lakebase) y los permisos de nivel de base de datos (para acceder a los datos a través de Postgres).

Acerca de los dos sistemas de permisos

Lakebase Postgres usa dos capas de permisos:

  1. Permisos de proyecto (ACL): controle las acciones de nivel de plataforma, como la creación de ramas, la administración de procesos y la administración de la configuración del proyecto. Se administran a través de la aplicación Lakebase.

  2. Permisos de rol de Postgres: controle el acceso a los datos dentro de la propia base de datos. Se administran mediante comandos estándar de Postgres GRANT .

Estos sistemas no tienen sincronización automática. Puede conceder estos permisos de forma independiente o conjunta, en función de los requisitos de su organización:

  • Conceda ambas capas a los usuarios que necesitan acceso a la plataforma y acceso a la base de datos.
  • Conceda solo permisos de proyecto a los usuarios que administran la infraestructura, pero no necesitan consultar datos.
  • Conceda solo acceso a la base de datos a los usuarios que necesitan consultar datos, pero no es necesario administrar los recursos de Lakebase (pueden conectarse mediante herramientas como psql con detalles de conexión).

En este tutorial se muestra cómo configurar ambas capas de acceso:

  • Conceda permisos de proyecto para que los usuarios puedan trabajar con recursos de la plataforma Lakebase (en este tutorial se usa CAN MANAGE para el acceso completo).
  • Creación de un rol de Postgres con privilegios de base de datos adecuados para conectarse a la base de datos y consultarla

Permisos predeterminados

Todos los usuarios del área de trabajo heredan el permiso CAN CREATE de forma predeterminada, lo que permite ver y crear proyectos. Para conceder acceso adicional a los recursos y bases de datos del proyecto, debe asignar explícitamente permisos adicionales.

Prerrequisitos

  • Un proyecto de Lakebase con una base de datos
  • Administrador del área de trabajo o permiso de gestión en el proyecto
  • Identidad de Azure Databricks (dirección de correo electrónico) del usuario en la misma área de trabajo donde se creó el proyecto

Escenario: Adición de un analista de datos con acceso de lectura y escritura

Veamos cómo agregar un analista de datos denominado Alex Lopez quién necesita:

  • Capacidad de crear y administrar ramas, computadoras y bases de datos (CAN MANAGE)
  • Acceso de lectura y escritura a tablas en el esquema public de tu base de datos Postgres
  • Capacidad de crear nuevas tablas para el análisis

Paso 1: Conceder permisos de proyecto

En primer lugar, conceda al usuario el permiso CAN MANAGE para que pueda realizar acciones de administración de proyectos.

  1. Dirígete a tu proyecto en la aplicación Lakebase.
  2. Haga clic en Configuración en la barra lateral izquierda.
  3. Desplácese hasta la sección Permisos del proyecto .
  4. Haga clic en Conceder permiso.
  5. Busque y seleccione el usuario.
  6. Seleccione el permiso de CAN MANAGE.
  7. Haga clic en Conceder.

Concesión del permiso CAN MANAGE

Lo que CAN MANAGE permite:

  • Creación y eliminación de ramas
  • Administrar los procesos y configurar las opciones del proyecto
  • Creación y administración de bases de datos y roles de Postgres
  • Control total sobre las operaciones del proyecto

Nota:

CAN MANAGE concede control total sobre el proyecto, incluidas muchas otras acciones. Para obtener una lista completa de todos los niveles de permisos y acciones específicas que permite cada una de ellas, consulte ACL de proyecto de Lakebase.

Paso 2: Creación de un rol de Postgres para el usuario

Ahora cree un rol de OAuth que permita a Alex autenticarse mediante su identidad de Azure Databricks con tokens de OAuth. Como propietario del proyecto, tiene los permisos necesarios para crear roles.

  1. Abra el Editor de SQL de Lakebase y conéctese al proyecto.

  2. Cree la databricks_auth extensión (si aún no está habilitada):

    CREATE EXTENSION IF NOT EXISTS databricks_auth;
    
  3. Use la databricks_create_role función para crear el rol de OAuth Postgres para Alex:

    SELECT databricks_create_role('alex.lopez@databricks.com', 'USER');
    

Esto crea un rol de OAuth que:

  • Tiene el mismo nombre que su identidad de Azure Databricks (alex.lopez@databricks.com)
  • Puede autenticarse mediante tokens de OAuth
  • Tiene privilegios login
  • Todavía no tiene permisos de base de datos (se concederán a continuación).

Nota:

Acerca de los roles de OAuth:

  • Los roles de OAuth se autentican mediante tokens de tiempo limitado (expiran después de 1 hora)
  • Los usuarios obtienen tokens del cuadro de diálogo de conexión de la aplicación lakebase
  • Ideal para sesiones interactivas y flujos de trabajo integrados en el área de trabajo
  • Para más información, consulte Acerca de la autenticación.

Paso 3: Concesión de permisos de base de datos de Postgres

Ahora conceda a Alex los permisos de base de datos que necesitan. Se les dará acceso de lectura-escritura al esquema public.

-- Grant CONNECT permission on the database
GRANT CONNECT ON DATABASE databricks_postgres TO "alex.lopez@databricks.com";

-- Grant USAGE permission on the public schema (required to access objects in it)
GRANT USAGE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant CREATE permission on the public schema (allows creating new tables)
GRANT CREATE ON SCHEMA public TO "alex.lopez@databricks.com";

-- Grant read-write access to all existing tables in public schema
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future tables (so Alex can access new tables automatically)
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "alex.lopez@databricks.com";

-- Grant permission to use sequences (needed for SERIAL columns)
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO "alex.lopez@databricks.com";

-- Grant permissions on future sequences
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT USAGE, SELECT ON SEQUENCES TO "alex.lopez@databricks.com";

Lo que permiten estos permisos:

  • CONNECT: conexión a la base de datos
  • USAGE en esquema: Acceder a objetos dentro del esquema
  • CREATE en el esquema: Crear nuevas tablas, vistas, funciones
  • SELECT, INSERT, UPDATE, DELETE en tablas: lectura y escritura de datos
  • Permisos de secuencia: utiliza columnas de incremento automático

Paso 4: Probar la conexión

Compruebe que Alex puede conectarse y acceder a la base de datos.

Con el Editor de SQL de Lakebase:

  1. Alex abre la aplicación Lakebase y navega al proyecto.

  2. Alex abre el Editor de SQL de Lakebase.

  3. En el Editor de SQL, Alex debería poder ejecutar las siguientes consultas para comprobar los permisos:

    -- Check role memberships
    SELECT rolname FROM pg_roles WHERE rolname = 'alex.lopez@databricks.com';
    
    -- Verify can read data
    SELECT * FROM your_table LIMIT 5;
    
    -- Verify can write data
    INSERT INTO your_table (column1, column2) VALUES ('test', 'value');
    
    -- Verify can create tables
    CREATE TABLE alex_analysis (
        id SERIAL PRIMARY KEY,
        notes TEXT,
        created_at TIMESTAMP DEFAULT NOW()
    );
    

Como alternativa, mediante psql:

Alex también puede conectarse desde herramientas externas como psql:

  1. En el panel del proyecto, haga clic en Conectar.
  2. Seleccione la rama, la computación y la base de datos.
  3. En la lista desplegable Roles , seleccione alex.lopez@databricks.com.
  4. Copie el snippet psql de conexión.
  5. Haga clic en Copiar token de OAuth para obtener un token de autenticación.
  6. Conéctese con el comando copiado psql y escriba el token de OAuth cuando se le solicite la contraseña.
  7. Ejecute las mismas consultas de comprobación mostradas anteriormente.

Alternativa: acceso a la base de datos de solo lectura

Para los usuarios que solo necesitan consultar datos sin modificarlos, conceda los mismos permisos de proyecto, pero use permisos de base de datos más restrictivos:

Permisos del proyecto

Conceda CAN MANAGE para permitir la creación de bases de datos, roles y otras operaciones de proyecto.

Permisos de base de datos

-- Create OAuth role
SELECT databricks_create_role('analyst@databricks.com', 'USER');

-- Grant CONNECT permission
GRANT CONNECT ON DATABASE databricks_postgres TO "analyst@databricks.com";

-- Grant USAGE on the public schema
GRANT USAGE ON SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to all existing tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "analyst@databricks.com";

-- Grant SELECT-only access to future tables
ALTER DEFAULT PRIVILEGES IN SCHEMA public
    GRANT SELECT ON TABLES TO "analyst@databricks.com";

-- Grant USAGE on sequences (needed to view sequence values)
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "analyst@databricks.com";

Esto concede lo siguiente:

  • Acceso de lectura a todas las tablas
  • Visualización de la estructura de la base de datos
  • No se pueden modificar los datos (sin INSERT, UPDATE, DELETE)
  • No se pueden crear tablas u otros objetos

Trabajar con grupos y entidades de servicio

Puede seguir el mismo proceso para conceder acceso a grupos y entidades de servicio de Azure Databricks. Conceda permisos de proyecto a través de la interfaz de usuario de la aplicación de Lakebase, cree roles de OAuth mediante databricks_create_role()y conceda permisos de base de datos. Para obtener más información, consulte Grupos y principales de servicio.

Uso de roles nativos de contraseña de Postgres

Como alternativa a los roles de OAuth, puede crear roles de contraseña de Postgres nativos para aplicaciones que no pueden actualizar tokens cada hora, procesos de larga duración o herramientas externas que no admiten OAuth. Para obtener instrucciones sobre cómo crear y administrar roles de contraseña, consulte Administración de roles de Postgres.

Pasos siguientes