¡Presentamos el paquete Python y la CLI de Oblivious!

Feb 10 2023
‍Nos complace anunciar el lanzamiento de nuestro paquete Python, integrado con un cli. Esta versión facilita significativamente el uso de nuestras OpenAPI y mejora el flujo de trabajo del cliente.

‍Nos complace anunciar el lanzamiento de nuestro paquete Python, integrado con un cli. Esta versión facilita significativamente el uso de nuestras OpenAPI y mejora el flujo de trabajo del cliente.‍

Cortesía de AbsolutVision en Unsplash

Fondo

Hablemos un poco más sobre Oblivious , antes de continuar. En Oblivious, trabajamos para mejorar la tecnología de privacidad y ayudar a procesar de manera transparente los datos confidenciales. Nuestras herramientas lo ayudan a crear e implementar API utilizando enclaves seguros en plataformas en la nube. Nuestros documentos explican con gran detalle cómo logramos lo mismo. Nuestras herramientas se pueden usar para la implementación de dos maneras, primero, a través de nuestra interfaz de usuario de la consola y, segundo, a través de nuestras OpenAPI .

En resumen, nuestras herramientas le permiten crear una imagen acoplable e implementarla en un enclave seguro. También ofrecen un proxy seguro que le permite conectarse al enclave sin necesidad de confiar en el host.

Este lanzamiento es para proporcionar una forma más fácil de interactuar con nuestras OpenAPI, con nuestro paquete de Python PyOblv y cli oblv-ctl.‍

PyOblv‍

PyOblv es el paquete de Python que implementa todas las OpenAPI descritas por Oblivious. El paquete permite la interacción con la API sin necesidad de leer la documentación o comprender la implementación. Se puede integrar fácilmente con su aplicación y reducir la necesidad de visitar el panel cada vez que desee iniciar una implementación.‍

oblv-ctl‍

Cuando instala PyOblv , también obtiene una CLI instalada. El comando oblv-ctl le permitirá ejecutar todas las operaciones definidas en el paquete directamente desde la línea de comandos. La herramienta es útil cuando el usuario quiere evitar escribir un script al llamar a las API de Oblv.‍

Empezando

Para comenzar tu viaje con Oblivious, puedes registrarte en Oblivious Console . Una vez registrado, acceda a la pantalla de configuración. En la configuración, verá una opción para generar una clave API. Tenga esta llave a mano.

Con esta clave, puede autenticarse a través de PyOblv y oblv-ctl y continuar con la creación del enclave.‍

Autenticación

El script de python seguirá adelante como se muestra a continuación. El cliente generado contiene todas las operaciones que puede realizar.

from oblv import authenticate 
‍
client = authenticate(apikey=*your_api_key*)

oblv-ctl login *your_api_key*‍

from oblv import authenticate‍
client = authenticate (apikey=*your_api_key*) 
client.add_service(repo_owner="ObliviousAI", repo_name="FastAPI-Enclave-Services", ref="master")‍

  • base_image — La imagen base de la ventana acoplable. Hay algunas opciones entre las que puede elegir.
  • oblv_ubuntu_18_04_proxy — Servicios olvidados sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api — Servicios olvidados junto con la API de NSM sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_python_3_8 — Servicios olvidados junto con Python 3.8 sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api_python_3_8 — Servicios olvidados junto con Python 3.8 y API NSM sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_python_3_9 — Servicios olvidados junto con Python 3.9 sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api_python_3_9 — Servicios olvidados junto con Python 3.9 y NSM API sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_node_14 — Servicios olvidados junto con NodeJs 14 sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api_node_14 — Servicios olvidados junto con NodeJs 14 y NSM API sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_node_16 — Servicios olvidados junto con NodeJs 16 sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api_node_16 — Servicios olvidados junto con NodeJs 16 y NSM API sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_node_18 — Servicios olvidados junto con NodeJs 18 sobre Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api_node_18 — Servicios olvidados junto con NodeJs 18 y NSM API sobre Ubuntu 18.04
  • auth_name — Nombre del método de autenticación.
  • auth_type — El tipo de autenticación utilizada. Por ahora, el único valor permitido es named_headers
  • role_name — Nombre del rol.
  • role_description — Describe la funcionalidad de este rol.
  • role_cardinality : este es el número de usuarios que pueden asumir este rol.
  • role_auth : representa el enfoque de autenticación definido previamente que se utilizará para autenticar a este usuario.
  • ruta : la ruta que se agregará a la URL de la instancia principal. acceso — Lista separada por comas de roles que tienen acceso a esta ruta (deben existir en roles)
  • short_description — Una breve descripción de la funcionalidad de la ruta
  • name — El nombre del argumento de compilación
  • type — Tipo del argumento. Los valores aceptables son {número, cadena, entero, booleano}
  • required_arg : muestra si este argumento es obligatorio u opcional para crear el servicio. Es un valor booleano.
  • entrante : una lista de puertos en los que se permitirá el tráfico entrante. Cada objeto de la lista debe tener
  • name — Nombre del tráfico
  • type — Tipo de tráfico. Solo se permite TCP
  • port — Puerto de tráfico
  • outbound — Tráfico saliente permitido desde el enclave. Déjalo como una lista vacía en caso de que no haya tráfico saliente. Cada objeto debe tener -
  • name — Nombre del tráfico
  • type — Tipo de tráfico. Solo se permite TCP
  • dominio : la parte FQDN de la URL a la que se permite el acceso. Ejemplo: consola.oblivious.ai
  • port — Puerto de tráfico
  • author — Nombre del autor(es) del servicio (separados por comas)
  • author_email — Correo electrónico del autor(es) del servicio (separados por comas)
  • git — Fuente GIT
  • version — Versión del servicio (Major.Minor.Patch)
  • docs — Ubicación de un archivo o carpeta de rebajas con al menos un archivo llamado index.md
  • links_sec_ops — Matriz de puertas de calidad para seguridad y calidad‍

{
  "base_image": "oblv_ubuntu_18_04_proxy_nsm_api_python_3_8",
  "auth": [
    {
      "auth_name": "pkipsk",
      "auth_type": "signed_headers"
    }
  ],
  "roles": [
    {
      "role_auth": "pkipsk",
      "role_cardinality": 2,
      "role_description": "This is simply an example role for demonstration purposes",
      "role_name": "admin"
    }
  ],
  "paths": [
    {
      "access": "admin",
      "path": "/hello/",
      "short_description": "Hello world example"
    }
  ],
  "build_args": [
    {
      "name": "user_name",
      "type": "string",
      "required_arg": true
    }
  ],
  "traffic": {
    "inbound": [
      {
        "name": "inbound",
        "port": 80,
        "type": "tcp"
      }
   ],
  "outbound": [
    {
      "domain": "example.com",
      "name": "example",
      "port": 443,
      "type": "tcp"
    }
  ]
},
"meta": {
  "author": "Team Oblivious",
  "author_email": "[email protected]",
  "git": "https://github.com/ObliviousAI/FastAPI-Enclave-Services.git",
  "version": "0.1.0"
},
}

oblv-ctl service create [OPTIONS] REPO_OWNER REPO_NAME REF

  • –etiqueta Si se proporciona, la referencia se considera una etiqueta en el repositorio.
  • –service-file Archivo Service.yaml en formato JSON. No permitido con — etiqueta‍

Para crear un enclave, debe decidir algunos de los parámetros -‍

  • deployment_name — Un nombre de implementación único. No puede tener dos
    implementaciones en ejecución con el mismo nombre.
  • region_name : podría ser una de las regiones de AWS de
  • us-east-1 (Norte de Virginia)
  • us-west-2 (Oregón)
  • eu-central-1 (Fráncfort)
  • eu-west-2 (Londres)
  • visibilidad : privada o pública
  • is_dev_env — Verdadero o Falso .
  • etiquetas : una lista de etiquetas para su implementación
  • account_type : este es el tipo de VCS y,
    por ahora, solo se admite GitHub***.
  • build_args : argumentos específicos de su implementación. Incluye agregar usuarios a sus roles con sus claves públicas, argumentos de tiempo de ejecución y
    cualquier argumento adicional para su compilación. También incluye el
    tamaño de infraestructura necesario para el despliegue. Las opciones son -
  • c5.xlarge — CPU:4 RAM:8 GB — Utilización de crédito: 68,0/h
  • m5.xlarge — CPU:4 RAM:16 GB — Utilización de crédito:
    76,8/h
  • r5.xlarge — CPU:4 RAM:32 GB — Utilización de crédito:
    100,8/h
  • c5.2xlarge — CPU:8 RAM:16 GB — Utilización de crédito:
    136,0/h
  • m5.2xlarge — CPU:8 RAM:32 GB — Utilización de crédito:
    153,6/h‍‍

args = {
  "users": {
    "admin": [
      "user_name": "<your name>",
      "public key": "<your publickey>"
    ]
  },
  "infra_reqs":"m5.xlarge"
}‍

from oblv.models import CreateDeploymentInput
input = CreateDeploymentInput(
  owner="ObliviousAI",
  repo="FastAPI-Enclave-Services",
  account_type="github", ref="master",
  region-name="us-east-1", deployment="Depl",
  visibility="private",
  is_dev_env=True,
  tags=[],
  build_args=args
)
deployment = client.create_deployment(input)‍

oblv-ctl deployment create [OPTIONS] REPO_OWNER REPO_NAME REF NAME

  • –public Si se proporciona, la implementación se hace pública; de lo contrario, permanece privada y no visible para otros usuarios.
  • –is-dev Establece el entorno de la implementación como DEV
  • –region Región donde se implementará el enclave. Las opciones incluyen [“us-east-1” (Norte de Virginia), “us-west-2” (Oregón), “eu-central-1” (Fráncfort), “eu-west-2” (Londres)] . El valor predeterminado es us-east-1
  • –args-file ruta del archivo de argumentos para la implementación del enclave‍

‍Con el script de python:

client.remove_deployment("<your_deployment_id>")

oblv-ctl deployment terminate DEPLOYMENT_ID‍

‍Nuestras API se encuentran actualmente en alfa y reciben actualizaciones regulares, lo que resulta en actualizaciones frecuentes para nuestro paquete. Hay alrededor de 28 operaciones admitidas por PyOblv ahora, pero este número aumentará con versiones futuras para brindar más soporte en los enclaves.

Si necesita aclaraciones adicionales o tiene alguna idea para compartir, no dude en comunicarse con nosotros en Discord .‍
Si tiene solicitudes de funciones adicionales o errores que le gustaría que abordemos, agréguelos aquí .