MySQL sslConfig CA is never used: server certificate not verified
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 82/100
Línea de trabajo
Empieza en ingestion/src/metadata/utils/ssl_manager.py y sigue cómo SSLManager.setup_ssl construye el diccionario ssl para MySQL, Doris y StarRocks. Revisa cómo PyMySQL lee las opciones SSL dentro de ese diccionario; está terminado cuando la CA se usa para verificar el servidor y una CA incorrecta hace que la conexión falle.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Connector
MySQL
Feature area
Authentication / Connection
Describe the bug
A MySQL connection with sslConfig.caCertificate set encrypts the connection but never verifies the server certificate, and sslCertificate/sslKey are never presented.
SSLManager.setup_ssl for MysqlConnection (also Doris and StarRocks) builds connectionArguments["ssl"] = {"ssl_ca": ..., "ssl_cert": ..., "ssl_key": ...}. That dict is passed to PyMySQL as ssl=, and PyMySQL's _create_ssl_ctx reads the keys ca, cert and key. With no ca it sets verify_mode = CERT_NONE and check_hostname = False:
>>> Connection._create_ssl_ctx(None, {"ssl_ca": "ca.pem"}) # what OpenMetadata passes
verify_mode=CERT_NONE check_hostname=False
>>> Connection._create_ssl_ctx(None, {"ca": "ca.pem"})
verify_mode=CERT_REQUIRED check_hostname=True
(PyMySQL 2.2.8, as shipped with openmetadata-ingestion 2.1.0.0.) ssl_ca/ssl_cert/ssl_key are valid as top-level pymysql.connect keyword arguments, but not inside the ssl dict.
To Reproduce
- Set
sslConfig.caCertificateon a MySQL service. - Build the connection arguments with
SSLManager.setup_ssland pass the resultingssldict topymysql.connections.Connection._create_ssl_ctx. - The context has
verify_mode=CERT_NONEandcheck_hostname=False, as shown above. I have not run a live connection against a wrong CA.
Expected behavior
The CA is used to verify the server (ca, cert, key inside the ssl dict), so a wrong CA fails the connection.
OS
Kubernetes (ingestion-base image)
Python version
3.12
OpenMetadata version
2.0.6
OpenMetadata Ingestion package version
openmetadata-ingestion==2.0.6.0; same code on main (ingestion/src/metadata/utils/ssl_manager.py).
Pre-submission checklist
- I searched for duplicate issues.
- I removed credentials, hostnames, emails, and other sensitive data from logs and config.
- Lenguaje dominante
- TypeScript
- Estrellas
- 15.4k
- Forks
- 2.4k
- Merge medio
- 1 d 8 h
- PR fusionados (30 d)
- 754
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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 open-metadata/OpenMetadata
-
Default Anthropic model in the LLM configuration is a retired model (claude-3-5-sonnet-20240620)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
open-metadata/OpenMetadata#36757 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
open-metadata/OpenMetadata#36739 ·
Los mantenedores suelen responder en 1 día
-
[Detail Bug] Usage ingestion publishes table usage and join dates one day earlier on UTC-negative host timezonesPosiblemente ocupada @detail-app la tomó hace 6 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
open-metadata/OpenMetadata#36604 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
open-metadata/OpenMetadata#36496 ·
Los mantenedores suelen responder en 1 día
-
Java SDK glossary term assets GET sends RequestOptions as a request bodyPosiblemente ocupada @LubabaKhalid la tomó hace 9 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
open-metadata/OpenMetadata#36150 ·
Los mantenedores suelen responder en 1 día
Todos los issues de open-metadata/OpenMetadata
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 2 días
-
reproduced
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
anomalyco/opencode#62052 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
strapi/design-system#2084 ·
Los mantenedores suelen responder en 3 días
-
Report: &TV InternationalAbiertocheck:passed streams:remove
Dificultad 1/5 Menos de una hora Aptitud para principiantes 67/100
Los mantenedores suelen responder en 1 día
-
OAuth documentation for GET /api/v2/users/me/ appears inconsistent with required global read scopeAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día