商店現已上線

我們打造用於網站、AI 智慧體和 LLM 訓練的 Workstation AI 機器——線上配置併購買。

獲取同行價格
AI 產品
AI 實驗室OpenAI 智慧體Claude 代理Grok BotWorkstation AI 原生 CRM營銷所有產品
AI 解決方案
應用型 AIAI 智慧體生成式 AIAI 自動化AI 技能提升中小企業 AI 套餐企業 AI 實驗室AI 工作站NVIDIA 硬體與軟體NVIDIA 加速計算私有 AIGPU 私有云GPU 叢集邊緣 AI行業 AI
AI 服務
平臺現代化數字工程資料基礎與 AI自主運營AI 諮詢DevOps 自動化網路安全軟體開發智慧體構建MLOps 搭建GPU 租賃GPU 私有云
關於我們
公司我們的故事合作伙伴客戶案例
AI 資料中心
AI 資料中心GPU 私有云GPU 叢集GPU 租賃
AI 洞察Jev 系列基準測試實驗室模型選擇
技術說明
文件
Linux 作業系統UbuntuRed Hat Enterprise LinuxSUSE LinuxAlpine LinuxDebian、Rocky 與 AlmaLinux
AI 雲平臺AWS 與 Amazon BedrockGoogle Cloud 與 Vertex AIMicrosoft Azure 與 AI FoundryGPU 雲與算力市場
私有 AI 資料中心面向律師事務所面向會計師事務所本地部署平臺全面安全的雲
工具Ring PromoterJobshout
新聞
部落格
聯絡我們登入

面向現代企業的 AI 工作站、AI 多智慧體軟體、GPU 基礎設施和智慧代理解決方案。

聯絡我們

AI 解決方案

應用型 AIAI 智慧體生成式 AIAI 自動化AI 技能提升中小企業 AI 套餐企業 AI 實驗室行業 AI

產品

所有產品Workstation AI native CRM 與 ERP營銷OpenAI 智慧體Ring PromoterJobshout

公司

關於我們公司AI 資料中心為什麼選擇Workstation合作伙伴客戶案例定價聯絡TenthMatrix

資源

AI 洞察技術說明文件Linux 作業系統AI 雲平臺私有 AI 資料中心部落格搜尋網站地圖
英國總部
77-79 Marlowes, Hemel Hempstead HP1 1LF路線指引 — 從 M25 外環倫敦 20 號出口駛出公司編號: 11641870週一至週五:上午 9:00 - 下午 6:00 GMT
+44 7515 356 146
比利時辦公室
Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, BrusselsBE 0751.518.683週一至週五:上午 9:00 - 下午 6:00 CET
+32 492 45 67 46
印度辦公室
#159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841
台灣辦公室
3F, No. 2-4, Aisi Rd., Ren'ai Dist., Keelung City 200, Taiwan基隆市仁愛區愛四路2之4號3樓週一至週五:上午 9:00 - 下午 6:00 臺灣時間(GMT+8)
+886 926 892 701+32 492 45 67 46

© 2026 Workstation AI。保留所有權利。

隱私資料刪除Cookie服務條款網站地圖

NVIDIA、NVIDIA 標誌、RTX、RTX PRO、Blackwell、CUDA、NVLink、MGX、Omniverse、Spectrum-X、Quantum、BlueField、DGX 與 HGX 為 NVIDIA Corporation 在美國及其他國家的商標及/或註冊商標。AMD、AMD Arrow 標誌、EPYC、Instinct、Ryzen 與 Threadripper 為 Advanced Micro Devices, Inc. 的商標。Dell 與 PowerEdge 為 Dell Inc. 或其子公司的商標。Intel 與 Xeon 為 Intel Corporation 或其子公司的商標。AMAX、AceleMax 與 LiquidMax 為 AMAX Engineering Corporation 的商標。所有其他產品名稱、標誌與品牌均為其各自所有者之財產。我們使用它們僅為識別我們所描述、供應或支援的產品;使用這些名稱並不表示其所有者為我們背書。

Loading blog...

首頁 / 部落格
SecuritySsoVpnDevOpsComplianceOpsapi

Keep Your Test Sites Private: VPN at the Edge, One Sign-In for Every App

Prove where every request came from, and who sent it

Balinder Walia2026年10月28日7 min read
Private test sites: VPN at the edge, sign-in at the app.

Your test and staging sites probably hold real-looking data and features you haven't announced yet. Most teams believe those sites are private. This post explains, in plain terms, how we keep pre-production sites private with two separate layers: a VPN checked at the edge, which proves where a request came from, and OpsAPI sign-in, which proves who sent it. Engineers who want the request path, the failover detail and the test commands should read the in-depth technical article.

Interactive version: switch edges, turn the VPN off and step through the sign-in to see what each request gets.

Private test sites: VPN at the edge, sign-in at the app. A network ring around an identity card marked MFA passed.

In one sentence. Only staff devices on the VPN can reach a test site at all, and once they get there, each person still signs in once with OpsAPI (with MFA) before the app shows them anything.

The staging site everyone assumes is private

Ask a team how their staging site is protected and you'll often hear "it's not linked from anywhere" or "it only allows the office IP". Both answers describe something real, but neither describes a person. A hidden address stays hidden only until it turns up in a browser history, a screenshot, a support ticket or a certificate transparency log. An office IP allowlist lets in anyone whose traffic leaves from that office, whether they're staff, a guest on the Wi-Fi or a device nobody has checked.

That matters more than it used to. Lower environments (int, test, staging) tend to hold copies of production data, half-finished features and admin screens with fewer safeguards than the live site. And clients and auditors increasingly ask a direct question: how are your lower environments separated from the public internet, and who can get in?

Two questions every request must answer

We find it useful to split the problem into two questions, because they need different tools:

  1. Where did this request come from? Was it sent from a device we issued access to, through our VPN?
  2. Who sent it? Which named person is this, did they pass multi-factor authentication (MFA), and what are they allowed to do?

An IP allowlist can only answer the first question. A login can only answer the second. Used together, they cover each other's blind spots.

Layer 1: the network, in plain words

Architecture: a staff device sends traffic for both edge IPs into a WireGuard tunnel; the VPN hub checks the device key and sends the request on from the office IP 192.0.2.50; DNS failover points int.example.com at the healthy edge; edge A and edge B allow only the office IP; the app then sends the person to OpsAPI sign-in. A public visitor gets 403 at the edge.

Every member of staff has their own VPN key on their own device. When they open a test site, five things happen:

  1. DNS sends their browser to whichever of our two edge servers is healthy.
  2. Their device recognises the edge's address and sends the request into the encrypted VPN tunnel.
  3. The VPN hub checks the device's key. No valid key, no tunnel.
  4. The hub sends the request on to the edge from a single, known office address.
  5. The edge checks that address against an access rule. If it matches, the site loads. Everyone else gets a "403 Forbidden".

The useful property is that the test site never has to be open to the internet. A visitor without a VPN key is turned away at the edge, before the request reaches the application.

What happens when a server fails over

We run two edge servers so that a site stays up if one of them fails. DNS failover watches both and points the site at the healthy one. That's good for uptime, but it taught us a lesson worth sharing.

When a site failed over from edge A to edge B, colleagues working away from the office suddenly got "403 Forbidden", even though their VPN was connected. Their VPN settings only sent traffic for edge A through the tunnel. Traffic for edge B quietly went out over their home connection, arrived from the wrong address and was refused. People in the office didn't notice anything, because their traffic already left from the office address.

The fix was simple once we understood it: edge B had to be added in two places, on each device (so its traffic enters the tunnel) and on the VPN hub (so it leaves from the office address).

Four failover states: edge A healthy with VPN on gives 200; edge A down and edge B active with both edges routed gives 200; edge B active with only edge A routed gives 403 because traffic skipped the tunnel; VPN off gives 403 like any public visitor.

The general lesson: every server a site can fail over to must be covered by your VPN set-up, and you should test failover from outside the office, not only on the office network.

Layer 2: one OpsAPI sign-in for all your apps

The network layer gets a request to the door. It can't tell you who is standing there: everyone behind the office address looks the same to the edge. That's where OpsAPI comes in.

Sequence diagram: App A sends the browser to the OpsAPI sign-in page, the person signs in with a password and an emailed code or with Google, OpsAPI returns them to App A with a token, App A checks it with OpsAPI and starts a session. When they open App B, OpsAPI recognises the existing session and returns them with no prompt.

OpsAPI gives every app you run one shared sign-in and one user directory:

  • One sign-in for every app. People sign in with email and password, with an emailed code when the workspace requires MFA, or with Google or Apple. One directory of users, with roles per workspace.
  • Sign in once. If someone has already signed in to one app, opening a second app takes them straight in with no second prompt. Signing out ends that session, so the next visit asks again.
  • MFA by default. Workspaces ask for a sign-in code unless the workspace owner turns it off, and when someone belongs to several workspaces, the strictest one decides.
  • Security built in. OpsAPI only hands a sign-in back to apps it has been told to trust. The same lockout, rate limits and audit trail apply however someone signs in.
  • Self-hosted. It runs on infrastructure you control, so there's no per-user identity bill and no separate login system to build for each app.

For a test site, that means the edge proves the request came through our VPN, and OpsAPI proves which named person is using it and what they may do.

What this gives you in compliance conversations

We don't claim any certification for this set-up, and an auditor decides what counts as evidence for their framework. What the two layers do is help you evidence the kinds of controls clients and auditors ask about:

What you're askedWhat helps you evidence it
Are lower environments separated from the public internet?A request from outside the VPN gets 403 at every edge, and you can show it.
Is access named and per person?A VPN key per device and person, plus a named OpsAPI account.
Is MFA enforced?OpsAPI asks for a sign-in code when the workspace requires it.
Can you remove a leaver quickly?Remove their VPN key and deactivate their OpsAPI account: two actions, both recorded.
Is traffic encrypted in transit?WireGuard on the tunnel and HTTPS to the site.
Does access hold up during an outage?Both edges carry the same rule and both are routed through the VPN, so a failover doesn't open or break anything.

These map to the kind of controls you'll find in ISO 27001 Annex A (for example, separation of environments and access control) and in SOC 2 (logical access). Use them as a starting point for your evidence, not as a claim that you're compliant.

Honest limits

  • An allowlist is a network check, not a user check. That's why the sign-in layer exists. Don't rely on the office address alone.
  • Office addresses can change. If your broadband provider changes the address, the allowlist has to follow it, or everyone is locked out.
  • One VPN hub is one point of failure. Plan a second path for when the office connection goes down.
  • Edge logs see the office address for everyone. Per-person records come from the sign-in layer, not from the edge.
  • Offboarding is two actions. Remove the VPN key and deactivate the OpsAPI account.

What about SAML and OIDC?

Many enterprise tools expect to plug into a SAML identity provider or an OpenID Connect (OIDC) provider. OpsAPI is neither. It has no client registrations and no standard /authorize or /token endpoints, so an off-the-shelf SAML or OIDC client can't use it directly.

Apps integrate with OpsAPI today through a simple redirect: the app sends the browser to the OpsAPI sign-in page, gets a token back, and asks OpsAPI who the person is. It takes a small amount of code per app, which the technical article shows. If you need SAML or OIDC for a particular tool, OpsAPI doesn't offer it today, and you should plan for that.

Where to go next

  • For the request path, the failover detail, the OpsAPI sign-in contract and a test plan with commands, read the technical article: An IP Allowlist Isn't a Login.
  • To see what OpsAPI single sign-on covers and how to set it up, see the OpsAPI README.
  • Questions about your own lower environments? Talk to us.

Related reading

  • One sign-in for every app: the OpsAPI SSO demo
  • Tech note: the OpsAPI SSO demo with Java and PHP apps
  • Put internal apps behind your VPN, without rebuilding them
  • An IP allowlist is not a VPN check: Zero Trust access profiles with wslvpn and WSLProxy