""

SAP HANA Cloud Series Parte 3 – Cómo construir un escenario federado (I)

Si ha estado siguiendo la serie hasta ahora, en la Parte 1 habrá aprendido cómo crear un entorno de desarrollo, sincronizarlo con GitHub a través de SSH y crear un nuevo proyecto de base de datos.

Y en la Parte 2, habrá aprendido cómo definir estructuras y filas de tablas, cómo importar datos al espacio de desarrollo utilizando contenedores HDI y, finalmente, cómo configurar roles HDB con los privilegios apropiados.

Si aún no ha leído esas publicaciones, le sugerimos que regrese y se familiarice con ellas antes de trabajar en la Parte 3. 

En esta sesión, aprenderá a crear y administrar usuarios, incluida la creación de roles, certificados, fuentes remotas, etc. Los pasos que seguiremos en este artículo son fundamentales antes de continuar con la serie, ya que es vital que su configuración sea correcta para poder trabajar con artefactos de base de datos contenidos en una instancia externa. 

Aquí hay una descripción general de la arquitectura que usaremos en esta sesión: ejecutaremos cada uno de los pasos encima: 

Para los fines de este artículo, la Instancia 1 es idéntica a la instancia que creamos y configuramos anteriormente, en las Partes 1 y 2, y que ahora conectaremos a una instancia externa. 

La instancia 2 es la instancia externa donde estarán contenidos los artefactos que necesitamos. Para este artículo, y con fines de demostración, la instancia solo contiene una tabla de demostración denominada ‘T_CUSTOMER’.

1. Crear los usuarios y privilegios necesarios

Vaya al Explorador de la base de datos de SAP HANA para la instancia 1 y abra una ventana de SQL en él. Para hacerlo, puede hacer clic derecho en el nombre de la base de datos y seleccionar ‘Open SQL Console’:

Las siguientes líneas de código crearán 2 nuevos usuarios, elijasu propia contraseña y ejecutelas en la consola SQL que acaba de abrir. Antes de hacer esto, asegúrese de haber iniciado sesión en una cuenta de usuario que tenga suficientes privilegios; de lo contrario, use la función CONNECT SQL:

create user UPS password "<password>" no force_first_password_change set usergroup default; 

create user U1 password "<password>" no force_first_password_change set usergroup default; 

Al primer usuario lo hemos llamado “UPS”, que proviene de “user provide service”, que explicaremos más adelante cuando lo usemos. El otro usuario, “U1”, estará a cargo de la configuración. Tenga en cuenta que ambos usuarios tienen menos privilegios que el usuario administrador “DBADMIN”.

El siguiente paso es otorgar los privilegios necesarios al usuario U1:

grant create schema to U1; 

grant create remote source to U1; 

grant role admin to U1; 

También necesitamos crear un certificado para fuentes remotas, lo que hacemos así:

CREATE PSE FOR_REMOTE_SOURCES; 

CREATE CERTIFICATE FROM '-----BEGIN CERTIFICATE-----MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQkCAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=-----END CERTIFICATE-----' 

A continuación, para poder obtener el ID del certificado, podemos ejecutar lo siguiente: 

SELECT * FROM CERTIFICATES; 

Luego lo agregamos a la lista de certificados PSE. En este paso vincularemos el certificado que acabamos de crear con los disponibles para fuentes remotas:

ALTER PSE FOR_REMOTE_SOURCES ADD CERTIFICATE <certificate ID>; 

SET PSE FOR_REMOTE_SOURCES PURPOSE REMOTE SOURCES; 

Como explicación rápida, PSE contiene los certificados de clave pública que pertenecen a las CA en las que confía el servidor, por lo que solo los usuarios que presentan estos certificados pueden autenticarse.

2. Conectarse con la base de datos

Lo que se necesita a continuación es conectarse a la base de datos con el usuario U1, que es el que acabamos de crear. 

Agreguemos U1 como una conexión de base de datos. Para hacer esto, haga clic derecho en el nombre de la instancia y haga clic en ‘Add Database with Different User’. Una vez que se muestra la ventana emergente, ingrese las credenciales utilizadas al crear el usuario U1:

Si no aparece esta opción, necesitaremos crear una nueva conexión manualmente. El primer paso es ir a SAP BTP Cockpit a y hacer clic en la sección ‘SAP HANA Cloud’ en el panel izquierdo. Luego haga clic en ‘Actions’ y seleccione ‘Copy SQL Endpoint’:

Una vez que el Endpoint se haya copiado en su portapapeles, vuelva al Database Explorer y haga clic en el botón “+”. Seleccione ‘SAP HANA Database’ en el menú desplegable y copie el punto final en la sección ‘Host’ . Tenga en cuenta que el punto final copiado termina con ‘:port_number’, copie el número de puerto en el campo correcto y bórrelo de la sección de host. Finalmente, ingrese el nombre de usuario y la contraseña para el usuario U1 que creó anteriormente y marque la casilla ‘Save password’:

Luego, abra una SQL Console con el nuevo usuario y cree el esquema VT_DATABASE_I2:

CREATE SCHEMA VT_DATABASE_I2;

3. Creando una Fuente Remota 

Nuestro objetivo aquí es crear una tabla virtual que apunte a la base de datos de la Instancia 2, pero antes que nada, necesitamos crear una fuente remota. Expanda las opciones debajo de la base de datos que acabamos de crear, haga clic derecho en ‘Remote Source’ y seleccione la opción ‘Add Remote Source’. Ingrese la información necesaria y abra la fuente remota.

Con la fuente remota abierta, ingrese los filtros necesarios y haga clic en ‘Search’. Marque la casilla de verificación de la tabla y haga clic en ‘Create Virtual Object(s)’:

Cuando haga clic en el botón etiquetado como Paso 5 en la captura de pantalla, aparecerá un menú. Aquí, ingrese un nombre y el esquema donde desea crear la tabla virtual. En nuestro caso, usaremos el esquema VT_DATABASE_I2que creamos hace algunos pasos. Y en este caso la tabla se llamará VT_CUSTOMERS.

4. Gestión de autorizaciones 

Para trabajar con esta mesa virtual, necesitaremos configurar algunas autorizaciones. Regrese a la consola SQL y escriba los siguientes comandos: 

Primero, definimos un rol 'LOAD_VT_CUSTOMERS' que podrá cargar datos en la tabla:

create role LOAD_VT_CUSTOMERS; 

grant insert, update, delete on VT_DATABASE_I2.VT_CUSTOMERS to LOAD_VT_CUSTOMERS; 

grant LOAD_VT_CUSTOMERS to UPS with admin option; 

El siguiente rol que debemos crear es ‘SELECT_ON_VT_CUSTOMERS_WITH_GRANT’, que tendrá permisos de selección en la tabla, lo que nos permitirá ver los datos que contiene:

create role SELECT_ON_VT_CUSTOMERS_WITH_GRANT; 

grant select on VT_DATABASE_I2.VT_CUSTOMERS to SELECT_ON_VT_CUSTOMERS_WITH_GRANT with grant option; 

grant SELECT_ON_VT_CUSTOMERS_WITH_GRANT to "_SYS_DI#BROKER_CG"._SYS_DI_OO_DEFAULTS;

En las líneas de código a continuación, estamos definiendo los mismos privilegios que los anteriores, pero en este caso, se otorgan a los usuarios de la aplicación, no solo a los propietarios de los objetos:

create role SELECT_ON_VT_CUSTOMERS; 

grant select on VT_DATABASE_I2.VT_CUSTOMERS to SELECT_ON_VT_CUSTOMERS; 

grant SELECT_ON_VT_CUSTOMERS to BROKER_USER.RT_DEFAULTS; 

Finalmente, otorgamos el privilegio de crear tablas virtuales al usuario UPS. Como se mencionó anteriormente, esto se usará en una sesión posterior:

create role "createVTOnI2"; 

grant create virtual table on remote source INSTANCE_I2 to "createVTOnI2"; 

grant "createVTOnI2" to UPS with admin option;

Eso nos lleva al final de esta sesión. Esperamos que la haya encontrado interesante e informativa. Como dijimos anteriormente, los pasos en esta parte son cruciales para la siguiente parte, por lo que es posible que desee regresar y verificar sus configuraciones antes de unirse a nosotros para la parte 4 de la serie SAP HANA. En esa sesión, continuaremos con el trabajo que hemos realizado hoy para completar nuestra guía para crear un escenario federado; esté atento a nuestro blog para la próxima publicación.


EspañolEnglish