Представляем пакет Python Oblivious и интерфейс командной строки!
Мы рады объявить о выпуске нашего пакета Python, интегрированного с cli. Этот выпуск значительно упрощает использование наших OpenAPI и улучшает рабочий процесс клиента.
Фон
Давайте поговорим немного больше об Oblivious , прежде чем продолжить. Мы в Oblivious работаем над совершенствованием технологий конфиденциальности и помогаем прозрачно обрабатывать конфиденциальные данные. Наши инструменты помогут вам создавать и развертывать API с помощью безопасных анклавов на облачных платформах. Наши документы очень подробно объясняют, как мы достигаем того же самого. Наши инструменты можно использовать для развертывания двумя способами: во-первых, через пользовательский интерфейс консоли , а во-вторых, через наши OpenAPI .
Короче говоря, наши инструменты позволяют создать образ докера и развернуть его в безопасном анклаве. Они также предлагают безопасный прокси-сервер, который позволяет вам подключаться к анклаву без необходимости доверять хосту.
Этот релиз предоставляет более простой способ взаимодействия с нашими OpenAPI, с нашим пакетом Python PyOblv и cli oblv-ctl .
ПиОблв
PyOblv — это пакет Python, реализующий все OpenAPI, описанные Oblivious. Пакет позволяет взаимодействовать с API без необходимости читать документацию или разбираться в реализации. Его можно легко интегрировать с вашим приложением и уменьшить необходимость посещать панель мониторинга всякий раз, когда вы хотите запустить развертывание.
oblv-ctl
Когда вы устанавливаете PyOblv , вы также устанавливаете CLI. Команда oblv-ctl позволит вам выполнять все операции, определенные в пакете, прямо из командной строки. Этот инструмент удобен, когда пользователь хочет избежать написания скрипта при вызове API Oblv.
Начиная
Чтобы начать свое путешествие с Oblivious, вы можете зарегистрироваться в Oblivious Console . После регистрации перейдите на экран настроек. В настройках вы увидите возможность сгенерировать ключ API. Держите этот ключ под рукой.
С помощью этого ключа вы можете пройти аутентификацию через PyOblv и oblv-ctl и приступить к созданию анклава.
Аутентификация
Сценарий Python будет работать, как показано ниже. Сгенерированный клиент содержит все операции, которые вы можете выполнять.
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 — базовый образ докера. Есть несколько вариантов, которые вы можете выбрать.
- oblv_ubuntu_18_04_proxy — Oblivious Services поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api — Oblivious Services вместе с NSM API поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_python_3_8 — Oblivious Services вместе с Python 3.8 поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api_python_3_8 — Oblivious Services вместе с Python 3.8 и NSM API поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_python_3_9 — Oblivious Services вместе с Python 3.9 поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api_python_3_9 — Oblivious Services вместе с Python 3.9 и NSM API поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_node_14 — Oblivious Services вместе с NodeJs 14 поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api_node_14 — Oblivious Services вместе с NodeJs 14 и NSM API поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_node_16 — Oblivious Services вместе с NodeJs 16 поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api_node_16 — Oblivious Services вместе с NodeJs 16 и NSM API поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_node_18 — Oblivious Services вместе с NodeJs 18 поверх Ubuntu 18.04
- oblv_ubuntu_18_04_proxy_nsm_api_node_18 — Oblivious Services вместе с NodeJs 18 и NSM API поверх Ubuntu 18.04
- auth_name — Имя метода аутентификации.
- auth_type — тип используемой аутентификации. На данный момент единственное допустимое значение — signed_headers.
- role_name — Имя роли.
- role_description — Опишите функциональность этой роли.
- role_cardinality — это количество пользователей, которые могут взять на себя эту роль.
- role_auth — представляет ранее определенный подход к аутентификации, который будет использоваться для аутентификации этого пользователя.
- path — Путь, который будет добавлен к URL-адресу родительского экземпляра. access — Список ролей, разделенных запятыми, у которых есть доступ к этому пути (они должны существовать в ролях)
- short_description — Краткое описание функциональности пути
- name — Имя аргумента сборки
- type — Тип аргумента. Допустимые значения: {число, строка, целое число, логическое значение}
- required_arg — показывает, является ли этот аргумент обязательным или необязательным для построения службы. Это логическое значение.
- inbound — список портов, на которые должен быть разрешен входящий трафик. Каждый объект в списке должен иметь
- name — Имя трафика
- тип — Тип трафика. Разрешен только TCP
- port — Порт трафика
- outbound — разрешен исходящий трафик из анклава. Оставьте его пустым в случае отсутствия исходящего трафика. Каждый объект должен иметь -
- name — Имя трафика
- тип — Тип трафика. Разрешен только TCP
- домен — часть полного доменного имени URL-адреса, к которой разрешен доступ. Пример: console.oblivious.ai
- port — Порт трафика
- author — Имя автора(ов) сервиса (через запятую)
- author_email — Электронная почта автора(ов) сервиса (через запятую)
- git — исходный код GIT
- version — Версия сервиса (Major.Minor.Patch)
- docs — Расположение файла уценки или папки уценки, по крайней мере, с одним файлом с именем index.md
- links_sec_ops — Массив качественных ворот для безопасности и качества
{
"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 Если указано, ссылка считается тегом в репозитории.
- –service-file Файл Service.yaml в формате JSON. Не допускается с тегом —
Чтобы создать анклав, вам нужно определиться с несколькими параметрами -
- deployment_name — уникальное имя развертывания. У вас не может быть двух
запущенных развертываний с одинаковым именем. - region_name — может быть одним из регионов AWS из
- us-east-1 (Северная Вирджиния)
- us-west-2 (Орегон)
- eu-central-1 (Франкфурт)
- eu-west-2 (Лондон)
- видимость — частная или публичная
- is_dev_env — Истина или Ложь .
- tags — список тегов для вашего развертывания.
- account_type — это тип VCS, и
пока поддерживается только GitHub***. - build_args — аргументы, характерные для вашего развертывания. Он включает в себя добавление пользователей к их ролям с их открытыми ключами, аргументами времени выполнения и
любыми дополнительными аргументами для вашей сборки. Он также включает размер инфраструктуры
, необходимый для развертывания. Варианты - - c5.xlarge — ЦП: 4 ОЗУ: 8 ГБ — Использование кредита: 68,0/ч
- m5.xlarge — ЦП: 4 ОЗУ: 16 ГБ — Использование кредитов:
76,8/ч - r5.xlarge — ЦП: 4 ОЗУ: 32 ГБ — Использование кредита:
100,8/ч - c5.2xlarge — ЦП: 8 ОЗУ: 16 ГБ — Использование кредита:
136,0/ч - m5.2xlarge — ЦП: 8 ОЗУ: 32 ГБ — Использование кредита:
153,6/ч
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 Если указано, развертывание становится общедоступным, в противном случае оно остается частным и невидимым для других пользователей.
- –is-dev Устанавливает среду развертывания как DEV
- –region Регион, в котором будет развернут анклав. Варианты включают ["us-east-1" (Северная Вирджиния), "us-west-2" (Орегон), "eu-central-1" (Франкфурт), "eu-west-2" (Лондон)] . Значение по умолчанию — us-east-1.
- –args-file путь к файлу аргументов для развертывания анклава
С помощью скрипта Python:
client.remove_deployment("<your_deployment_id>")
oblv-ctl deployment terminate DEPLOYMENT_ID
Наши API в настоящее время находятся в альфа-версии и получают регулярные обновления, что приводит к частым обновлениям нашего пакета. В настоящее время PyOblv поддерживает около 28 операций, но это число будет увеличиваться в будущих выпусках, чтобы обеспечить большую поддержку анклавов.
Если вам нужны дополнительные разъяснения или у вас есть какие-либо мысли, которыми вы можете поделиться, пожалуйста, не стесняйтесь обращаться к нам в Discord .

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































