如何将新机密(来自 Azure Key Vault)添加到 Azure Devops 中的变量组

问题描述 投票:0回答:1

我已经使用 powershell 任务构建了一个管道,以在 Azure Key Vault 中创建新的机密。相同的密钥保管库与 Azure DevOps 变量组(管道/库/变量组)链接。

我已经手动添加了一些密钥,但我希望它能够添加新的密钥,这些密钥是我在管道部署期间在 Azure Key Vault 中创建的,也添加到变量组中。

我必须使用 REST API 吗? https://learn.microsoft.com/en-us/rest/api/azure/devops/distributedtask/variablegroups/add?view=azure-devops-rest-7.1

或者我可以使用 Powershell 或其他工具吗?

azure azure-devops azure-pipelines azure-keyvault
1个回答
0
投票

如果要将管道设置为自动将新密钥添加到变量组中,则需要在管道作业中调用以下 Azure DevOps REST API:

  1. 调用API“Variablegroups - Get”获取要更新的变量组的响应体(JSON)。从响应正文中,您可以看到它包含如下内容。

    {
        "name": "VarGroup",
        "providerData": {
            "serviceEndpointId": "<serviceEndpointId>",
            "vault": "<Azure Key vault name>"
        },
        "type": "AzureKeyVault",
        "variableGroupProjectReferences": [
            {
                "name": "VarGroup",
                "projectReference": {
                    "id": "<project id>",
                    "name": "<project name>"
                }
            }
        ],
        "variables": {
            "<SecVar01>": {
                "enabled": true,
                "isReadOnly": false,
                "isSecret": true
            },
            "<SecVar02>": {
                "enabled": true,
                "isReadOnly": false,
                "isSecret": true
            }
        }
    }
    

    <SecVar01>
    ”和“
    <SecVar02>
    ”是已添加到变量组中的秘密的实际名称。

  2. 通过添加新密钥作为“

    variables
    ”节点的成员来更新响应正文。例如,添加新秘密“
    <SecVar03>
    ”。

    {
        "name": "VarGroup",
        "providerData": {
            "serviceEndpointId": "<serviceEndpointId>",
            "vault": "<Azure Key vault name>"
        },
        "type": "AzureKeyVault",
        "variableGroupProjectReferences": [
            {
                "name": "VarGroup",
                "projectReference": {
                    "id": "<project id>",
                    "name": "<project name>"
                }
            }
        ],
        "variables": {
            "<SecVar01>": {
                "enabled": true,
                "isReadOnly": false,
                "isSecret": true
            },
            "<SecVar02>": {
                "enabled": true,
                "isReadOnly": false,
                "isSecret": true
            },
            "<SecVar03>": {
                "enabled": true,
                "isReadOnly": false,
                "isSecret": true
            }
        }
    }
    
  3. 然后调用API“Variablegroups - Update”并将上面更新后的JSON正文作为该API的Request Body传递。一旦此 API 调用成功,新的密钥“

    <SecVar03>
    ”就会添加到变量组中。


© www.soinside.com 2019 - 2024. All rights reserved.