Présentation du package Python et de la CLI d'Oblivious !
Nous sommes ravis d'annoncer la sortie de notre package Python, intégré à un cli. Cette version facilite considérablement l'utilisation de nos OpenAPI et améliore le flux de travail des clients.
Arrière-plan
Parlons un peu plus d' Oblivious , avant de continuer. Chez Oblivious, nous travaillons à améliorer la technologie de confidentialité et à aider au traitement transparent des données confidentielles. Nos outils vous aident à créer et à déployer des API à l'aide d'enclaves sécurisées sur des plateformes cloud. Nos documents expliquent en détail comment nous y parvenons. Nos outils peuvent être utilisés pour le déploiement de deux manières, d'abord via notre interface utilisateur de console et ensuite via nos OpenAPI .
En bref, nos outils vous permettent de créer une image Docker et de la déployer dans une enclave sécurisée. Ils offrent également un proxy sécurisé qui vous permet de vous connecter à l'enclave sans avoir besoin de faire confiance à l'hôte.
Cette version vise à fournir un moyen plus simple d'interagir avec nos OpenAPI, avec notre package python PyOblv et cli oblv-ctl .
PyOblv
PyOblv est le package python implémentant toutes les OpenAPI décrites par Oblivious. Le package permet une interaction avec l'API sans avoir besoin de lire la documentation ou de comprendre l'implémentation. Il peut être facilement intégré à votre application et réduire le besoin de consulter le tableau de bord chaque fois que vous souhaitez lancer un déploiement.
oblv-ctl
Lorsque vous installez PyOblv , vous obtenez également une CLI installée. La commande oblv-ctl vous permettra d'exécuter toutes les opérations définies dans le package directement depuis la ligne de commande. L'outil est pratique lorsque l'utilisateur veut éviter d'écrire un script lors de l'appel des API Oblv.
Commencer
Pour commencer votre voyage avec Oblivious, vous pouvez vous inscrire sur Oblivious Console . Une fois enregistré, passez à l'écran des paramètres. Dans les paramètres, vous verrez une option pour générer une clé API. Gardez cette clé à portée de main.
Avec cette clé, vous pouvez vous authentifier via PyOblv et oblv-ctl et poursuivre la création de l'enclave.
Authentification
Le script python ira de l'avant comme indiqué ci-dessous. Le client généré contient toutes les opérations que vous pouvez effectuer.
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'image du menu fixe de base. Vous pouvez choisir parmi quelques options.
- oblv_ubuntu_18_04_proxy — Services Oblivious en plus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api - Services Oblivious avec l'API NSM au-dessus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_python_3_8 - Services Oblivious avec Python 3.8 au-dessus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api_python_3_8 - Services Oblivious avec Python 3.8 et API NSM au-dessus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_python_3_9 - Services Oblivious avec Python 3.9 au-dessus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api_python_3_9 — Oblivious Services avec Python 3.9 et l'API NSM en plus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_node_14 - Services Oblivious avec NodeJs 14 au-dessus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api_node_14 - Services Oblivious avec NodeJs 14 et API NSM au-dessus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_node_16 - Services Oblivious avec NodeJs 16 au-dessus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api_node_16 - Services Oblivious avec NodeJs 16 et API NSM au-dessus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_node_18 - Services Oblivious avec NodeJs 18 au-dessus d'Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api_node_18 - Services Oblivious avec NodeJs 18 et API NSM au-dessus d'Ubuntu 18.04
- auth_name — Nom de la méthode d'authentification.
- auth_type — Le type d'authentification utilisé. Pour l'instant, la seule valeur autorisée est les en-têtes signés
- nom_rôle — Nom du rôle.
- role_description — Décrire la fonctionnalité de ce rôle.
- role_cardinality — Il s'agit du nombre d'utilisateurs pouvant assumer ce rôle.
- role_auth — Représente l'approche d'authentification précédemment définie à utiliser pour authentifier cet utilisateur.
- path — Le chemin à ajouter à l'URL de l'instance parente. access — Liste séparée par des virgules des rôles qui ont accès à ce chemin (ils doivent exister dans les rôles)
- short_description — Une courte description de la fonctionnalité de chemin
- name — Le nom de l'argument de construction
- type — Type de l'argument. Les valeurs acceptables sont {number, string, integer, boolean}
- required_arg — Indique si cet argument est obligatoire ou facultatif pour la construction du service. C'est une valeur booléenne.
- entrant — Une liste de ports sur lesquels le trafic entrant doit être autorisé. Chaque objet de la liste doit avoir
- name — Nom du trafic
- type — Type de trafic. Seul TCP est autorisé
- port — Port de trafic
- sortant — Trafic sortant autorisé à partir de l'enclave. Laissez-la comme une liste vide en cas d'absence de trafic sortant. Chaque objet doit avoir -
- name — Nom du trafic
- type — Type de trafic. Seul TCP est autorisé
- domaine — La partie FQDN de l'URL à laquelle autoriser l'accès. Exemple : console.oublieux.ai
- port — Port de trafic
- author — Nom du ou des auteurs du service (séparés par des virgules)
- author_email — Courriel du ou des auteurs du service (séparés par des virgules)
- git — Source GIT
- version — Version du service (Major.Minor.Patch)
- docs — Emplacement d'un fichier de démarquage ou d'un dossier de démarquage avec au moins un fichier nommé index.md
- links_sec_ops - Tableau de portes de qualité pour la sécurité et la 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 Si elle est fournie, la référence est considérée comme une balise sur le référentiel.
- –service-file Fichier Service.yaml au format JSON. Non autorisé avec - tag
Pour créer une enclave, vous devez décider de quelques paramètres -
- nom_déploiement — Un nom de déploiement unique. Vous ne pouvez pas avoir deux
déploiements en cours d'exécution portant le même nom. - region_name — peut être l'une des régions AWS de
- us-east-1 (Virginie du Nord)
- us-west-2 (Oregon)
- eu-central-1 (Francfort)
- eu-west-2 (Londres)
- visibilité — privée ou publique
- is_dev_env — Vrai ou Faux .
- tags — Une liste de tags pour votre déploiement
- account_type — Il s'agit du type VCS, et seul GitHub*** est
pris en charge pour l'instant. - build_args — Arguments spécifiques à votre déploiement. Cela inclut l'ajout d'utilisateurs à leurs rôles avec leurs clés publiques, leurs arguments d'exécution et
tout argument supplémentaire pour votre build. Il inclut également la
taille de l'infra nécessaire au déploiement. Les options sont - - c5.xlarge — CPU : 4 RAM : 8 Go — Utilisation des crédits : 68,0/h
- m5.xlarge — CPU : 4 RAM : 16 Go — Utilisation des crédits :
76,8/h - r5.xlarge — CPU : 4 RAM : 32 Go — Utilisation des crédits :
100,8/h - c5.2xlarge — CPU : 8 RAM : 16 Go — Utilisation des crédits :
136,0/h - m5.2xlarge — CPU : 8 RAM : 32 Go — Utilisation du crédit :
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 S'il est fourni, le déploiement est rendu public, sinon il reste privé et non visible pour les autres utilisateurs.
- –is-dev Définit l'environnement du déploiement en tant que DEV
- –region Région où l'enclave sera déployée. Les options incluent ["us-east-1" (Virginie du Nord), "us-west-2" (Oregon), "eu-central-1" (Francfort), "eu-west-2" (Londres)] . La valeur par défaut est us-east-1
- –args-file arguments chemin du fichier pour le déploiement de l'enclave
Avec le script python :
client.remove_deployment("<your_deployment_id>")
oblv-ctl deployment terminate DEPLOYMENT_ID
Nos API sont actuellement en version alpha et reçoivent des mises à jour régulières, ce qui entraîne des mises à jour fréquentes de notre package. Il y a environ 28 opérations prises en charge par PyOblv maintenant, mais ce nombre augmentera avec les futures versions pour fournir plus de support autour des enclaves.
Si vous avez besoin d'éclaircissements supplémentaires ou si vous avez des idées à partager, n'hésitez pas à nous contacter sur Discord .
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































