Para que BI Connector transmita datos de forma segura, debe habilitar el cifrado de seguridad de la capa de transporte (TLS) en su instancia de MongoDB, su
mongosqld instancia, y en su herramienta de BI. Una descripción completa de
La configuración deTLS está fuera del alcance de este documento, pero este tutorial describe el proceso para crear sus propios certificados TLS para fines de prueba e iniciar los componentes de MongoDB con TLS habilitado.
Importante
Utilice estos procedimientos solo para fines de prueba. Su entorno de producción debe usar certificados TLS emitidos por una autoridad de certificación (CA) reconocida.
Requisitos previos
Un usuario de MongoDB con permisos suficientes para
mongosqldejecutar.Una instancia que puedes iniciar y
mongoddetener.Una instancia que puedes iniciar y
mongosqlddetener.La MySQL shell
Nota sobre la disponibilidad del clúster
Para garantizar la disponibilidad de lectura de sus conjuntos de réplicas de MongoDB y clústeres fragmentados mientras el Conector de BI habilita TLS, utilice un procedimiento de actualización continua. Mientras se actualiza el conjunto de réplicas principal, las aplicaciones deben esperar hasta que se complete el ciclo de conmutación por error y elección.
Crear y probar certificados autofirmados
Este tutorial contiene instrucciones para crear varios archivos que permiten que un proceso acepte mongosqld conexiones cifradas con OpenSSL desde un cliente SQL, como el shell de MySQL, y establezca una conexión cifrada con una instancia.mongod Creamos dos archivos.pem. Cada archivo contiene una clave de cifrado y un certificado TLS autofirmado.
Crear un directorio de certificados.
Usando el símbolo del sistema de Windows
cmd, cree un directorio para almacenar sus certificados. Este tutorial usaC:\opt\certs.mkdir C:\opt\certs cd C:\opt\certs Este tutorial asume que su directorio OpenSSL está en
C:\OpenSSL. Si se encuentra en otra parte de su sistema, edite los comandos según corresponda o mueva el directorio aC:\OpenSSL.Si su directorio
C:\OpenSSL\binno contiene un archivo de configuración llamadoopenssl.cfg, cree uno.Ejemplo
Este es un archivo de configuración de ejemplo.
# # OpenSSL configuration file. # # Establish working directory. dir = . [ ca ] default_ca = CA_default [ CA_default ] serial = $dir/serial database = $dir/certindex.txt new_certs_dir = $dir/certs certificate = $dir/cacert.pem private_key = $dir/private/cakey.pem default_days = 365 default_md = md5 preserve = no email_in_dn = no nameopt = default_ca certopt = default_ca policy = policy_match [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 1024 default_keyfile = key.pem default_md = md5 string_mask = nombstr distinguished_name = req_distinguished_name req_extensions = v3_req [ req_distinguished_name ] # Variable name Prompt string #--------------------------- ---------------------------------- 0.organizationName = Organization Name (company) organizationalUnitName = Organizational Unit Name (department, division) emailAddress = Email Address emailAddress_max = 40 localityName = Locality Name (city, district) stateOrProvinceName = State or Province Name (full name) countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 commonName = Common Name (hostname, IP, or your name) commonName_max = 64 # Default values for the above, for consistency and less typing. # Variable name Value #--------------------------- ------------------------------ 0.organizationName_default = My Company localityName_default = My Town stateOrProvinceName_default = State or Providence countryName_default = US [ v3_ca ] basicConstraints = CA:TRUE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always [ v3_req ] basicConstraints = CA:FALSE subjectKeyIdentifier = hash Configurar una variable de entorno para uso posterior.
set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg
Generar una autoridad de certificación autofirmada.
Cambiar el directorio a
C:\opt\certs.cd C:\opt\certs Inicie la aplicación OpenSSL.
C:\OpenSSL\bin\openssl.exe C:\Users\username>cd C:\opt\certs C:\Users\username>C:\OpenSSL\bin\openssl.exe OpenSSL> El siguiente comando genera y envía una clave privada a
mdbprivate.key.genrsa -out C:\opt\certs\mdbprivate.key -aes256 \ -passout pass:password El siguiente comando genera y envía un archivo de autoridad de certificación a
mdbca.crt.El siguiente comando solicita al usuario que introduzca varios datos que se incorporan a la solicitud de certificado. Uno de los campos se llama
Common Name, que corresponde a un nombre de dominio completo (FQDN). La entradaCommon Namedel certificado generado en este paso del tutorial debe ser diferente de la entradaCommon Namede los certificados generados en los pasos 3 y 9.req -x509 -new -key C:\opt\certs\mdbprivate.key -days 1000 -out C:\opt\certs\mdbca.crt -passin pass:password
Ahora tenemos dos archivos: el archivo de autoridad de certificación mdbca.crt y la clave mdbprivate.key utilizada para firmar esa solicitud.
Genere un certificado PEM para el servidor MongoDB.
El siguiente comando genera una clave para el uso de mongod TLS del proceso y una CSR. Para este paso, la Common Name respuesta debe ser el FQDN del servidor donde se ejecuta mongod el TLS de la www.example.com instancia, como.
Introduzca el siguiente comando en el indicador de OpenSSL:
req -new -nodes -newkey rsa:2048 -keyout .\mdb.key -out .\mdb.csr
Cree un archivo PEM para el servidor MongoDB.
Un archivo .pem consta de una clave y un certificado concatenados. Para crear un archivo .pem para su instancia de MongoDB, salga del símbolo del sistema de OpenSSL e introduzca el siguiente comando en el símbolo del sistema cmd del directorio C:\opt\certs:
copy .\mdb.key + .\mdb.crt mdb.pem
Ahora debería tener los siguientes archivos en su directorio de certificados:
mdb.crt mdb.csr mdb.key mdb.pem mdbca.crt mdbprivate.key
Si falta alguno, vuelva atrás y revise los pasos anteriores para comprobar si hay errores.
Actualizar el mongod archivo de configuración.
Para configurar mongod para que requiera TLS en las conexiones entrantes, modifique su archivo de configuración como se indica a continuación. Los valores pueden variar según dónde haya creado sus archivos TLS.
Opción | Valor |
|---|---|
| |
| |
| |
| |
|
Ejemplo
El siguiente archivo de configuración contiene directivas para conexiones TLS y autenticación x..509
Es posible que su archivo de configuración requiera opciones adicionales o diferentes.
systemLog: destination: file path: 'C:\data\mongod.log' logAppend: true net: bindIp: <step-3-FQDN> port: 27017 ssl: mode: requireSSL PEMKeyFile: 'C:\opt\certs\mdb.pem' CAFile: 'C:\opt\certs\mdbca.crt' clusterFile: 'C:\opt\certs\mdb.pem' security: clusterAuthMode: x509 storage: dbPath: 'C:\data\db'
Si prefiere iniciar con opciones de línea de comandos en mongod mongosqld lugar de un archivo de configuración, consulte para ver opciones equivalentes.
Pruebe su conexión con el mongo shell.
Conéctese a su servidor con el shell mongo para probar su conexión TLS. El comando mongo necesita las siguientes opciones TLS:
Opción | Valor |
|---|---|
ninguno | |
| |
|
.\mongo.exe --ssl --host <step3-common-name> ^ --sslCAFile "C:\opt\certs\mdbca.crt" ^ --sslPEMKeyFile "C:\opt\certs\mdb.pem"
Edite sus opciones apropiadamente.
Cree una clave y un CSR para BI Connector.
La Common Name entrada para este CSR debe coincidir con el FQDN del servidor donde mongosqld ejecuta.
Nota
La Common Name entrada para esta CSR debe ser diferente de la Common Name entrada para la primera CSR que creó en el 2 paso.
Inicie la aplicación OpenSSL e ingrese el siguiente comando en el indicador de OpenSSL:
req -new -nodes -newkey rsa:2048 -keyout .\bi.key -out .\bi.csr
Inicio mongosqld
Su mongosqld archivo de configuración requiere varias opciones específicas de TLS. Sus valores pueden variar según dónde haya creado sus certificados TLS y .pem archivos.
Opción | Valor |
|---|---|
| |
| |
| |
| |
| |
|
El siguiente archivo de configuración de ejemplo utiliza archivos ubicados en el C:\opt\certs directorio. Especifica un nombre de usuario y una contraseña que corresponden a un usuario de MongoDB con permisos suficientes para ejecutar y leer de mongosqld la test base de datos.
systemLog: logAppend: false path: 'C:\logs\mongosqld.log' verbosity: 2 security: enabled: true mongodb: net: uri: <step-3-FQDN> auth: username: <username> password: <password> ssl: enabled: true PEMKeyFile: 'C:\opt\certs\mdb.pem' CAFile: 'C:\opt\certs\mdbca.crt' net: bindIp: localhost port: 3307 ssl: mode: 'requireSSL' PEMKeyFile: 'C:\opt\certs\bi.pem' CAFile: 'C:\opt\certs\mdbca.crt' schema: sample: namespaces: 'test.*'
Inicie mongosqld con la opción para utilizar un archivo de --config configuración.
.\mongosqld --config C:\path\to\mongosqld.conf
Pruebe con un DSN ODBC.
Para crear un DSN ODBC que se conecte a través de TLS, siga las instrucciones del tutorial de DSN y configure el nuevo DSN con la información de la ruta de su certificado TLS.

Nota
No es necesario introducir una ruta de certificado en el SSL Certificate campo.
En la pestaña Connection de la pantalla de configuración de DSN, marque la casilla denominada Enable Cleartext Authentication.

Haga clic en el botón Test para probar su conexión ODBC.
Una vez que haya configurado su DSN, puede usarlo para conectarse a cualquiera de varias herramientas de BI, como Power BI o Qlik Sense.
Generar una autoridad de certificación autofirmada.
El siguiente comando genera y envía una clave privada a
mdbprivate.key.openssl genrsa -out /opt/certs/mdbprivate.key -aes256 \ -passout pass:password El siguiente comando genera y envía un archivo de autoridad de certificación a
mdbca.crt.El siguiente comando solicita al usuario que introduzca varios datos que se incorporan a la solicitud de certificado. Uno de los campos se llama
Common Name, que corresponde a un nombre de dominio completo (FQDN). La entradaCommon Namedel certificado generado en este paso del tutorial debe ser diferente de la entradaCommon Namede los certificados generados en los pasos 3 y 9.openssl req -x509 -new -key /opt/certs/mdbprivate.key \ -days 1000 -out /opt/certs/mdbca.crt \ -passin pass:password
Ahora tenemos dos archivos: el archivo de autoridad de certificación mdbca.crt y la clave mdbprivate.key utilizada para firmar esa solicitud.
Genere un certificado PEM para el servidor MongoDB.
El siguiente comando genera una clave para el proceso y una solicitud de firma de certificado (CSR).mongod La Common Name respuesta debe ser el nombre de dominio completo (FQDN) delhost donde se mongod ejecuta la www.example.com instancia, por ejemplo,. Para determinar el FQDN de su servidor, utilice hostname -f en el símbolo del sistema.
Es posible que se le solicite que ingrese una contraseña de desafío para el elemento Extra
Attribute. Para este tutorial, puede dejar este elemento en blanco.
openssl req -new -nodes -newkey rsa:2048 -keyout /opt/certs/mdb.key \ -out /opt/certs/mdb.csr
Cree un archivo PEM para el servidor MongoDB.
Un archivo .pem consta de una clave y un certificado concatenados. Para crear un archivo .pem para su instancia de MongoDB, introduzca el siguiente comando en el directorio /opt/certs/:
cat /opt/certs/mdb.key /opt/certs/mdb.crt > /opt/certs/mdb.pem
Ahora debería tener los siguientes archivos en su directorio de certificados:
mdb.crt mdb.csr mdb.key mdb.pem mdbca.crt mdbprivate.key
Si falta alguno, vuelva atrás y revise los pasos anteriores para comprobar si hay errores.
Actualizar el mongod archivo de configuración.
Para configurar mongod para que requiera TLS en las conexiones entrantes, modifique su archivo de configuración como se indica a continuación. Los valores pueden variar según dónde haya creado sus archivos TLS.
Opción | Valor |
|---|---|
| |
| |
| |
| |
|
|
Ejemplo
El siguiente archivo de configuración contiene directivas para conexiones TLS y autenticación x..509
Es posible que su archivo de configuración requiera opciones adicionales o diferentes.
systemLog: destination: file path: '/data/mongod.log' logAppend: true processManagement: fork: true pidFilePath: '/data/mongod.pid' net: bindIp: localhost port: 27017 ssl: mode: requireSSL PEMKeyFile: '/opt/certs/mdb.pem' CAFile: '/opt/certs/mdbca.crt' clusterFile: '/opt/certs/mdb.pem' security: clusterAuthMode: x509 storage: dbPath: '/data'
Si prefiere iniciar con opciones de línea de comandos en mongod mongosqld lugar de un archivo de configuración, consulte para ver opciones equivalentes.
Pruebe su conexión con el mongo shell.
Conéctese a su servidor con el shell mongo para probar su conexión TLS. El comando mongo necesita las siguientes opciones TLS:
Opción | Valor |
|---|---|
ninguno | |
| |
|
mongo --tls --host <step3-common-name> \ --tlsCAFile /opt/certs/mdbca.crt \ --tlsPEMKeyFile /opt/certs/mdb.pem
Edite sus opciones apropiadamente.
Cree una clave y un CSR para BI Connector.
La Common Name entrada de esta CSR debe coincidir con el FQDN del host donde se ejecuta.mongosqld Para determinar el FQDN de su host, utilice hostname -f en el símbolo del sistema.
Es posible que se le solicite que ingrese una contraseña de desafío para el elemento Extra
Attribute. Para este tutorial, puede dejar este elemento en blanco.
Nota
La Common Name entrada para esta CSR debe ser diferente de la Common Name entrada para la primera CSR que creó en el 2 paso.
openssl req -new -nodes -newkey rsa:2048 \ -keyout /opt/certs/bi.key \ -out /opt/certs/bi.csr
mongosqldInicio.
Su mongosqld archivo de configuración requiere varias opciones específicas de TLS. Sus valores pueden variar según dónde haya creado sus archivos TLS.
Opción | Valor |
|---|---|
| |
| |
| |
| |
| |
|
Ejemplo
El siguiente archivo de configuración utiliza archivos ubicados en el /opt/certs/ directorio. Especifica un nombre de usuario y una contraseña que corresponden a un usuario de MongoDB con permisos suficientes para ejecutar y leer de mongosqld la test base de datos.
systemLog: logAppend: false path: './logs/mongosqld.log' verbosity: 2 security: enabled: true mongodb: net: uri: <step9-common-name> auth: username: <username> password: <password> ssl: enabled: true PEMKeyFile: '/opt/certs/mdb.pem' CAFile: '/opt/certs/mdbca.crt' net: bindIp: localhost port: 3307 ssl: mode: 'requireSSL' PEMKeyFile: '/opt/certs/bi.pem' CAFile: '/opt/certs/mdbca.crt' schema: sample: namespaces: 'test.*'
Inicie mongosqld con la opción para utilizar un archivo de --config configuración.
mongosqld --config /path/to/mongosqld.conf