セキュリティーに関する考慮事項

セキュリティーに関する考慮事項

デフォルトでは、OpenVINO モデルサーバーのコンテナは、Linux* UID 5000 のローカルアカウント ovms のセキュリティー・コンテキストで開始します。これにより、Docker コンテナにはホストマシン上で昇格されたアクセス許可が与えられなくなります。これは、コンテナ化されたアプリケーションを実行するときに最小限のアクセス許可を使用するというベスト・プラクティスに沿ったものです。--user パラメーターを Docker run コマンドに追加することで、セキュリティー・コンテキストを変更できます。これは、アクセスが制限されたマウントされたモデルをロードするのに必要となる場合があります。セキュリティーをさらに強化するには、--read-only フラグを追加して、コンテナのルート・ファイルシステムへの書き込み操作を禁止することもできます。これにより、コンテナファイルの望ましくない変更を防止できます。モデル・リポジトリーに使用されるクラウドストレージ (S3、Google ストレージ、または Azure ストレージ) がルート・ファイルシステムを制限している場合は、--tmpfs /tmp フラグと組み合わせる必要があります。

mkdir -p models/resnet/1
wget -P models/resnet/1 https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/2/resnet50-binary-0001/FP32-INT1/resnet50-binary-0001.bin
wget -P models/resnet/1 https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/2/resnet50-binary-0001/FP32-INT1/resnet50-binary-0001.xml

docker run --rm -d --user $(id -u):$(id -g) --read-only --tmpfs /tmp -v ${PWD}/models/:/models -p 9178:9178 openvino/model_server:latest \
--model_path /models/resnet/ --model_name resnet

OpenVINO モデルサーバーは現在、gRPC および REST API エンドポイントでのアクセス制限とトラフィック暗号化を提供していません。エンドポイントは、ホスト上の Docker ネットワーク設定やネットワーク・ファイアウォールなどのネットワーク設定を使用して保護できます。推奨される構成は、トラフィックの暗号化とユーザー認証を提供するリバース・プロキシー・コンポーネントまたはロードバランサーの背後に OpenVINO モデルサーバーを配置することです。

関連情報


OpenVINO モデルサーバーには、クライアント・アプリケーションからのサービス拒否攻撃を防止するメカニズムがあります。それには次のものが含まれます。

  • 推論実行ストリームの数を設定すると、モデルごとに進行中の並列推論呼び出しの数を制限できます。NUM_STREAMS または PERFORMANCE_HINT プラグイン構成で調整できます。

  • gRPC スレッドの最大数を設定します。デフォルトでは、(8 * コア数) に設定されます。これは --grpc_max_threads パラメーターで変更できます。

  • REST および GRPC メッセージの最大サイズは 1GB - それより大きなメッセージは拒否されます。

  • max_concurrent_streams を設定すると、単一のクライアントから開始できる同時スレッドの数が定義されます。残りのスレッドはキューに投入されます。デフォルトは CPU コアの数と同じです。--grpc_channel_arguments grpc.max_concurrent_streams=8 で変更できます。

  • 要求バッファーの gRPC メモリー割り当て上限の設定 - デフォルトは 2GB です。--grpc_memory_quota=2147483648 で変更できます。値 0 は割り当て上限を無効にします。


  • MediaPipe は、グラフの初期化中にすべての設定を検証しません。一部の設定は、グラフ作成フェーズ中 (要求処理時) にチェックされます。したがって、デプロイ前にサンプル要求を KServe エンドポイントに送信して構成をテストすることを推奨します。