【问题标题】:IBM Cloud Functions - Securing API keys & Passwords inside Functions / node.jsIBM Cloud Functions - 在 Functions / node.js 中保护 API 密钥和密码
【发布时间】:2021-04-28 20:52:42
【问题描述】:

我在 IBM Cloud Function 中获得了一些 Node.js 代码。我已将其作为 Web 操作启用,并通过 Watson Assistant 的 webhook 调用该函数。

将我的 API 密钥和其他密码作为可读文本保存在 IBM Cloud Function 中是否安全?或者我应该如何参考密钥和密码?

这里有两个摘录作为例子:

function main(params) {
    if (params.actionJoke == 'joke') {
        const optionsDad = {
            method: "GET",
            uri: "https://dad-jokes.p.rapidapi.com/random/joke",
            json: true,
            "resolveWithFullResponse": true,

            "headers": {
                "x-rapidapi-host": "dad-jokes.p.rapidapi.com",
                "x-rapidapi-key": "myapiCODEgoesHERE",
                "useQueryString": true
            }

在第一个示例中,我可以使用params.apiKey 代替文字键。我在左侧菜单“参数”中定义了参数。但我不知道这在安全性方面是好是坏?

但是,对于我的第二个示例,此方法不起作用。或者至少我不知道如何在语义上正确地做到这一点。

let smtpConfig = {
    host: 'mail.myz.net',
    port: 122,
    secure: false, // use TLS
    auth: {
        user: 'mymail@xyz.com', 
        pass: 'mypassword'
    }

【问题讨论】:

  • 这些选项都不是很好;从理论上讲,您应该能够将您的代码检查到版本控制系统中,而不必担心泄露机密。此外,您应该能够在不接触代码的情况下更改您的秘密。他们应该提供一种设置节点环境变量的方法,然后您可以使用process.env.ENVIRONMENT_VARIABLE_NAME访问它们。
  • @Nick 谢谢!也许更了解 IBM 云功能的人可以帮助我提供一些文档或资源,特别是针对这个平台 - 我想需要一个好的方法。或者您知道任何可以帮助我为 cloud fn 设置版本控制的链接吗?

标签: node.js security ibm-cloud ibm-cloud-functions


【解决方案1】:

使用机密的方法是bind them to actionspackages。您可以bind services to the functions 或任意凭据。

我推荐我在 enhancing security by rotating service credentials 上的博客,其中有一个关于使用 __bx_creds 环境对象的云函数的部分。

请参阅此file from a tutorial 如何在操作中从环境访问凭据。

【讨论】:

  • 谢谢 Henrik,将不得不通过文档工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
  • 2011-02-01
  • 1970-01-01
  • 2016-05-12
  • 2016-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多