Представляем пакет Python Oblivious и интерфейс командной строки!

Feb 10 2023
‍Мы рады объявить о выпуске нашего пакета Python, интегрированного с cli. Этот выпуск значительно упрощает использование наших OpenAPI и улучшает рабочий процесс клиента.

‍Мы рады объявить о выпуске нашего пакета Python, интегрированного с cli. Этот выпуск значительно упрощает использование наших OpenAPI и улучшает рабочий процесс клиента.‍

Предоставлено AbsolutVision на Unsplash

Фон

Давайте поговорим немного больше об 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 .