Enhancement: Support for Row-Level Filtering and Column Masking in Druid OPA Authorizer
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- java
- Área
- authorization, backend, security
Línea de trabajo
El issue no menciona archivos, pruebas ni puntos de entrada. Empieza por localizar el procesamiento actual de respuestas booleanas de autorización de OPA del plugin y su integración de autorización con Druid; después, aclara el contrato de respuesta y los puntos de aplicación de row_filter y column_mask. La implementación debe incluir respuestas estructuradas de OPA que apliquen filtrado de filas y enmascaramiento de columnas, preservando las decisiones de allow/deny.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description:
We are currently using the druid-opa-authorizer plugin to integrate Open Policy Agent (OPA) with Apache Druid for fine-grained access control.
At present, the plugin only supports boolean authorization decisions (i.e., true or false) returned from OPA policies.
This works well for basic allow/deny authorization but does not support more granular data security requirements such as row-level filtering and column-level masking.
In enterprise environments, it’s common to need:
- Row-Level Security (RLS): Restricting access to specific rows based on user identity, role, or group (e.g., a user in the APAC region should only see records where
region = 'APAC'). - Column Masking: Masking or hiding sensitive columns (e.g., salary, SSN) from certain users while allowing others full access.
Currently, since the OPA policy can only return a boolean value, Druid cannot apply dynamic filtering or masking logic at the query level.
We propose enhancing the plugin to handle structured JSON responses from OPA that include both access decisions and filter/masking metadata.
Proposed Enhancement:
Support for JSON-based OPA responses, for example:
{
"allow": true,
"row_filter": "region = 'APAC'",
"column_mask": {
"ssn": "MASKED",
"salary": "NULL"
}
}
- Lenguaje dominante
- Java
- Estrellas
- 5
- Forks
- 5
- Merge medio
- 2 h 7 min
- PR fusionados (30 d)
- 1
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de stackabletech/druid-opa-authorizer
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
stackabletech/druid-opa-authorizer#140 · 6 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
-
Dependency DashboardAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 15/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
stackabletech/druid-opa-authorizer#63 · 1 comentario ·
Todos los issues de stackabletech/druid-opa-authorizer
Issues similares
-
protobuf
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
FasterXML/jackson-dataformats-binary#874 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 75/100
-
[Bug][Connector-V2][JDBC] Turkish locale bypasses the SQL set-operator and complex-clause guards, rewriting the user's queryPosiblemente ocupada @SEPURI-SAI-KRISHNA la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 3 días
-
[Bug report] Lance REST catalog-level DropNamespace drops non-lakehouse catalogsPosiblemente ocupada @nevzheng la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Los mantenedores suelen responder en 1 día
-
[BUG] jackson3 JacksonJsonpMapper(ObjectMapper) fails to deserialize `_source` with "Trailing token" errorPosiblemente ocupada @junyeokk la tomó hoy. Abiertobug untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
opensearch-project/opensearch-java#2236 ·
Los mantenedores suelen responder en 1 día