十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

将 InsightFace Server 暴露到网络前需要做哪些安全配置?

将 InsightFace Server 暴露到网络前需要做哪些安全配置? 将 InsightFace Server 暴露到网络前需要做哪些安全配置【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightfaceInsightFace Server 0.2.0Linux x86_64通过 Docker Compose 部署默认处于隔离评估状态仓库自带的 Compose 文件把INSIGHTFACE_AUTH_ENABLED默认设为false即不启用任何 API 认证。也就是说如果你直接按 Quick start 启动服务局域网内任何能访问 18097CPU或 18098CUDA端口的人都调用全部/v1接口——而人脸图片和 embedding 属于生物识别数据。本文解决一个问题在把服务开放给其他用户或网络之前按文档要求完成认证启用、验证和网络边界配置。以下所有步骤均依据 server/README.md、用户指南、REST API 指南 和部署文件 compose.cpu.yml。先确认当前状态认证是关闭的在改动任何配置前先确认服务已在运行且认证处于默认关闭状态。GET /v1/health是唯一不需要认证就公开的端点它返回的auth_enabled布尔值可以直接反映当前状态curl -fsS http://127.0.0.1:18097/v1/health响应中的auth_enabled字段会告诉客户端是否需要展示 API key 控件它不会暴露已配置的 key 或其哈希。文档给出的示例响应为文档示例request_id每次请求不同{status:ready,auth_enabled:false,request_id:...}看到auth_enabled: false就确认了风险状态此时除 health 外的所有/v1端点都无需任何凭据。必做启动前启用认证并设置 API key文档明确要求在把服务暴露给其他用户或网络之前在启动之前启用认证。做法是设置两个环境变量后再拉起容器CPU 与 CUDA 的 Compose 文件写法相同CUDA 换成compose.cuda12.ymlexport INSIGHTFACE_AUTH_ENABLEDtrue export INSIGHTFACE_API_KEYreplace-with-a-long-random-secret docker compose -f server/deploy/compose.cpu.yml up -d这里的replace-with-a-long-random-secret是文档给出的占位写法你需要把它替换为一个足够长的随机密钥字符串。启用认证后除GET /v1/health外的每个端点都要求请求携带Authorization: Bearer api_key注意一个文档明确指出的行为API key 只以随机加盐的 scrypt 哈希形式保存后续用同一个数据卷但提供不同的INSIGHTFACE_API_KEY再次启动时会主动轮换生效的 key原子地停用旧凭据。第一阶段没有运行时多 key、scope、角色或吊销接口所以密钥的保管和轮换计划要由部署方自己负责。验证认证确实生效了改完配置后按下面顺序验证每一步都有文档依据的成功判据确认服务端已切换到认证模式再请求一次http://127.0.0.1:18097/v1/health响应中的auth_enabled应为true。确认未认证请求被拒绝不带Authorization头调用任意业务端点应返回401 unauthorized。文档说明401的含义是当前 tab 没有 key 或 key 已被轮换这正是你要的隔离效果。确认带 key 请求可用BASE_URLhttp://127.0.0.1:18097 AUTH_HEADERAuthorization: Bearer ${INSIGHTFACE_API_KEY} curl -sS ${BASE_URL}/v1/collections -H ${AUTH_HEADER}这里${INSIGHTFACE_API_KEY}就是你在上一步 export 的那个密钥${AUTH_HEADER}是 API 指南中给出的完整 shell 示例写法。另外注意认证关闭时不要发送空的Authorization头应完全省略该头。如果走 Web UI启用认证后在页面里选择Configure API key粘贴操作员提供的 key浏览器只在内存中保留它刷新或关闭标签页即清除。网络边界HTTPS、限流与 CORS文档明确说明 Server 本身不提供内置 TLS、用户账号、RBAC、云 IAM 或内置限流器容器内只有明文 HTTPplain HTTP only inside the container。因此暴露到不可信网络时以下边界配置由部署方负责来自 用户指南 第 15 节与 README 的 Security 一节在可信反向代理处终止 HTTPS代理终结 TLS 后把流量转发给容器端口 18097/18098。用户指南在 RTSP 监控一节也单独强调当 UI/API 跨不可信网络时要用 HTTPS。在边缘应用速率、请求体大小和超时限制第一阶段没有内置 rate limiter这些限制只能在反向代理侧实施。保持宽泛 CORS 关闭compose.cpu.yml 中INSIGHTFACE_CORS_ORIGINS默认为空维护者指南将设计规则表述为默认拒绝 CORS仅精确白名单可信 origin。只有前端确实来自其他 origin 时才通过该环境变量填入确切的 origin而不是放开全域。限制 Docker 和数据卷访问README 的 Security 一节要求 restrict Docker and volume access。可选只暴露 API 时关闭 Web UI如果你的部署不需要 Web UI可以在启动配置文件 server/config/server.toml 的[web]段设置disabled true注意仓库中该文件实际路径为server/config/server.tomlCompose 以只读方式挂载到容器内/etc/insightface/server.toml修改后需重启容器生效。这会使/、/docs、指南页和前端资源不再注册/v1和/openapi.json仍然可用。这直接减少了对外暴露的路由面属于文档明确支持的 API-only 模式。数据处理与密钥管理的配套要求暴露到网络意味着这些生物识别数据会被更多人触及文档在 用户指南 第 9 节和 维护者指南 的 Security invariants 中给出了硬性规则/data是唯一持久可写区域保存 SQLite 数据库以及开启裁剪图存储时的 112×112 JPEG 裁剪图默认关闭数据卷和备份都应按生物识别数据保护/models只读。不要记录图片、embedding、RTSP 凭据或 API key日志中只保留x-request-id/request_id这类关联 ID。RTSP Monitor 的凭据在/data下加密保存API 永不返回若启用了 Monitor文档要求把 Monitor 的管理操作限制在可信操作员范围内。容器侧的加固已经包含在 Compose 文件里非 root 用户10001:10001、只读根文件系统、cap_drop: [ALL]、no-new-privileges、pids_limit和带大小上限的 tmpfs/tmp——这些不需要你额外配置但也意味着你不应在自定义 Compose 里放松它们。能力边界与下一步对照 server/README.md 的 Security 一节需要清楚 Server 不提供的东西没有内置 TLS、用户账号、RBAC、云 IAM 或合规层第一阶段只有一个不区分权限的 API key不要把它当作多租户授权系统。因此认证 反代 HTTPS 边缘限流 CORS 白名单 数据卷保护这条路径完成之后权限细分和多租户隔离仍需由你所在环境的身份系统承担文档没有给出项目内的替代方案。完成上述配置后用第 2 节的三步验证收尾auth_enabled为true、无 key 返回401、带 key 正常返回业务数据。此后每次重启请保持同一INSIGHTFACE_API_KEY不变需要轮换密钥时按计划更换该变量并重新up文档保证轮换是原子生效的。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表