Oblivious の Python パッケージと CLI を紹介します。

Feb 10 2023
‍私たちは、cli と統合された Python パッケージのリリースを発表できることを嬉しく思います。このリリースにより、OpenAPI の使用が大幅に容易になり、顧客のワークフローが改善されます。

‍私たちは、cli と統合された Python パッケージのリリースを発表できることを嬉しく思います。このリリースでは、OpenAPI の使用が大幅に容易になり、顧客のワークフローが改善されます。

Unsplash の AbsolutVision 提供

バックグラウンド

次に進む前に、 Obliviousについてもう少し詳しく説明しましょう。私たち Oblivious は、プライバシー技術を強化し、機密データの透過的な処理を支援することに取り組んでいます。当社のツールは、クラウド プラットフォーム上で安全なエンクレーブを使用して API を構築およびデプロイするのに役立ちます。私たちのドキュメントでは、同じことをどのように達成するかについて詳しく説明しています。当社のツールは 2 つの方法で導入に使用できます。1 つはコンソール UI経由、もう 1 つはOpenAPI経由です。

つまり、私たちのツールを使用すると、Docker イメージを構築し、それを安全なエンクレーブにデプロイすることができます。また、ホストを信頼する必要なくエンクレーブに接続できる安全なプロキシも提供します。

このリリースでは、Python パッケージPyOblvおよび cli oblv-ctlを使用して、OpenAPI と対話する簡単な方法を提供します。

PyOblv‍

PyOblv は、 Oblivious で記述されたすべての OpenAPI を実装する Python パッケージです。このパッケージを使用すると、ドキュメントを読んだり実装を理解したりする必要がなくても、API と対話できます。アプリケーションと簡単に統合できるため、デプロイメントを開始するたびにダッシュボードにアクセスする必要性が減ります。

oblv-ctl‍

PyOblv をインストールすると、CLI もインストールされます。oblv-ctlコマンドを使用すると、パッケージに定義されているすべての操作をコマンド ラインから直接実行できます。このツールは、ユーザーが Oblv API を呼び出すときにスクリプトの作成を避けたい場合に便利です。

入門

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 — 基本の Docker イメージ。選択できるオプションがいくつかあります。
  • oblv_ubuntu_18_04_proxy — Ubuntu 18.04 上の Oblivious サービス
  • oblv_ubuntu_18_04_proxy_nsm_api — Ubuntu 18.04 上の Oblivious サービスと NSM API
  • oblv_ubuntu_18_04_proxy_python_3_8 — Ubuntu 18.04 上の Oblivious Services と Python 3.8
  • oblv_ubuntu_18_04_proxy_nsm_api_python_3_8 — Ubuntu 18.04 上の Oblivious サービスと Python 3.8 および NSM API
  • oblv_ubuntu_18_04_proxy_python_3_9 — Ubuntu 18.04 上の Oblivious Services と Python 3.9
  • oblv_ubuntu_18_04_proxy_nsm_api_python_3_9 — Ubuntu 18.04 上の Oblivious サービスと Python 3.9 および NSM API
  • oblv_ubuntu_18_04_proxy_node_14 — Ubuntu 18.04 上の NodeJs 14 と Oblivious サービス
  • oblv_ubuntu_18_04_proxy_nsm_api_node_14 — Ubuntu 18.04 上の NodeJs 14 および NSM API を備えた Oblivious サービス
  • oblv_ubuntu_18_04_proxy_node_16 — Ubuntu 18.04 上の NodeJs 16 と Oblivious サービス
  • oblv_ubuntu_18_04_proxy_nsm_api_node_16 — Ubuntu 18.04 上の NodeJs 16 および NSM API を備えた Oblivious サービス
  • oblv_ubuntu_18_04_proxy_node_18 — Ubuntu 18.04 上の NodeJs 18 と Oblivious サービス
  • oblv_ubuntu_18_04_proxy_nsm_api_node_18 — Ubuntu 18.04 上の NodeJs 18 および NSM API を備えた Oblivious サービス
  • auth_name — 認証方法の名前。
  • auth_type — 使用される認証のタイプ。現時点では、許可される値はsigned_headersのみです
  • role_name — ロールの名前。
  • role_description — このロールの機能を説明します。
  • role_cardinality — これは、このロールを引き受けることができるユーザーの数です。
  • role_auth — このユーザーの認証に使用される、以前に定義された認証アプローチを表します。
  • path — 親インスタンス URL に追加されるパス。access — このパスにアクセスできるロールのカンマ区切りのリスト (ロール内に存在する必要があります)
  • short_description — パス機能の簡単な説明
  • name — ビルド引数の名前
  • type — 引数のタイプ。使用できる値は {数値、文字列、整数、ブール値} です。
  • required_arg — この引数がサービスの構築に必須であるかオプションであるかを示します。これはブール値です。
  • bound — 受信トラフィックが許可されるポートのリスト。リスト内の各オブジェクトには次のものが必要です
  • name — トラフィック名
  • type — トラフィック タイプ。TCPのみが許可されます
  • port — トラフィック ポート
  • outbound — エンクレーブからのアウトバウンド トラフィックが許可されます。送信トラフィックがない場合は、空のリストのままにしておきます。各オブジェクトには次のものが必要です -
  • name — トラフィック名
  • type — トラフィック タイプ。TCPのみが許可されます
  • ドメイン— アクセスを許可する URL の FQDN 部分。例: console.oblivious.ai
  • port — トラフィック ポート
  • author — サービスの作成者の名前 (カンマ区切り)
  • author_email — サービスの作成者の電子メール (カンマ区切り)
  • git — GIT ソース
  • version — サービスのバージョン (Major.Minor.Patch)
  • docs — マークダウン ファイル、または少なくとも 1 つの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指定すると、ref はリポジトリ上のタグとみなされます。
  • –service-file JSON 形式の Service.yaml ファイル。— タグは使用できません‍

エンクレーブを作成するには、いくつかのパラメーターを決定する必要があります -‍

  • deployment_name — 一意のデプロイメント名。
    同じ名前の2 つのデプロイメントを実行することはできません。
  • region_name — の AWS リージョンの 1 つである可能性があります。
  • us-east-1 (バージニア北部)
  • us-west-2 (オレゴン州)
  • eu-central-1 (フランクフルト)
  • eu-west-2 (ロンドン)
  • 可視性-プライベートまたはパブリック
  • is_dev_env — TrueまたはFalse。
  • tags — デプロイメントのタグのリスト
  • account_type — これは VCS タイプであり、
    現時点では GitHub*** のみがサポートされています。
  • build_args — デプロイメントに固有の引数。
    これには、公開キー、実行時引数、ビルドの追加引数を使用してユーザーをロールに追加することが含まれます。
    これには、展開に必要なインフラストラクチャのサイズも含まれます。オプションは次のとおりです -
  • c5.xlarge — CPU:4 RAM:8 GB — クレジット使用率: 68.0/時
  • m5.xlarge — CPU:4 RAM:16 GB — クレジット使用率:
    76.8/時
  • r5.xlarge — CPU:4 RAM:32 GB — クレジット使用量:
    100.8/時
  • c5.2xlarge — CPU:8 RAM:16 GB — クレジット使用率:
    136.0/時
  • m5.2xlarge — CPU:8 RAM:32 GB — クレジット使用量:
    153.6/hr‍‍

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までご連絡ください。
追加の機能リクエストや対処してほしいバグがある場合は、ここに追加してください。