Para que o BI Connector transmita dados com segurança, você deve ativar a criptografia TLS (Transport Layer Security) na instância do MongoDB , na instância mongosqld e na ferramenta de BI. Uma descrição completa da configuração doTLS está fora do escopo deste documento, mas este tutorial descreve o processo para criar seus próprios certificados TLS para fins de teste e iniciar os componentes do MongoDB com o TLS ativado.
Importante
Use esses procedimentos apenas para fins de teste. Seu ambiente de produção deve usar certificados TLS emitidos por uma autoridade de certificação (CA) reconhecida.
Pré-requisitos
Um usuário do MongoDB com permissões suficientes para executar
mongosqld.Uma instância do
mongodque você pode iniciar e parar.Uma instância
mongosqldque você pode iniciar e parar.
Observação sobre a disponibilidade do cluster
Para garantir a disponibilidade de leitura para seus conjuntos de réplicas do MongoDB e clusters fragmentados enquanto o BI Connector habilita o TLS, use um procedimento de atualização contínua. Enquanto o conjunto de réplicas primário é atualizado, os aplicativos devem aguardar até que o failover e o ciclo de eleição sejam concluídos.
Criar e testar certificados autoassinados
Este tutorial contém instruções sobre a criação de vários arquivos que permitem que um processo mongosqld aceite conexões criptografadas OpenSSL de um cliente SQL, como o shell MySQL, e faça uma conexão criptografada com uma instânciamongod. Criamos dois arquivos .pem. Cada arquivo contém uma chave de criptografia e um certificado TLS autoassinado.
Crie um diretório de certificados.
Utilizando o prompt do Windows
cmd, crie um diretório para manter seus certificados. Este tutorial utilizaC:\opt\certs.mkdir C:\opt\certs cd C:\opt\certs Este tutorial pressupõe que seu diretório OpenSSL está em
C:\OpenSSL. Se estiver localizado em outro lugar do seu sistema, edite os comandos adequadamente ou mova o diretório paraC:\OpenSSL.Se o seu diretório do
C:\OpenSSL\binnão contiver um arquivo de configuração denominadoopenssl.cfg, crie um.Exemplo
Este é um arquivo de configuração de exemplo.
# # 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 Configure uma variável de ambiente para uso posterior.
set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg 
Gere uma autoridade de certificação autoassinada.
Alterar diretório para
C:\opt\certs.cd C:\opt\certs Inicie o aplicativo OpenSSL.
C:\OpenSSL\bin\openssl.exe C:\Users\username>cd C:\opt\certs C:\Users\username>C:\OpenSSL\bin\openssl.exe OpenSSL> O comando a seguir gera e gera uma chave privada para
mdbprivate.key.genrsa -out C:\opt\certs\mdbprivate.key -aes256 \ -passout pass:password O seguinte comando gera e gera um arquivo de autoridade de certificação para
mdbca.crt.O comando a seguir solicita que o usuário insira várias informações que são incorporadas à solicitação de certificado. Um dos campos é chamado
Common Name, que é um nome de domínio totalmente qualificado (FQDN). A entradaCommon Namepara o certificado gerado nesta etapa do tutorial deve ser diferente da entradaCommon Namepara os certificados gerados nas etapas 3 e 9.req -x509 -new -key C:\opt\certs\mdbprivate.key -days 1000 -out C:\opt\certs\mdbca.crt -passin pass:password 
Agora temos dois arquivos: o arquivo da autoridade de certificação mdbca.crt e a chave mdbprivate.key usada para assinar essa solicitação.
Gere um certificado PEM para o MongoDB Server.
O comando seguinte gera uma chave para o uso do mongod TLS do processo e um CSR. Para esta etapa, a resposta Common Name deve ser o FQDN do servidor onde sua instância mongod TLS , como www.example.com.
Digite o seguinte comando no prompt do OpenSSL:
req -new -nodes -newkey rsa:2048 -keyout .\mdb.key -out .\mdb.csr 
Crie um arquivo PEM para o servidor MongoDB.
Um arquivo .pem consiste em uma chave e um certificado concatenado junto. Para criar um arquivo .pem para sua instância do MongoDB usar, saia do prompt OpenSSL e digite o seguinte comando no prompt cmd no diretório C:\opt\certs :
copy .\mdb.key + .\mdb.crt mdb.pem 
Agora você deve ter os seguintes arquivos no diretório de certificados:
mdb.crt mdb.csr mdb.key mdb.pem mdbca.crt mdbprivate.key 
Se alguma estiver faltando, Go e revise as etapas anteriores, verificando se há erros.
Atualize mongod o arquivo de configuração.
Para configurar o mongod para exigir TLS para conexões de entrada, modifique seu arquivo de configuração da seguinte maneira. Seus valores podem variar, dependendo de onde você criou seus arquivos TLS .
Opção  | Valor  | 
|---|---|
  | |
  | |
  | |
  | |
  | 
Exemplo
O seguinte arquivo de configuração contém diretivas para conexões TLS e x.509 Autenticação .
Seu arquivo de configuração pode exigir opções adicionais ou 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' 
Se você preferir iniciar o mongod com opções de linha de comando em vez de um arquivo de configuração, consulte mongosqld para opções equivalentes.
Teste sua conexão com o mongo shell.
Conecte-se ao seu servidor com o shell mongo para testar sua conexão TLS . Seu comando mongo precisa das seguintes opções de TLS :
Opção  | Valor  | 
|---|---|
none  | |
  | |
  | 
.\mongo.exe --ssl --host <step3-common-name> ^             --sslCAFile "C:\opt\certs\mdbca.crt" ^             --sslPEMKeyFile "C:\opt\certs\mdb.pem" 
Edite suas opções adequadamente.
Crie uma chave e um CSR para o BI Connector.
A entrada Common Name para este CSR deve corresponder ao FQDN do servidor onde você executa mongosqld.
Observação
A entrada Common Name para este CSR deve ser diferente da entrada Common Name para o primeiro CSR que você criou, na etapa 2.
Inicie o aplicativo OpenSSL e digite o seguinte comando no prompt do OpenSSL:
req -new -nodes -newkey rsa:2048 -keyout .\bi.key -out .\bi.csr 
Iniciar mongosqld
Seu arquivo de configuração mongosqld exige várias opções específicas do TLS . Seus valores podem variar, dependendo de onde você criou seus certificados TLS e arquivos .pem .
Opção  | Valor  | 
|---|---|
  | |
  | |
  | |
  | |
  | |
  | 
O arquivo de configuração de exemplo a seguir utiliza arquivos localizados no diretório C:\opt\certs . Ele especifica um nome de usuário e senha que correspondem a um usuário MongoDB com permissões suficientes para executar o mongosqld e ler a partir do reconhecimento de data center do test .
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 o mongosqld com a opção --config para utilizar um arquivo de configuração.
.\mongosqld --config C:\path\to\mongosqld.conf 
Teste com um ODBC DSN.
Para criar um ODBC DSN que se conecta por TLS, siga as instruções no tutorial de DSN e configure o novo DSN com as informações do caminho do certificado TLS .

Observação
Você não precisa inserir um caminho de certificado no campo SSL Certificate .
Na guia Connection da tela de configuração DSN, marque a caixa rotulada Enable Cleartext Authentication.

Clique no botão Test para testar sua conexão ODBC.
Depois de configurar seu DSN, você pode usá-lo para se conectar a qualquer uma das várias ferramentas de BI, como Power BI ou Qlik Sense.
Gere uma autoridade de certificação autoassinada.
O comando a seguir gera e gera uma chave privada para
mdbprivate.key.openssl genrsa -out /opt/certs/mdbprivate.key -aes256 \ -passout pass:password O seguinte comando gera e gera um arquivo de autoridade de certificação para
mdbca.crt.O comando a seguir solicita que o usuário insira várias informações que são incorporadas à solicitação de certificado. Um dos campos é chamado
Common Name, que é um nome de domínio totalmente qualificado (FQDN). A entradaCommon Namepara o certificado gerado nesta etapa do tutorial deve ser diferente da entradaCommon Namepara os certificados gerados nas etapas 3 e 9.openssl req -x509 -new -key /opt/certs/mdbprivate.key \ -days 1000 -out /opt/certs/mdbca.crt \ -passin pass:password 
Agora temos dois arquivos: o arquivo da autoridade de certificação mdbca.crt e a chave mdbprivate.key usada para assinar essa solicitação.
Gere um certificado PEM para o MongoDB Server.
O comando a seguir gera uma chave para o processo mongod usar e uma Solicitação de assinatura de certificado (CSR). A resposta Common Name deve ser o nome de domínio totalmente qualificado (FQDN) do host onde sua instância mongod é executada, como www.example.com. Para determinar o FQDN do seu servidor, use hostname -f no prompt de comando.
Você pode ser solicitado a inserir uma senha de desafio para o elemento Extra
Attribute . Para fins deste tutorial, você pode deixar esse elemento em branco.
openssl req -new -nodes -newkey rsa:2048 -keyout /opt/certs/mdb.key \ -out /opt/certs/mdb.csr 
Crie um arquivo PEM para o servidor MongoDB.
Um arquivo .pem consiste em uma chave e um certificado concatenado. Para criar um arquivo .pem para ser usado por sua instância do MongoDB , digite o seguinte comando no diretório /opt/certs/ :
cat /opt/certs/mdb.key /opt/certs/mdb.crt > /opt/certs/mdb.pem 
Agora você deve ter os seguintes arquivos no diretório de certificados:
mdb.crt mdb.csr mdb.key mdb.pem mdbca.crt mdbprivate.key 
Se alguma estiver faltando, Go e revise as etapas anteriores, verificando se há erros.
Atualize mongod o arquivo de configuração.
Para configurar o mongod para exigir TLS para conexões de entrada, modifique seu arquivo de configuração da seguinte maneira. Seus valores podem variar, dependendo de onde você criou seus arquivos TLS .
Opção  | Valor  | 
|---|---|
  | |
  | |
  | |
  | |
  | 
  | 
Exemplo
O seguinte arquivo de configuração contém diretivas para conexões TLS e x.509 Autenticação .
Seu arquivo de configuração pode exigir opções adicionais ou 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' 
Se você preferir iniciar o mongod com opções de linha de comando em vez de um arquivo de configuração, consulte mongosqld para opções equivalentes.
Teste sua conexão com o mongo shell.
Conecte-se ao seu servidor com o shell mongo para testar sua conexão TLS . Seu comando mongo precisa das seguintes opções de TLS :
Opção  | Valor  | 
|---|---|
none  | |
  | |
  | 
mongo --tls --host <step3-common-name> \       --tlsCAFile /opt/certs/mdbca.crt \       --tlsPEMKeyFile /opt/certs/mdb.pem 
Edite suas opções adequadamente.
Crie uma chave e um CSR para o BI Connector.
A entrada Common Name para este CSR deve corresponder ao FQDN do host onde você executa mongosqld. Para determinar o FQDN do seu host, utilize hostname -f no prompt de comando.
Você pode ser solicitado a inserir uma senha de desafio para o elemento Extra
Attribute . Para fins deste tutorial, você pode deixar esse elemento em branco.
Observação
A entrada Common Name para este CSR deve ser diferente da entrada Common Name para o primeiro CSR que você criou, na etapa 2.
openssl req -new -nodes -newkey rsa:2048 \             -keyout /opt/certs/bi.key \             -out /opt/certs/bi.csr 
Inicie mongosqld.
Seu arquivo de configuração mongosqld exige várias opções específicas do TLS . Seus valores podem variar, dependendo de onde você criou seus arquivos TLS .
Opção  | Valor  | 
|---|---|
  | |
  | |
  | |
  | |
  | |
  | 
Exemplo
O seguinte arquivo de configuração utiliza arquivos localizados no diretório /opt/certs/ . Especifica um nome de usuário e uma senha que correspondem a um usuário do MongoDB com permissões suficientes para executar mongosqld e ler a partir do banco de banco de dados test .
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 o mongosqld com a opção --config para utilizar um arquivo de configuração.
mongosqld --config /path/to/mongosqld.conf