基于Azure Service Principal 访问Azure KeyVault

栏目: 编程工具 · 发布时间: 7年前

内容简介:在上一篇文章中,我们演示了如何使用Azure 资源托管标识访问KeyVault,但是对于Azure中国区的朋友来说,会空欢喜一场。因为截至本文发稿。Azure资源托管标识功能仍旧未在中国区上线。所以我们只能使用Azure Service Principal来访问KeyVault了,其中会需要用到一个AAD的ApplicationID和 秘钥。这种场景就比较诡异了,我为了不把某个秘钥写在应用程序中,期望它在运行时,动态的去KeyVault中读取。结果我去和KeyVault本身交互时,又多了一个秘钥,个人感觉多

在上一篇文章中,我们演示了如何使用Azure 资源托管标识访问KeyVault,但是对于Azure中国区的朋友来说,会空欢喜一场。因为截至本文发稿。Azure资源托管标识功能仍旧未在中国区上线。

所以我们只能使用Azure Service Principal来访问KeyVault了,其中会需要用到一个AAD的ApplicationID和 秘钥。这种场景就比较诡异了,我为了不把某个秘钥写在应用程序中,期望它在运行时,动态的去KeyVault中读取。结果我去和KeyVault本身交互时,又多了一个秘钥,个人感觉多此一举。

另外这里不得不提一下,KeyVault中存的Key,比如RSA秘钥上传以后,客户端读出来的秘钥只能读到公钥,私钥不可见。可参考文档: https://docs.microsoft.com/zh-cn/azure/key-vault/about-keys-secrets-and-certificates 。因此如果我们想上传一个RSA秘钥对,并且希望从KeyVault中原样读取,可以使用【机密】而不是【秘钥】。

比如先把秘钥文件(.pem)文件转换成base64字符串,然后再上传。

下文就通过一个Linux Shell 脚本 [start-demo.sh]来演示该流程:

  • 使用工具openssl生成一个RSA密钥对,文件名为private.pem
  • 使用Azure AD Service Principal 登陆Azure CLI
  • 上传 private.pem 至Azure KeyVault
  • 从Azure KeyVault中下载 private.pem
#!/bin/bash


#
# The parameters of Azure Active Directory application
#
clientId='{ AAD Application Id}'
clientAuth='{ AAD 应用程序 秘钥}'
tenant='cecccic.partner.onmschina.cn'

#
# Genr. RSA key pair 
#
echo 'Genr. RSA key pair...'
 openssl genrsa -des3 -out private.pem 1024


#
# Login Azure CLI with Azure AD application.
#
echo "login in Azure China started..."
az cloud set -n AzureChinaCloud
az login --service-principal -u $clientId -p $clientAuth --tenant $tenant --allow-no-subscriptions
if [ $? = 0 ]
then
   echo "login in Azure China successfully."
fi

#
# Upload private.pem file to Azure KeyVault
# 
echo 'Upload private.pem file to Azure KeyVault started...'
inputbase64key=` base64 private.pem -w 0 `
az keyvault secret set --vault-name 'dev' --name 'demo-key' --value $inputbase64key  > /dev/null
echo 'Upload private.pem file to Azure KeyVault done.'

#
# Download private.pem file from Azure KeyVault to local
# 
echo 'Download private.pem file from Azure KeyVault started...'
az keyvault secret show --vault-name 'dev' --name 'demo-key' |jq -r .value | base64 -d -w 0 > private2.pem 
echo 'Download private.pem file done'

× 用微信扫描并分享


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++ Primer 中文版(第 5 版)

C++ Primer 中文版(第 5 版)

[美] Stanley B. Lippman、[美] Josée Lajoie、[美] Barbara E. Moo / 王刚、杨巨峰 / 电子工业出版社 / 2013-9-1 / CNY 128.00

这本久负盛名的 C++经典教程,时隔八年之久,终迎来史无前例的重大升级。除令全球无数程序员从中受益,甚至为之迷醉的——C++ 大师 Stanley B. Lippman 的丰富实践经验,C++标准委员会原负责人 Josée Lajoie 对C++标准的深入理解,以及C++ 先驱 Barbara E. Moo 在 C++教学方面的真知灼见外,更是基于全新的 C++11标准进行了全面而彻底的内容更新。......一起来看看 《C++ Primer 中文版(第 5 版)》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具