Configurar TLS para BI Connector
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
mongod
que você pode iniciar e parar.Uma instância
mongosqld
que 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ância mongod
. 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\bin
nã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 Name
para o certificado gerado nesta etapa do tutorial deve ser diferente da entradaCommon Name
para 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 |
---|---|
requireSSL | |
C:\opt\certs\mdb.pem | |
C:\opt\certs\mdbca.crt | |
C:\opt\certs\mdb.pem | |
x509 |
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 | |
C:\opt\certs\mdbca.crt (arquivo gerado na etapa 2d) | |
C:\opt\certs\mdb.pem (arquivo gerado na etapa 5) |
.\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 |
---|---|
true | |
C:\opt\certs\mdb.pem | |
C:\opt\certs\mdbca.crt | |
requireSSL | |
C:\opt\certs\bi.pem | |
C:\opt\certs\mdbca.crt |
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 Name
para o certificado gerado nesta etapa do tutorial deve ser diferente da entradaCommon Name
para 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 |
---|---|
requireSSL | |
/opt/certs/mdb.pem | |
/opt/certs/mdbca.crt | |
/opt/certs/mdb.pem | |
security.clusterAuthmode | x509 |
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 | |
/opt/certs/mdbca.crt (arquivo gerado na etapa 2.2) | |
/opt/certs/mdb.pem (arquivo gerado na etapa 5) |
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
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 arquivos TLS .
Opção | Valor |
---|---|
true | |
/opt/certs/mdb.pem | |
/opt/certs/mdbca.crt | |
requireSSL | |
/opt/certs/bi.pem | |
/opt/certs/mdbca.crt |
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