如何在 Golang 中提取 Secret 作为配置文件

问题描述

所以我对 Go 还很陌生,我很好奇如何动态导入密码和 URL,而不会将它们暴露在我的脚本中。在 Python 中,我能够使用 JSON 有效负载来实现这一点,并且基本上会导入 JSON、加载有效负载,并指定何时需要传递需要保密的规范。

这是我的 Go 脚本:

package main

import (
    "io/ioutil"
    "net/http"
    "fmt"

    "gopkg.in/yaml.v2"
)
// curl -u <username>:<password> <some_url>

func main() {
    type Config struct {
    URL      string `yaml:"url"`
    Username string `yaml:"username"`
    Token    string `yaml:"token"`
    }

    func readConfig() (*Config,error) {
    config := &Config{}
    cfgFile,err := ioutil.ReadFile("config.yaml")
    if err != nil {
        return nil,err
    }
    err = yaml.Unmarshal(cfgFile,config)
    return config,err
    }

    req,err := http.NewRequest("GET",config.URL,nil)
    if err != nil {
        // handle err
    }

    req.SetBasicAuth(config.Username,config.Token)

    resp,err := http.DefaultClient.Do(req)
    if err != nil {
        // handle err
    }

    defer resp.Body.Close()
    body,_ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}

可以想象,我在加载密码方面运气不佳,当我使用直接令牌更改以下内容时,将我的密码暴露在脚本中,它会运行并在 Jira 中生成 JSON 负载。

config.URL
config.Username
config.Token

因此,如果我在 YAML 中有一个配置文件:

config:
    URL: "<some_URL>"
    Username: "<some_username>"
    Token: "<some_token>"

如何将 YAML 文件加载到我的脚本中? 如何加载等效的 JSON?

{
  "config": {
    "URL": "<some_URL>"
    "Username": "<some_username>","Token": "<some_token>"
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)