Menu Docs
Página inicial do Docs
/
BI Connector
/

Configurar TLS para BI Connector

Nesta página

  • Pré-requisitos
  • Criar e testar certificados autoassinados

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.

  • 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.

  • OpenSSL

  • A MySQL shell

    Dica

    Veja também:

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.

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.

1
  1. Utilizando o prompt do Windows cmd , crie um diretório para manter seus certificados. Este tutorial utiliza C:\opt\certs.

    mkdir C:\opt\certs
    cd C:\opt\certs
  2. 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 para C:\OpenSSL.

    Se o seu diretório do C:\OpenSSL\bin não contiver um arquivo de configuração denominado openssl.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
  3. Configure uma variável de ambiente para uso posterior.

    set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg
2
  1. Alterar diretório para C:\opt\certs.

    cd C:\opt\certs
  2. 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>
  3. O comando a seguir gera e gera uma chave privada para mdbprivate.key.

    genrsa -out C:\opt\certs\mdbprivate.key -aes256 \
    -passout pass:password
  4. 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 entrada Common Name para o certificado gerado nesta etapa do tutorial deve ser diferente da entrada Common 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.

3

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
4

Digite o seguinte comando no prompt do OpenSSL:

x509 -CA .\mdbca.crt -CAkey .\mdbprivate.key -CAcreateserial -req -days 1000 -in .\mdb.csr -out .\mdb.crt -passin pass:password
5

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.

6

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.

7
mongod.exe --config C:\path\to\mongod.conf
8

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.

9

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
10

Digite o seguinte comando no prompt do OpenSSL:

x509 -CA .\mdbca.crt -CAkey .\mdbprivate.key -CAcreateserial -req -days 1000 -in .\bi.csr -out .\bi.crt -passin pass:password
11

Saia do aplicativo OpenSSL e insira o seguinte comando no prompt cmd :

copy .\bi.key + .\bi.crt bi.pem
12

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
13

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 .

Captura de tela da tela de configuração DSN

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.

Captura de tela da tela de configuração DSN

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.

1

Crie um diretório para manter seus certificados. Este tutorial usa /opt/certs. Seu diretório de certificado deve ser legível pelo usuário do sistema que executa os programas mongod e mongosqld .

mkdir /opt/certs
cd /opt/certs
2
  1. O comando a seguir gera e gera uma chave privada para mdbprivate.key.

    openssl genrsa -out /opt/certs/mdbprivate.key -aes256 \
    -passout pass:password
  2. 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 entrada Common Name para o certificado gerado nesta etapa do tutorial deve ser diferente da entrada Common 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.

3

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
4
openssl x509 -CA /opt/certs/mdbca.crt
-CAkey /opt/certs/mdbprivate.key \
-CAcreateserial -req -days 1000 \
-in /opt/certs/mdb.csr -out /opt/certs/mdb.crt \
-passin pass:password
5

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.

6

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.

7
mongod --config /path/to/mongod.conf
8

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.

9

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
10
openssl x509 -CA /opt/certs/mdbca.crt \
-CAkey /opt/certs/mdbprivate.key \
-CAcreateserial -req -days 1000 \
-in /opt/certs/bi.csr -out /opt/certs/bi.crt \
-passin pass:password
11
cat /opt/certs/bi.key /opt/certs/bi.crt > /opt/certs/bi.pem
12

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
13

Para conectar à sua instância do mongosqld , inicie o shell MySQL com as seguintes opções de linha de comando.

mysql --ssl-mode REQUIRED --ssl-ca=/opt/certs/mdbca.crt \
--enable-cleartext-plugin --port 3307 -u <username> -p