Azure Key Vault 是否支持常规文本文件?
Does azure key vault support regular text files?
我有一个在管道中使用的文本文件,这个特定文件包含管道用于对某些服务进行身份验证的秘密。该文件看起来像这样。
app1|resource1|secret1
app2|resource2|secret2
此文件用于将秘密映射到每个应用程序。有人告诉我可以使用 azure key vault 来存储此信息,但我只看到 ssh 密钥、证书和键值对字符串的选项。
很高兴听到任何建议。我还应该注意目前我正在使用天蓝色的“安全文件”来存储这个文件,但是它不是很直观,因为每次需要更新文件时,你必须删除当前文件,上传一个新文件然后编辑管道再次添加。
此外,我需要一个中心位置来存储此文件,以便我团队中的任何人都可以编辑它,而不仅仅是我。
您可以尝试使用RegEx Match & Replace任务替换文本文件中的密文。此任务用正则表达式匹配替换文件内容。
所需的配置选项是:
- 文件路径 : Select 文件 运行 常规
表达式搜索。
- 要使用的正则表达式:输入正则表达式
没有修饰符。
(Eg. (?:\d*.)?\d+)
了解有关常规的更多信息
来自 Microsoft RegEx Quick Reference 的表达式并测试你的
使用 RegExr 在线正则表达式
- 替换值:输入要用正则表达式匹配替换的值。
所以我通过获取文件内容并对其进行 base64 编码来解决问题,就像这样
base64 -w0 mapping_file.txt
'-w0' 将所有内容放在一行中,然后将输出存储为 azure key vault secret 的值:
mapping-file: encoded_value
在我的脚本中,我简单地解码值并按原样使用内容。我的团队成员现在可以转到 Azure Key Vault,获取值,对其进行解码、编辑和编码。
是的,Azure 支持纯文本文件。在文档中,他们将其称为 multi-line secret 而不是常规文本文件。
我有一个类似的问题,我必须创建一个包含 *.json 文件的秘密,其中包含私钥和许多其他参数。
我在终端中使用以下命令解决了这个问题。
#Create the secret
az keyvault secret set --name SECRET_NAME --vault-name KEYVAULT_NAME --file FILE_NAME_WITH_ABSOLUT_PATH
#Download the secret
az keyvault secret download --name SECRET_NAME --vault-name KEYVAULT_NAME --file FILE_NAME_WITH_ABSOLUT_PATH
如果需要在管道内使用文件,可以分两步(任务)解决问题:
- 从 KeyVault 中读取机密(就好像它是普通密码一样)。这会将文件的内容存储在管道变量中。
- 创建一个任务,将管道变量的内容存储在一个文件中。这个任务可以是例如 bash.
您可以按照以下示例进行操作:
parameters:
- name: azureSubscription
type: string
default: 'my-subscription'
...
variables:
- name: secretFileName
value: /home/vsts/.config/appName/my-secret-file-name.json
...
# Your pipeline ...
...
- task: AzureKeyVault@1
displayName: "Reads the secret from Azure KeyVault"
inputs:
azureSubscription: ${{ parameters.azureSubscription }}
KeyVaultName: "my-keyvault"
SecretsFilter: 'my-secret'
RunAsPreJob: false
- task: Bash@3
displayName: "Create the file that contains the secret"
inputs:
targetType: 'inline'
script: |
echo "Create the directory... "
DIR="$(dirname "${$FILE_NAME}")"
mkdir -p $DIR
cd $DIR
pwd
echo "Create the file for Private Key..."
FILE="$(basename "${$FILE_NAME}")"
echo $MY_SECRET > $FILE
ls -la
env:
MY_SECRET: $(my-secret)
FILE_NAME: $(secretFileName)
我有一个在管道中使用的文本文件,这个特定文件包含管道用于对某些服务进行身份验证的秘密。该文件看起来像这样。
app1|resource1|secret1
app2|resource2|secret2
此文件用于将秘密映射到每个应用程序。有人告诉我可以使用 azure key vault 来存储此信息,但我只看到 ssh 密钥、证书和键值对字符串的选项。
很高兴听到任何建议。我还应该注意目前我正在使用天蓝色的“安全文件”来存储这个文件,但是它不是很直观,因为每次需要更新文件时,你必须删除当前文件,上传一个新文件然后编辑管道再次添加。
此外,我需要一个中心位置来存储此文件,以便我团队中的任何人都可以编辑它,而不仅仅是我。
您可以尝试使用RegEx Match & Replace任务替换文本文件中的密文。此任务用正则表达式匹配替换文件内容。
所需的配置选项是:
- 文件路径 : Select 文件 运行 常规 表达式搜索。
- 要使用的正则表达式:输入正则表达式
没有修饰符。
(Eg. (?:\d*.)?\d+)
了解有关常规的更多信息 来自 Microsoft RegEx Quick Reference 的表达式并测试你的 使用 RegExr 在线正则表达式
- 替换值:输入要用正则表达式匹配替换的值。
所以我通过获取文件内容并对其进行 base64 编码来解决问题,就像这样
base64 -w0 mapping_file.txt
'-w0' 将所有内容放在一行中,然后将输出存储为 azure key vault secret 的值:
mapping-file: encoded_value
在我的脚本中,我简单地解码值并按原样使用内容。我的团队成员现在可以转到 Azure Key Vault,获取值,对其进行解码、编辑和编码。
是的,Azure 支持纯文本文件。在文档中,他们将其称为 multi-line secret 而不是常规文本文件。
我有一个类似的问题,我必须创建一个包含 *.json 文件的秘密,其中包含私钥和许多其他参数。
我在终端中使用以下命令解决了这个问题。
#Create the secret
az keyvault secret set --name SECRET_NAME --vault-name KEYVAULT_NAME --file FILE_NAME_WITH_ABSOLUT_PATH
#Download the secret
az keyvault secret download --name SECRET_NAME --vault-name KEYVAULT_NAME --file FILE_NAME_WITH_ABSOLUT_PATH
如果需要在管道内使用文件,可以分两步(任务)解决问题:
- 从 KeyVault 中读取机密(就好像它是普通密码一样)。这会将文件的内容存储在管道变量中。
- 创建一个任务,将管道变量的内容存储在一个文件中。这个任务可以是例如 bash.
您可以按照以下示例进行操作:
parameters:
- name: azureSubscription
type: string
default: 'my-subscription'
...
variables:
- name: secretFileName
value: /home/vsts/.config/appName/my-secret-file-name.json
...
# Your pipeline ...
...
- task: AzureKeyVault@1
displayName: "Reads the secret from Azure KeyVault"
inputs:
azureSubscription: ${{ parameters.azureSubscription }}
KeyVaultName: "my-keyvault"
SecretsFilter: 'my-secret'
RunAsPreJob: false
- task: Bash@3
displayName: "Create the file that contains the secret"
inputs:
targetType: 'inline'
script: |
echo "Create the directory... "
DIR="$(dirname "${$FILE_NAME}")"
mkdir -p $DIR
cd $DIR
pwd
echo "Create the file for Private Key..."
FILE="$(basename "${$FILE_NAME}")"
echo $MY_SECRET > $FILE
ls -la
env:
MY_SECRET: $(my-secret)
FILE_NAME: $(secretFileName)