当前位置: 首页 > 知识库问答 >
问题:

如何将DevOps发布机密传递给ARM进行密钥库部署

盖弘毅
2023-03-14

我试图用secretnamesecretvalue部署一个密钥存储库,并在azure devops中创建了一个包含所有秘密的变量组,我在参数文件中使用了以下参数,但是当部署这个参数时,秘密值将存储为$(secret),而不是实际存储在azure devops任务组中的密码。

  "secretsObject": {

    "value": {

      "secrets": [

        {

          "secretName": "App012",

          "secretValue": "$(mysecret)"

        },

这是我在密钥库模板中得到的:

  {

    "type": "Microsoft.KeyVault/vaults/secrets",

    "name": "[concat(parameters('keyVaultName'), '/', parameters('secretsObject').secrets[copyIndex()].secretName)]",

    "apiVersion": "2018-02-14",

    "dependsOn": [

      "[concat('Microsoft.KeyVault/vaults/', parameters('keyVaultName'))]"

    ],

    "copy": {

      "name": "secretsCopy",

      "count": "[length(parameters('secretsObject').secrets)]"

    },

    "properties": {

      "value": "[parameters('secretsObject').secrets[copyIndex()].secretValue]"

    }

  }

]

共有1个答案

葛海阳
2023-03-14

我相信您在询问如何利用存储为变量组的秘密,通过Azure DevOps与ARM模板一起安全部署。如果是这种情况,请查看在发布任务中使用重写模板参数。

它的格式为-nameofarmparameter$(NameofDevOpsVariable)

在您的示例中,它将是-mysecret$(NameOfDevOpsVariable)

 "secretValue": {
      "type": "string",
      "metadata": {
        "description": "This is for receiving a value from DevOps releases of the secret to be stored in the key vault"
      }
    },
"secretName": {
          "type": "string",
          "metadata": {
            "description": "Name of the Secret"
          }
        },
{
  "type": "Microsoft.KeyVault/vaults/secrets",
  "name": "[concat(variables('keyVaultName'),'/',parameters('secretName'))]",
  "apiVersion": "2018-02-14",
  "properties": {
    "contentType": "text/plain",
    "value": "[parameters('secretValue')]"
  },
  "dependsOn": [
    "[resourceId('Microsoft.KeyVault/vaults',  variables('keyVaultName'))]"
  ]
},

如果这些值将从开发人员提供,则参数文件中不需要包含任何内容

 类似资料:
  • 我正在寻求在Azure DevOps中的ARM部署中集成密钥库的最佳方法。 例如,部署一个应用程序服务并创建一个托管服务标识,这样它就可以从密钥库中获取预先存在的数据库的机密。 1)在Azure portal中,我手动为App服务创建了一个新的服务主体,在访问策略中使用“get”和“list”权限。 2)在我的DevOps项目中,在项目设置下,我创建了一个服务连接。 3)我已经在DevOps中创建

  • 在AppSettings.json中创建连接字符串的通常方法是: 我想用DevOps发布管道中的QA数据库替换连接字符串值。 如果我在Azure Devops中声明了一个发布管道变量,我可以使用名称ConnectionStrings.DefaultConnection,为它设置一个值,它将把这个值作为发布的一部分注入appsettings,如下所示:

  • 我有一个用秘密定义的Azure密钥库,我可以使用“Azure密钥库”任务在devops构建管道中访问它。现在我需要将秘密变量传递给python内联脚本。 由于它是加密的,python无法直接读取该值。我如何解密并传递它们。这个秘密持有Databricks的访问令牌。我们正在尝试使用DevOps管道创建Databricks集群。 我的Yaml有以下任务 Azure KeyVault Powershe

  • 问题内容: 我知道不推荐这样做,但是是否可以将用户密码传递给scp? 作为批处理作业的一部分,我想通过scp复制文件,接收服务器当然需要密码,不,我不能轻易地将其更改为基于密钥的身份验证。 问题答案: 您就可以使用一个工具脚本它预期(有得心应手绑定太像Pexpect的为Python)。

  • 我正在尝试从Dockerfile构建一个docker镜像,需要采取的步骤之一是安装一个依赖项,该依赖项只能通过私有Gitlab存储库获得。这意味着容器需要访问SSH密钥才能进行克隆。我知道这不是最安全的方法,但这只是一个中间容器,一旦运行应用程序所需的所有组件都到位,它将被移除。 问题是,无论我怎么尝试,我都无法让docker中的ssh代理建立连接。我得到: 如果我尝试简单地克隆存储库而不运行,也

  • 在Azure Portal>Key vaults>Secrets,我有json值的秘密(不是我创建的)。类似于: null 谢谢