Presentazione del pacchetto Python e della CLI di Oblivious!

Feb 10 2023
‍Siamo lieti di annunciare il rilascio del nostro pacchetto Python, integrato con un cli. Questa versione facilita notevolmente l'utilizzo delle nostre OpenAPI e migliora il flusso di lavoro del cliente.

‍Siamo lieti di annunciare il rilascio del nostro pacchetto Python, integrato con un cli. Questa versione facilita notevolmente l'utilizzo delle nostre OpenAPI e migliora il flusso di lavoro del cliente.‍

Per gentile concessione di AbsolutVision su Unsplash

Sfondo

Parliamo un po' di più di Oblivious , prima di procedere. Noi di Oblivious lavoriamo per migliorare la tecnologia della privacy e aiutare a elaborare in modo trasparente i dati riservati. I nostri strumenti ti aiutano a creare e distribuire API utilizzando enclavi sicure su piattaforme cloud. I nostri documenti spiegano in modo molto dettagliato come otteniamo lo stesso risultato. I nostri strumenti possono essere utilizzati per la distribuzione in due modi, in primo luogo tramite la nostra interfaccia utente della console e in secondo luogo tramite le nostre OpenAPI .

In breve, i nostri strumenti ti consentono di creare un'immagine docker e distribuirla in un'enclave sicura. Offrono anche un proxy sicuro che ti consente di connetterti all'enclave senza doverti fidare dell'host.

Questa versione fornisce un modo più semplice per interagire con le nostre OpenAPI, con il nostro pacchetto Python PyOblv e cli oblv-ctl .‍

PyOblv‍

PyOblv è il pacchetto python che implementa tutte le OpenAPI descritte da Oblivious. Il pacchetto consente l'interazione con l'API senza dover leggere la documentazione o comprendere l'implementazione. Può essere facilmente integrato con la tua applicazione e ridurre la necessità di visitare il dashboard ogni volta che desideri avviare un'implementazione.‍

oblv-ctl‍

Quando installi PyOblv , viene installata anche una CLI. Il comando oblv-ctl ti permetterà di eseguire tutte le operazioni definite nel pacchetto direttamente dalla riga di comando. Lo strumento è utile quando l'utente vuole evitare di scrivere uno script quando chiama le API Oblv.‍

Iniziare

Per iniziare il tuo viaggio con Oblivious, puoi registrarti su Oblivious Console . Una volta registrato, vai alla schermata delle impostazioni. Nelle impostazioni, vedrai un'opzione per generare una chiave API. Tieni questa chiave a portata di mano.

Con questa chiave, puoi autenticarti tramite PyOblv e oblv-ctl e procedere con la creazione dell'enclave.‍

Autenticazione

Lo script python andrà avanti come mostrato di seguito. Il client generato contiene tutte le operazioni che puoi eseguire.

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 — L'immagine della finestra mobile di base. Ci sono alcune opzioni tra cui puoi scegliere.
  • oblv_ubuntu_18_04_proxy — Servizi dimentichi su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api — Oblivious Services insieme all'API NSM su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_python_3_8 — Oblivious Services insieme a Python 3.8 su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api_python_3_8 — Oblivious Services insieme a Python 3.8 e NSM API su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_python_3_9 — Oblivious Services insieme a Python 3.9 su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api_python_3_9 — Oblivious Services insieme a Python 3.9 e NSM API su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_node_14 — Oblivious Services insieme a NodeJs 14 su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api_node_14 — Oblivious Services insieme a NodeJs 14 e NSM API su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_node_16 — Oblivious Services insieme a NodeJs 16 su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api_node_16 — Oblivious Services insieme a NodeJs 16 e NSM API su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_node_18 — Oblivious Services insieme a NodeJs 18 su Ubuntu 18.04
  • oblv_ubuntu_18_04_proxy_nsm_api_node_18 — Oblivious Services insieme a NodeJs 18 e NSM API su Ubuntu 18.04
  • auth_name — Nome del metodo di autenticazione.
  • auth_type — Il tipo di autenticazione utilizzato. Per ora, l'unico valore consentito è signed_headers
  • role_name — Nome del ruolo.
  • role_description — Descrivi la funzionalità di questo ruolo.
  • role_cardinality — Questo è il numero di utenti che possono assumere questo ruolo.
  • role_auth — Rappresenta l'approccio di autenticazione precedentemente definito da utilizzare per autenticare questo utente.
  • path — Il percorso da aggiungere all'URL dell'istanza padre. access — Elenco separato da virgole di ruoli che hanno accesso a questo percorso (devono esistere in ruoli)
  • short_description — Una breve descrizione della funzionalità del percorso
  • name — Il nome dell'argomento build
  • type — Tipo dell'argomento. I valori accettabili sono {numero, stringa, intero, booleano}
  • required_arg — Mostra se questo argomento è obbligatorio o facoltativo per la creazione del servizio. È un valore booleano.
  • inbound — Un elenco di porte su cui deve essere consentito il traffico in entrata. Ogni oggetto nell'elenco dovrebbe avere
  • name — Nome del traffico
  • type — Tipo di traffico. È consentito solo TCP
  • porto — Porto di traffico
  • outbound — Traffico in uscita consentito dall'enclave. Lascialo come un elenco vuoto in caso di assenza di traffico in uscita. Ogni oggetto dovrebbe avere -
  • name — Nome del traffico
  • type — Tipo di traffico. È consentito solo TCP
  • domain — La parte FQDN dell'URL a cui consentire l'accesso. Esempio: console.oblio.ai
  • porto — Porto di traffico
  • author — Nome dell'autore o degli autori del servizio (separati da virgola)
  • author_email — Email dell'autore(i) del servizio (separati da virgola)
  • git — Sorgente GIT
  • version — Versione del servizio (Major.Minor.Patch)
  • docs — Posizione di un file markdown o cartella di markdown con almeno un file denominato index.md
  • links_sec_ops — Array di quality gate per sicurezza e qualità‍

{
  "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

  • –tag Se fornito, ref è considerato un tag nel repository.
  • –service-file File Service.yaml in formato JSON. Non consentito con — tag‍

Per creare un'enclave, devi decidere alcuni dei parametri -‍

  • deployment_name — Un nome di distribuzione univoco. Non puoi avere due
    distribuzioni in esecuzione con lo stesso nome.
  • region_name — potrebbe essere una delle regioni AWS da
  • us-est-1 (Virginia settentrionale)
  • noi-ovest-2 (Oregon)
  • eu-central-1 (Francoforte)
  • eu-ovest-2 (Londra)
  • visibilità : privata o pubblica
  • is_dev_env — Vero o Falso .
  • tags — Un elenco di tag per la tua distribuzione
  • account_type — Questo è il tipo VCS e
    per ora è supportato solo GitHub***.
  • build_args — Argomenti specifici per la tua distribuzione. Include l'aggiunta di utenti ai loro ruoli con le loro chiavi pubbliche, argomenti di runtime e
    qualsiasi argomento aggiuntivo per la tua build. Include anche la
    dimensione dell'infrastruttura necessaria per la distribuzione. Le opzioni sono -
  • c5.xlarge — CPU:4 RAM:8 GB — Utilizzo del credito: 68,0/ora
  • m5.xlarge — CPU:4 RAM:16 GB — Utilizzo del credito:
    76,8/ora
  • r5.xlarge — CPU:4 RAM:32 GB — Utilizzo del credito:
    100,8/ora
  • c5.2xlarge — CPU:8 RAM:16 GB — Utilizzo del credito:
    136,0/ora
  • m5.2xlarge — CPU:8 RAM:32 GB — Utilizzo del credito:
    153,6/ora‍‍

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 Se fornito, la distribuzione viene resa pubblica altrimenti rimane privata e non visibile agli altri utenti.
  • –is-dev Imposta l'ambiente della distribuzione come DEV
  • –region Regione in cui verrà distribuito l'enclave. Le opzioni includono [“us-east-1” (N. Virginia), “us-west-2” (Oregon), “eu-central-1” (Francoforte), “eu-west-2” (Londra)] . Il valore predefinito è us-east-1
  • –args-file percorso del file degli argomenti per la distribuzione dell'enclave‍

‍Con lo script python:

client.remove_deployment("<your_deployment_id>")

oblv-ctl deployment terminate DEPLOYMENT_ID‍

‍Le nostre API sono attualmente in versione alpha e ricevono aggiornamenti regolari, con conseguenti aggiornamenti frequenti per il nostro pacchetto. Ci sono circa 28 operazioni supportate da PyOblv ora, ma questo numero aumenterà con le versioni future per fornire più supporto intorno alle enclavi.

Se hai bisogno di ulteriori chiarimenti o hai pensieri da condividere, non esitare a contattarci su Discord .‍
Se hai richieste di funzionalità aggiuntive o bug che vorresti che risolvessimo, aggiungili qui !