受け入れ可能な入力形式
self-hosted の Roboflow Inference サーバーが受け付ける入力形式と、pickle 化された numpy ペイロードや URL 画像取得など、より安全でないものを無効化する方法。
なぜこれが重要か
Inference サーバーは統合しやすいように設計されているため、便利だがセキュリティがやや低い可能性のあるデータ読み込み方法がいくつか利用できます。本番環境へのデプロイでは、設定オプションでそれらの挙動を無効にできます。
このページでは、ニーズに応じてサーバーを強化するか、より柔軟な動作を有効にする方法を説明します。
ピクル化された numpy オブジェクトのデシリアライズ
Inference サーバーにリクエストを送る方法の 1 つは、シリアライズされた numpy オブジェクトを使うことです:
import cv2
import pickle
import requests
image = cv2.imread("...")
img_str = pickle.dumps(image)
infer_payload = {
"model_id": "{project_id}/{project_version}",
"image": {
"type": "numpy",
"value": img_str,
},
}
res = requests.post(
"http://localhost:9001/infer/{task}",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json=infer_payload,
)バージョン v0.14.0以降、このペイロード型のデシリアライズはデフォルトで無効になっています。次の設定で有効化できます: ALLOW_NUMPY_INPUT=True。詳しくは Inference CLI のドキュメントを参照して、そのフラグ付きでサーバーを起動する方法を確認してください。このオプションは Roboflow のホスト型 API では利用できません。
サーバーがオープンなインターネットからのリクエストを受け付ける状態、またはワークスペースの API キーによる認証済みリクエストのみに制限されていない状態であれば、本番環境でこのオプションを有効にしないでください。
推論用画像に URL を送る
URL から画像を取得するのは便利ですが、サーバーを サーバーサイドリクエストフォージェリ(SSRF)攻撃:
Inference は、リクエストで指定された URL から直接画像を読み込めます({"image": {"type": "url", "value": "https://..."}})。サーバーが呼び出し元の制御下にある URL を取得するたびに、呼び出し元はそれを自分の代理でリクエストを送らせるよう誘導しようとできます。これはサーバーサイドリクエストフォージェリ(SSRF)と呼ばれる攻撃です。内部ネットワークに直接アクセスできない人でも、たとえばサーバーに次のようなものを取得させるよう依頼できます:
http://169.254.169.254/latest/meta-data/、クラウドのメタデータサービス(AWS、GCP、Azure)で、インスタンス認証情報を返すことがあります。http://127.0.0.1:9001/...および他の localhost サービス: 管理パネル、データベース、または Inference サーバー自身の認証不要エンドポイント。http://10.0.0.5/,http://192.168.1.1/、および境界の内側にあるその他のプライベート(RFC1918)、リンクローカル、CGNAT、IPv6 ULA ホスト。
一見公開されているように見えるホスト名が公開先の証拠にはなりません。プライベート IP に解決されたり、そこへリダイレクトされたり、DNS リバインディングを使ったりする可能性があります(検証チェックでは public IP に解決し、実際の接続では private IP に解決する)。Inference にはこれらすべてに対する制御が含まれています。
必要ないなら URL 入力をオフにする
最も強力な制御は、URL 画像をまったく受け付けないことです。クライアントが常に base64 またはファイルアップロードで画像を送るなら、URL フェッチを完全に無効化します:
必要な場合は URL 入力を強化
URL 画像が必要な場合、これらのフラグによりサーバーが取得できる範囲を絞り込みます。これらを組み合わせることで、内部ターゲットを拒否し、接続を検証済み IP に固定し(DNS リバインディングを防止)、各リダイレクト先を再チェックします。
ALLOW_URL_INPUT
True
URL 画像入力の主スイッチ。False にするとすべての URL 画像が拒否されます。
ALLOW_LOADING_IMAGES_FROM_LOCAL_FILESYSTEM
True
False に設定すると、ローカルファイルシステムからの画像読み込みが無効になります。
ALLOW_URL_TO_NON_GLOBAL_ADDRESSES
True
False の場合、ホストが非グローバルアドレス(ループバック、プライベート、リンクローカル/メタデータ、CGNAT、IPv6 ULA など)に解決される URL は拒否され、接続は検証済み IP に固定されるため、2 回目の DNS 応答でターゲットを差し替えることはできません。
VALIDATE_IMAGE_URL_REDIRECTS
False
True の場合、リダイレクトは 1 ホップずつ追跡され、各ホップの URL が盲目的に追従されるのではなく再検証されます。
MAX_IMAGE_URL_REDIRECTS
30
リダイレクトホップ数の厳格な上限で、上のフラグにかかわらず適用されます。
ALLOW_NON_HTTPS_URL_INPUT
False
False の場合、https:// URL のみが受け付けられます。
ALLOW_URL_INPUT_WITHOUT_FQDN
False
False の場合、ホストが生の IP アドレスである URL やパブリックサフィックスを持たない URL は拒否されるため、呼び出し元は実際のドメイン名を使用する必要があります。
WHITELISTED_DESTINATIONS_FOR_URL_INPUT
未設定
カンマ区切りの宛先許可リスト(subdomain.domain.suffix)。設定すると、これらだけが許可されます。
BLACKLISTED_DESTINATIONS_FOR_URL_INPUT
未設定
カンマ区切りの宛先ブロックリスト。常に拒否されます。
公開 HTTPS 画像 URL を引き続き許可しつつ強化した設定:
最も厳格に制御するには、サーバーが画像を取得できるホストを正確に絞り込む allow-list を追加します:
2 つのデフォルト設定が 2026 年第 4 四半期に変更されます。 ALLOW_URL_TO_NON_GLOBAL_ADDRESSES ( False)および VALIDATE_IMAGE_URL_REDIRECTS ( True)は現在、後方互換性のために従来の許容的な動作がデフォルトです。両方のデフォルトは 2026 年第 4 四半期に安全な値へ切り替わる予定です。早めに利用するには安全な値に今すぐ明示的に設定し、ワークフローが実際に内部 URL の取得に依存している場合は、変更が予想外にならないよう従来の値に設定してください。
サーバー側の動画ソースについては、こちらを参照してください: ビデオ設定。戻る サーバーのセキュリティ ネットワークアクセスと認証について
最終更新
役に立ちましたか?