You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用Hasura core的schema introspection功能?

Hasura Core 禁用Schema内省的替代方案

graphql_schema_introspection 配置确实为Hasura Cloud专属功能,开源Hasura Core版本未原生支持该metadata配置项,可通过以下几种方案实现禁用非授权角色schema内省的需求:

  • 反向代理层拦截
    生产环境通常会在Hasura实例前部署Nginx、APISIX等反向代理服务,你可以直接在代理层匹配内省请求特征进行拦截:

    普通内省请求的请求体中必然包含__schema或__type关键字,你可以针对这两个特征匹配,同时排除管理员角色的请求,避免影响自身控制台的正常使用。
    以Nginx为例,可添加如下配置规则:

    if ($request_body ~* "__schema|__type") {
        # 校验请求头中的角色信息,非admin角色直接返回403
        if ($http_x_hasura_role != "admin") {
            return 403 "Introspection is disabled for non-admin users";
        }
    }
    
  • 自定义中间件校验
    如果你不想修改代理层配置,也可以自行实现轻量的GraphQL网关中间件,所有发往Hasura的请求先经过中间件处理:
    1. 解析请求中的GraphQL语句,判断是否包含内省相关操作
    2. 读取请求携带的角色信息,非admin角色的内省请求直接拒绝
      该方案灵活性更高,支持自定义不同角色的拦截规则,也可针对部分内省操作做细粒度放行。
  • 高版本Core原生配置
    从Hasura v2.31.0版本开始,开源Core版本已新增全局内省禁用的启动参数,启动实例时添加如下环境变量即可:
    HASURA_GRAPHQL_DISABLE_INTROSPECTION=true
    该参数会全局禁用所有非admin角色的内省权限,如果你需要针对特定角色禁用,可以配合代理层方案组合实现。

内容的提问来源于stack exchange,提问作者Alpha9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 02:06:05