首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查OPA Rego文件是否正确

如何检查OPA Rego文件是否正确
EN

Stack Overflow用户
提问于 2021-12-14 15:21:57
回答 2查看 488关注 0票数 1

我创建了一个sample.rego文件,并用base64编码。那么,在Golang库中是否有任何方法可以验证rego base64编码值是否正确。

  1. Sample.rego文件:

包policy.authz默认允许=假允许{ input.policy == "abcd“}

  1. Base64编码值是:

cGFja2FnZSBwb2xpY3kuYXV0aHoKCiMgbG9naWMgdGhhdCBpbXBsZW1lbnRzIHBvbGljeS4KZGVmYXVsdCBhbGxvdyA9IGZhbHNlCmFsbG93IHsKICBpbnB1dC5wb2xpY3kgPT0gImFiY2QiCn0=

现在我必须在GoLang库的帮助下验证我们编码的文件是否有效。

现在,如果我将Sample.rego文件更改为:

代码语言:javascript
复制
package policy.authz
default allow = false
allow {
  wrong dummy data
  input.policy == "abcd"
}

  • Base64编码值是:

cGFja2FnZSBwb2xpY3kuYXV0aHoKZGVmYXVsdCBhbGxvdyA9IGZhbHNlCmFsbG93IHsKICB3cm9uZyBkdW1teSBkYXRhCiAgaW5wdXQucG9saWN5ID09ICJhYmNkIgp9

现在我必须在GoLang库的帮助下验证我们编码的文件是无效的。

EN

回答 2

Stack Overflow用户

发布于 2021-12-14 16:37:12

在Golang中有任何方法来验证rego base64编码值是否正确。

您必须解码它,如果它失败,它不是base64或没有正确编码。

这里有一个例子。

代码语言:javascript
复制
package main

import (
    "encoding/base64"
    "fmt"
)

func IsBase64(s string) bool {
    _, err := base64.StdEncoding.DecodeString(s)
    return err == nil
}

func main() {
    fmt.Println(IsBase64(`Invalid string`))
    fmt.Println(IsBase64(`VmFsaWQgc3RyaW5nCg==`))
}
票数 1
EN

Stack Overflow用户

发布于 2021-12-16 16:32:56

代码语言:javascript
复制
       import "github.com/open-policy-agent/opa/ast"

        modules := map[string]*ast.Module{}
        compiler := ast.NewCompiler()
        modules["policyModule"], err = ast.ParseModule("policyModule", string(policy))
        if err!=nil{
            log.Error(err, "unable to parse the module")
        }
    
        compiler.Compile(modules)
        if compiler.Failed() {
            log.Error(compiler.Errors, "unable to compile the module")
            
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70351314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档