Caso de Uso: Consultando um Cloud SQL Seguro no Autonomous Database
O Oracle Cloud SQL fornece acesso ao Servidor de Consulta em um cluster seguro do Hadoop usando uma Conexão de Banco de Dados padrão; ele não exige um cliente Kerberizado. Portanto, outro banco de dados pode acessar o Hadoop por meio do Servidor de Consulta. Por exemplo, o Autonomous Database.
Em todas as probabilidades, você provavelmente já tem as etapas 1 e 2 satisfeitas - isto é, usuários definidos no cluster do hadoop, banco de dados e dados disponíveis para consulta. Se isso ocorrer, você poderá ignorar a etapa 3 para concluir instruções sobre como obter a wallet do Servidor de Consulta e compartilhá-la com o Autonomous Database.
- Pré-requisitos de Configuração.
- Adicionar Usuários do SO e do Kerberos.Como pré-requisito, um Big Data Service seguro foi criado e feito o upload de dados de amostra para o HDFS e o Hive. Consulte este tutorial para obter as etapas na criação do ambiente. Além disso, um usuário foi adicionado ao cluster usando os comandos a seguir. Como raiz:
# # Add an admin user to the cluster # # OS user dcli -C "groupadd supergroup" dcli -C "useradd -g supergroup -G hdfs,hadoop,hive admin" # Kerberos kadmin.local kadmin.local: addprinc admin kadmin.local: exit
- Faça download dos dados de amostra e adicione-os ao Hive.Adicione dados de amostra ao cluster seguindo a seção HDFS do laboratório de upload de dados.
# get a kerberos ticket for the newly added "admin" user kinit admin # download and run the scripts required to create sample data and hive tables wget https://objectstorage.us-phoenix-1.oraclecloud.com/n/oraclebigdatadb/b/workshop-data/o/bds-livelabs/env.sh wget https://objectstorage.us-phoenix-1.oraclecloud.com/n/oraclebigdatadb/b/workshop-data/o/bds-livelabs/download-all-hdfs-data.sh ./download-all-hdfs-data.sh chmod +x *.sh
- Adicione um Usuário do Banco de Dados.
Estabeleça conexão com o Servidor de Consulta e adicione um novo usuário do Banco de Dados - também chamado de "admin". Observação: O nome faz distinção entre letras maiúsculas e minúsculas. Se o nome for minúsculo quando adicionado como usuário do SO, o usuário do banco de dados também deverá ser minúsculo. Em seguida, sincronize os metadados do banco de dados hive com o Servidor de Consulta:
# Add a database user # connect as sysdba to the query server # Notice that the database username is lowercase in order to match the OS and kerberos user sudo su - oracle sqlplus / as sysdba SQL> alter session set container=bdsqlusr; Session altered. SQL> exec dbms_bdsqs_admin.add_database_users('"admin"'); SQL> alter user "admin" identified by "ComplexPassword1234%" account unlock;
-
Certifique-se de que o Servidor de Consulta tenha sido sincronizado com o Hive executando uma sincronização no Cloudera Manager.
- Adicionar Usuários do SO e do Kerberos.
- Abra a porta 1521 para acessar o Servidor de Consulta.
- Na sub-rede usada pelo Big Data Service, certifique-se de que uma regra de entrada seja definida para a porta 1521. Abra o menu de navegação e clique em Rede. Em seguida, clique em Redes Virtuais na Nuvem.
- Selecione a rede.
- Clique em Detalhes da Lista de Segurança.
- Disponibilize a Oracle wallet no Servidor de Consulta no Autonomous Database para ativar a criptografia TLS.
A conexão entre o Autonomous Database e o Servidor de Consulta usa criptografia TLS. A wallet do Servidor de Consulta deve ser compartilhada com a instância do Autonomous Database para proteger a conexão:
Para fazer isso, copie a wallet do Servidor de Consulta usada para criptografar os dados em um bucket no Oracle Object Storage e, em seguida, copie essa wallet desse bucket para o Autonomous Database.
- Faça upload da wallet do Servidor de Consulta para um bucket do Armazenamento de Objetos.
- Crie uma credencial para acessar o armazenamento de objetos. Após a criação da credencial, o bucket é consultado usando o Autonomous Database. Consulte CREATE_CREDENTIAL Procedimento.
- Crie um diretório no Autonomous Database para armazenar a wallet e fazer download da wallet para esse diretório.
Exiba o conteúdo dos arquivos no diretório local.
-- create a directory for storing the wallet create directory QS_WALLET_DIR as 'qs_wallet_dir'; -- download the wallet from the object store BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'OBJECT_STORE_CRED', object_uri => 'wallet_object_storage_uri', directory_name => 'QS_WALLET_DIR', file_name => 'cwallet.sso'); END; / show errors; -- verify that the wallet was downloaded succesfully SELECT * FROM DBMS_CLOUD.LIST_FILES('QS_WALLET_DIR');
Use o SQL Developer para exibir a wallet no sistema de arquivos local do Autonomous Database.
- Use
DBMS_CLOUD.CREATE_CREDENTIAL
para especificar o usuário que estabelece conexão com o Servidor de Consulta.- Crie a credencial que captura a identidade do usuário do banco de dados.
A identidade do usuário do banco de dados é necessária para a conexão com o servidor de consulta. Como o nome de usuário faz distinção entre maiúsculas e minúsculas, neste exemplo, "admin" está entre aspas duplas para garantir que fique minúsculo.
-- create credential -- NOTE: The username must be capitalized. BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'QS_CRED', username => '"admin"', password => 'ComplexPassword1234%'); END; /-- verify that the credential exists SELECT * FROM ALL_CREDENTIALS WHERE CREDENTIAL_NAME='QS_CRED';
- Crie a credencial que captura a identidade do usuário do banco de dados.
- Use
DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK
para criar a conexão.Configure a conexão do Autonomous Database com o Servidor de Consulta.- Crie o link de Banco de Dados que utiliza a credencial.
O nome do serviço
bdsqlusr
e o nome distinto SSL são encontrados no nó do Servidor de Consulta em/opt/oracle/bigdatasql/bdsqs/wallets/client/tnsnames.ora
.[oracle@mgadwqs0 ~]$ cat /opt/oracle/bigdatasql/bdsqs/wallets/client/tnsnames.ora # tnsnames.ora Network Configuration File: /opt/oracle/bigdatasql/bdsqs/edgedb/product/199000/network/admin/tnsnames.ora # Generated by Oracle configuration tools. LISTENER_BDSQL = (ADDRESS = (PROTOCOL=TCPS)(HOST = zmdbimagebuild-2547-mn0.subnetcustompub.bdsdevclus01iad.oraclevcn.com)(PORT = 1521)) BDSQL = (DESCRIPTION = (ADDRESS =(PROTOCOL=TCPS)(HOST = zmdbimagebuild-2547-mn0.subnetcustompub.bdsdevclus01iad.oraclevcn.com)(PORT = 1521)) (SECURITY=(SSL_SERVER_CERT_DN="CN=mgadwqs0.sub12071934190.bdsadw.oraclevcn.com")) (CONNECT_DATA =(SERVER = DEDICATED) (SERVICE_NAME = bdsql.zmdbimagebuild-2547-mn0.subnetcustompub.bdsdevclus01iad.oraclevcn.com) ) ) bdsqlusr=(DESCRIPTION= (ADDRESS=(PROTOCOL=TCPS)(HOST=mgadwqs0.sub12071934190.bdsadw.oraclevcn.com)(PORT=1521)) (SECURITY=(SSL_SERVER_CERT_DN="CN=mgadwqs0.sub12071934190.bdsadw.oraclevcn.com")) (CONNECT_DATA=(SERVICE_NAME=bdsqlusr.mgadwqs0.sub12071934190.bdsadw.oraclevcn.com) ) )
- Use as informações da entrada
bdsqlusr
para criar o link de banco de dados.-- create database link BEGIN DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( db_link_name => 'QUERY_SERVER', hostname => 'query_server_hostname', port => 1521, service_name => 'bdsqlusr.mgadwqs0.sub12071934190.bdsadw.oraclevcn.com', ssl_server_cert_dn => 'CN=mgadwqs0.sub12071934190.bdsadw.oraclevcn.com', credential_name => 'QS_CRED', directory_name => 'QS_WALLET_DIR'); END; / -- select the current user on the Query Server using the database link select user from dual@query_server USER ----- ADMIN Elapsed: 00:00:00.0181 rows selected.
- Crie o link de Banco de Dados que utiliza a credencial.
- Executar a consulta.
Agora você pode consultar qualquer uma das tabelas disponíveis pelo Servidor de Consulta. O exemplo a seguir consulta os dados meteorológicos provenientes do Hive:
-- Query Weather data on Hive select * from weather_ext@query_server where rownum < 10; LOCATION REPORTED_DATE WIND_AVG PRECIPITATION SNOW SNOWDEPTH TEMP_MAX TEMP_MIN ------------------------- ------------- -------- ------------- ---- --------- -------- -------- NEWARK-NJ-LIBERTY-AIRPORT 2019-01-01 13 0.07 0 0 49 34 NEWARK-NJ-LIBERTY-AIRPORT 2019-01-02 7 0 0 0 39 33 NEWARK-NJ-LIBERTY-AIRPORT 2019-01-03 10 0 0 0 54 38 NEWARK-NJ-LIBERTY-AIRPORT 2019-01-04 8 0 0 0 50 32 NEWARK-NJ-LIBERTY-AIRPORT 2019-01-05 10 0.57 0 0 44 38 NEWARK-NJ-LIBERTY-AIRPORT 2019-01-06 13 0 0 0 43 26 NEWARK-NJ-LIBERTY-AIRPORT 2019-01-07 9 0 0 0 31 22 NEWARK-NJ-LIBERTY-AIRPORT 2019-01-08 2 0.13 0 0 39 30 NEWARK-NJ-LIBERTY-AIRPORT 2019-01-09 16 0.04 0 0 41 30 Elapsed: 00:00:01.0989 rows selected.