Upgrade to Pro — share decks privately, control downloads, hide ads and more …

202408-SlackTeamsAPI-ESP_FULL.pdf

 202408-SlackTeamsAPI-ESP_FULL.pdf

Las aplicaciones de mensajería hacen más que facilitar la comunicación: son centros que aceleran el trabajo a lo largo de su recorrido desde la idea hasta su finalización. Los complementos de Slack y MS Teams trasladan el trabajo que antes se realizaba con herramientas dedicadas a una interfaz única y familiar del chat. Lo que comenzó como aplicaciones simples que conectaban personas y equipos ahora son plataformas indispensables que unen a las personas con los procesos, aumentan la productividad e impulsan la colaboración.

Una de las últimas fronteras de la integración es conectar el chat a las bases de datos, una idea que podría parecer de poco valor. Sin embargo, así como los complementos de chat simplificaron otros flujos de trabajo, permitir las comunicaciones de la base de datos al chat revoluciona la forma en que las organizaciones acceden a los recursos de las bases de datos. Las API simples y estandarizadas permiten a las organizaciones crear rápidamente servicios personalizados sobre una plataforma confiable y aprovechar el acceso basado en roles existente.

Esta sesión comienza con una introducción a las integraciones de base de datos a chat posibles a través de los paquetes integrados de Oracle, incluido el nuevo paquete DBMS_CLOUD_NOTIFICATION. Aprenderá cómo configurar y proteger notificaciones pasivas desde una base de datos Oracle a los clientes y luego descubrirá formas de ampliar esta relación, implementando una plataforma totalmente interactiva que permite a los usuarios emitir comandos de base de datos directamente desde un cliente de chat. La sesión concluye con aplicaciones de ejemplo, una discusión sobre las mejores prácticas y una cobertura de estrategias y consideraciones de seguridad.

Sean Scott

August 05, 2024
Tweet

More Decks by Sean Scott

Other Decks in Technology

Transcript

  1. LAOUC Community Tour 2024 2 a 23 de Agosto 2024

    Utilice Slack y MS Teams para observar y controlar las bases de datos de Oracle
  2. Database Reliability Engineering MAA ⁘ RAC ⁘ RMAN Data Guard

    ⁘ Sharding ⁘ Partitioning Information Lifecycle Management Exadata & Engineered Systems Database Modernization Upgrades ⁘ Patching ⁘ Migrations Cloud ⁘ Hybrid Automation DevOps ⁘ IaC ⁘ Containers ⁘ Terraform Vagrant ⁘ Ansible Observability AHF ⁘ TFA ⁘ CHA ⁘ CHM
  3. www.viscosityna.com @ViscosityNA Oracle on Docker Running Oracle Databases in Linux

    Containers Free sample chapter: https://oraclesean.com
  4. km mi Mexico 3,584 2,227 Guatemala 1,056 656 Costa Rica

    854 531 Panama 1,813 1,127 Chile 4,985 3,098 Brazil 2,617 1,626 Uruguay 1,567 974 Argentina 221 137 Paraguay 1,037 644 Home 9,753 6,061 ------ ------ 27,487 17,081 ¡Me gustan los aviones! ¡Me gustas tú! ¡Me gusta viajar! ¡Me gustas tú! ~ Manu Chao
  5. @ViscosityNA www.viscosityna.com Oracle ➞ Slack: enviar un canal por correo

    • Agregar la aplicación de correo electrónico en un canal • Requiere el plan pago • Obtenga la dirección de correo electrónico única del canal • Enviar correo electrónico • UTL_SMTP
  6. @ViscosityNA www.viscosityna.com Oracle ➞ Slack: Webhooks entrantes • Agregue la

    aplicación Webhooks entrantes a Slack • Disponible con el nivel gratuito • Instalar y configurar webhooks entrantes en un canal • Enviar mensaje REST vía POST • UTL_HTTP
  7. @ViscosityNA www.viscosityna.com Oracle ➞ Slack: Webhooks entrantes • Descargue el

    certificado de CA raíz de Slack/Teams • crear una billetera • Agregue el certificado a la billetera • Enviar una notificación
  8. @ViscosityNA www.viscosityna.com Cree una billetera y agregue el certificado Agregar

    certificado ------------------- $ orapki wallet add -wallet $WALLET_DIR \ -trusted_cert -cert \ "$WALLET_DIR/slack-com.pem" \ -pwd $WALLET_PWD Establecer entorno ------------------ export WALLET_DIR=/wallet_directory export WALLET_PWD=password Crear billetera --------------- $ orapki wallet create -wallet \ $WALLET_DIR -pwd $WALLET_PWD \ -auto_login
  9. @ViscosityNA www.viscosityna.com Enviar mensajes declare req utl_http.req; res utl_http.resp; url

    varchar2(4000) := :webhook_url; name varchar2(4000); buffer varchar2(4000); content varchar2(4000); slack_channel varchar2(40) := '#dba'; slack_user varchar2(40) := 'ora-bot'; slack_text varchar2(4000) := 'Test post from database '; slack_icon varchar2(40) := ':mega:'; db_name v$database.name%TYPE;
  10. @ViscosityNA www.viscosityna.com Enviar mensajes begin utl_http.set_wallet(:wallet_dir, :wallet_pwd); select name into

    db_name from v$database; content := '{"channel": "' || slack_channel || '", ' || '"username": "' || slack_user || '", ' || '"text": "' || slack_text || db_name || '", ' || '"icon_emoji": "' || slack_icon || ‘"}';
  11. @ViscosityNA www.viscosityna.com Enviar mensajes req := utl_http.begin_request(url, 'POST',' HTTP/1.1'); utl_http.set_header(req,

    'user-agent', 'mozilla/4.0'); utl_http.set_header(req, 'content-type', 'application/json'); utl_http.set_header(req, 'Content-Length', length(content)); utl_http.write_text(req, content); res := utl_http.get_response(req); begin loop utl_http.read_line(res, buffer); dbms_output.put_line(buffer); end loop; utl_http.end_response(res); exception when utl_http.end_of_body then utl_http.end_response(res); end;
  12. Help Desk crea un nuevo caso y asigna el ticket

    a Desarrollo Desarrollo revisa los registros de promoción. Parecen tener razón. El ticket está marcado como RESUELTO, se solicita a Marketing que lo confirme. Desarrollo investiga; Esto parece ser un problema conocido de la aplicación. El equipo de DBA tiene un script para solucionarlo. El ticket está asignado al equipo de DBA. El usuario de marketing no puede activar una promoción. Contactos Mesa de ayuda El equipo de DBA revisa el ticket y ejecuta un script para solucionar el problema. Ticket reasignado a Desarrollo para su revisión. Marketing confirma que el problema está solucionado. El billete está cerrado.
  13. Help Desk crea un nuevo caso y asigna el ticket

    a Desarrollo Desarrollo revisa los registros de promoción. Parecen tener razón. El ticket está marcado como RESUELTO, se solicita a Marketing que lo confirme. Desarrollo investiga; Esto parece ser un problema conocido de la aplicación. El equipo de DBA tiene un script para solucionarlo. El ticket está asignado al equipo de DBA. El usuario de marketing no puede activar una promoción. Contactos Mesa de ayuda El equipo de DBA revisa el ticket y ejecuta un script para solucionar el problema. Ticket reasignado a Desarrollo para su revisión. Marketing confirma que el problema está solucionado. El billete está cerrado. Resolver esto involucra al usuario final, la mesa de ayuda, los desarrolladores y DBA. Múltiples pasos toman tiempo y afectan a los clientes externos y a los equipos internos.
  14. La API de Slack interpreta el comando. Pasa datos de

    promoción al backend. Llamadas de backend al paquete PL/SQL. El usuario de marketing recibe confirmación de la corrección en el canal El paquete interpreta los parámetros, valida las entradas, confirma la condición y ejecuta el parámetro fix. OUT automatizado pasado al backend. El usuario de marketing no puede agregar una promoción. Invoca un comando de chatbot en el canal #marketing con datos de promoción. El backend procesa el parámetro OUT. Identifica el éxito/fracaso. Construye el paquete de respuesta. Pasa la respuesta a la API de Slack
  15. La API de Slack interpreta el comando. Pasa datos de

    promoción al backend. Llamadas de backend al paquete PL/SQL. El usuario de marketing recibe confirmación de la corrección en el canal El paquete interpreta los parámetros, valida las entradas, confirma la condición y ejecuta el parámetro fixOUT automatizado pasado al backend. El usuario de marketing no puede agregar una promoción. Invoca un comando de chatbot en el canal #marketing con datos de promoción. El backend procesa el parámetro OUTIdentifica el éxito/ fracasoConstruye el paquete de respuestaPasa la respuesta a la API de Slack Expone de forma segura el punto final al chat La automatización valida y ejecuta código Usuario final facultado para solucionar problemas cuando los descubra Los equipos internos ya no participan
  16. @ViscosityNA www.viscosityna.com Oracle 㲗 Slack: aplicaciones de Slack • Base

    para ampliar Slack • Mensaje a través de API web, webhooks • Leer mensajes a través de Web, RTM y API de eventos • Responder a través de la API de eventos • Crear comandos de barra personalizados (/command) • Ejecutar robots • Construya interacciones inteligentes
  17. @ViscosityNA www.viscosityna.com Flask/Python interpreta la carga útil JSONValida y construye

    SQLEnvía SQL a través de cx_Oracle Slack muestra la carga útil en el canal Oracle ejecuta PL/SQL y devuelve resultados al cliente El usuario ingresa un comando. Slack envía JSON a través de HTTP POST. Flask/Python lee e interpreta el resultado. Devuelve la carga útil JSON o el webhook a Slack. ¡Muchas opciones para el backend!
  18. @ViscosityNA www.viscosityna.com /command configuración create user slack identified by ...

    grant create session to slack; create user appuser identified by ... alter user appuser quota ... on <ts>; create or replace package appuser.<pkg> ... grant execute on appuser.<pkg> to slack; create synonym slack.<pkg> for appuser.<pkg>;
  19. @ViscosityNA www.viscosityna.com /command configuración # firewall-cmd --zone=public --permanent --add-port=0000/tcp #

    firewall-cmd --reload # firewall-cmd --list-all public (active) ... ports: 0000/tcp ...
  20. @ViscosityNA www.viscosityna.com /command configuración # yum -y install yum-utils python36

    # pip install --upgrade pip # python -m pip install cx_Oracle flask # pip install Flask-API python-dotenv slack # pip install slackclient slackbot requests
  21. @ViscosityNA www.viscosityna.com /command configuración import os import cx_Oracle from flask

    import Flask app = Flask(__name__) @app.route('/') def index(): con = cx_Oracle.Connection('slack', 'pass', 'localhost:1521/orclpdb1') cur = con.cursor() cur.execute("select 'Hello, World' from dual") col = cur.fetchone()[0] ...
  22. @ViscosityNA www.viscosityna.com De los puntos débiles... • Reactivación de cuenta

    • Restablecimiento de contraseña • Informes ad hoc • Actualizar sistemas de desarrollo/prueba • Crear instancias de nuevas bases de datos Automatically gene tickets when appro
  23. @ViscosityNA www.viscosityna.com ¡...hasta analgésicos! • Reactivación de cuenta de autoservicio

    • Restablecimiento de contraseña de autoservicio • Informes de autoservicio • Actualización de prueba/desarrollo de autoservicio • Creación de instancias de bases de datos de autoservicio Automatically gene tickets when appro
  24. @ViscosityNA www.viscosityna.com Servicios proactivos • Advertencias de vencimiento de cuenta

    • Compartir eventos con no DBA • ORA-1555 • ORA-60 • Exponer registros de DB • Informe: • Estado de la copia de seguridad, error • Actividad de inicio de sesión inusual • Bloqueos de cuenta • Excepciones de auditoría • Crecimiento de objetos
  25. @ViscosityNA www.viscosityna.com Consideraciones de desarrollo • Escribir PL/SQL modular •

    Usar parámetros y variables • ¡No codifiques nada! • Agregar registro a v0.1 • No es una ocurrencia tardía • Quien que cuando • Considere múltiples niveles/verbosidad
  26. @ViscosityNA www.viscosityna.com Consideraciones de desarrollo • Utilice controladores de excepciones

    • ... ¡pero no WHEN OTHERS THEN NULL! • No exponer SQL—limpiar las entradas • ¡Aislar el código del usuarios y de los datos!
  27. @ViscosityNA www.viscosityna.com Consideraciones de desarrollo • Limitar recursos a través

    de perfiles • Evite DDoS en el chat • ¡No asigne usuarios al perfil default! • Controlar el acceso mediante roles • Administrar roles, no usuarios
  28. @ViscosityNA www.viscosityna.com Roles de aplicación • Limite los permisos al

    rol del bot: • create session • execute en paquetes API • Limite los permisos al rol de API: • Separado del dueño de la aplicación o de los datos • 18c+ Definir como usuarios de solo esquema • <18c: No create session or connect
  29. @ViscosityNA www.viscosityna.com Seguridad de aplicaciones • Limitar los permisos de

    la aplicación • Limitar aplicaciones a canales privados • Validar usuarios cuando sea necesario • Trate el desarrollo del chat como un proyecto "normal" • Control de versiones • Manejo de configuración • Incluir el monitoreo de registros en la huella operativa