Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 按IP地址过滤的Rego测试_Spring_Rego - Fatal编程技术网

Spring 按IP地址过滤的Rego测试

Spring 按IP地址过滤的Rego测试,spring,rego,Spring,Rego,我使用与此类似的规则: allow { http_request.method == "POST" allowed_paths[http_request.path] net.cidr_contains("XX.YYY.ZZZ.160/29-XX.YYY.ZZZ.32/29",source_address.Address.SocketAddress.address) } 我有两个问题: 这是根据发出请求的客户端的IP地址进行过滤的正

我使用与此类似的规则:

allow {
    http_request.method == "POST"
    allowed_paths[http_request.path]
    net.cidr_contains("XX.YYY.ZZZ.160/29-XX.YYY.ZZZ.32/29",source_address.Address.SocketAddress.address)
}
我有两个问题:

  • 这是根据发出请求的客户端的IP地址进行过滤的正确方法吗
  • 是否存在某种方法来模拟来自某些IP的请求并对其进行测试

  • 是的,
    net.cidr\u contains
    是正确的选择,如果您知道批准的请求将来自特定的区块

    我猜你的Rego看起来像这样:

    package validate
    
    import input.attributes.request.http as http_request
    import input.attributes.source.address as source_address
    
    allowed_paths = {
      "/foo",
      "/bar"
    }
    
    allow {
        http_request.method == "POST"
        allowed_paths[http_request.path]
        net.cidr_contains("127.0.0.1/24",source_address.Address.SocketAddress.address)
    }
    
    有几种方法可以测试

    您可以手动使用,它允许您手工编写请求并测试它们。这不是一个好的自动化解决方案,但可以用于现场/健康检查

    对于CI或预提交检查,可以使用
    opa
    CLI进行单元测试。存储库提供了如何执行此操作的详细信息。测试可能类似于:

    package validate
    
    test_input_allowed_request {
        input := {"attributes":{"request":{"http":{"method":"POST","path":"/foo"}},"source":{"address":{"Address":{"SocketAddress":{"address":"127.0.0.64/26"}}}}}}
        results := allow with input as input
        results.allow
    }
    

    是的,
    net.cidr\u contains
    是正确的选择,如果您知道批准的请求将来自特定的区块

    我猜你的Rego看起来像这样:

    package validate
    
    import input.attributes.request.http as http_request
    import input.attributes.source.address as source_address
    
    allowed_paths = {
      "/foo",
      "/bar"
    }
    
    allow {
        http_request.method == "POST"
        allowed_paths[http_request.path]
        net.cidr_contains("127.0.0.1/24",source_address.Address.SocketAddress.address)
    }
    
    有几种方法可以测试

    您可以手动使用,它允许您手工编写请求并测试它们。这不是一个好的自动化解决方案,但可以用于现场/健康检查

    对于CI或预提交检查,可以使用
    opa
    CLI进行单元测试。存储库提供了如何执行此操作的详细信息。测试可能类似于:

    package validate
    
    test_input_allowed_request {
        input := {"attributes":{"request":{"http":{"method":"POST","path":"/foo"}},"source":{"address":{"Address":{"SocketAddress":{"address":"127.0.0.64/26"}}}}}}
        results := allow with input as input
        results.allow
    }
    

    你能发布你正在使用的完整文件吗?目前,很难猜测这些变量的来源/格式。如果它太长,请随意链接到您可以发布您正在使用的完整文件吗?目前,很难猜测这些变量的来源/格式。如果太长,请随时链接到