很多时候管理Azure的存储账号我们都需要通过下面的界面管理访问密钥,大部分情况下通过密钥的轮替使用更新就可以做到安全管理了。

但是很多时候存储账号的Key就会不小心分发到开人员、测试人员、和管理员手中。现在如果需要更加严格的管理这个存储账号的并且指定特定的应用程序才能访问这个存储账号的话,可以利用Azure Active Directory(AAD)和Key Vault(密钥管理库)来加强这个密钥管理

第一步:利用PowerShell生成一个新的密钥库

Add-AzureRmAccount -EnvironmentName "AzureChinaCloud"New-AzureRMResourceGroup -Name kvstorage

New-AzureRmKeyVault -VaultName kvstorage -ResourceGroupName kvstorage

第二步:将Storage的Access Key放入密钥库中

假设我们这里拿到的AccessKey是:password123456789

$secValue=ConvertTo-SecureString 'password123456789' -AsPlainText -Force

Set-AzureKeyVaultSecret -VaultName kvstorage -Name storage -SecretValue $secValue

非常简单的已经讲一个Key放入了密钥库中了,那剩下就是需要授权应用来使用这个Key.

第三步:创建Azure AD Application

点击Azure 管理界面的Active Directory页,选择当前订阅所使用的目录

创建一个新的Web应用程序

在这个应用的配置页里面我们可以获取到这个应用的ID,同时你可以在这里创建一个应用的访问密钥

有了这个客户端ID,之后我们就可以授权这个应用来访问密钥库了

Set-AzureRmKeyVaultAccessPolicy -VaultName kvstorage -ServicePrincipalName d7cb4add-5b31-44cc-9b25-4009d538f58f -PermissionsToSecrets get

点击管理界面下面的“查看端点”,在这里你可以获取一个非常重要的信息,也就是这个应用的oAuth2.0的获取Token的Endpoint:

这时候你就已经准备好了下面几个信息:

ClientID:{你的应用ID}

ClientSecret:{你的应用密钥}

有了这些信息以后就可以通过Fiddler来模拟通过REST API来请求密钥库获取存储的AccessKey了,因为全部都是http请求,所以不关你是.NET还是java还是PHP都没关系。

首先我们通过oAuth 2.0的Endpoint获取应用访问密钥库的Bearer Token,我们需要模拟一个http form请求,所以Request Body里面要有

grant_type=client_credentials&client_id={你的应用ID}&client_secret={你的应用密钥}&resource=https%3a%2f%2fvault.azure.cn

注意你的应用密钥中的+号用%2B代替 =号用%3D代替 /号用%2F代替

例如:

glYO5dRztXLYyA+S7nxYclOzDBlmfh/F4KacfkIXgH8=

就是:

glYO5dRztXLYyA%2BS7nxYclOzDBlmfh%2FF4KacfkIXgH8%3D

请求里面的Header:

Accept: Application/json

Content-Type: application/x-www-form-urlencoded

点击Execute之后就Post了一个Http请求到AAD里面去认证了,这时候我们就可以通过Fiddler拿到返回的Token信息

有了请求KeyVault的Token信息之后,我们就可以找回放置在密钥库中的存储账号的AccessKey了。

首先我们可以通过PowerShell获取到这个密钥的Uri的

有了这个Uri和Token之后之后我们只需要在通过Fiddler发送一个Http GET请求就能拿到密钥了

我们准一个Http 请求的Header:

Accept: Application/json

Authorization: Bearer {上一步获取到的Token}

点击Execute之后,我们就可以从结果页里面获取到之前存入的AccessKey了。

如果你还希望你的Storage AccessKey是定时动态生成的,你可以结合Azure Automation,自动生成新的Access Key,然后写到密钥库中,这样就可以让你的AccessKey更加安全了。

详细的做法可以参考下面这个英文的博客:

java获取keyvault_利用KeyVault来加强存储Azure Storage访问密钥管理相关推荐

  1. java获取keyvault_教程:在 Java Spring Boot 应用中使用 Azure 应用程序配置 Key Vault 引用 | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 教程:在 Java S ...

  2. java获取keyvault_使用 Key Vault 引用 - Azure App Service | Microsoft Docs

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 使用应用服务和 Azu ...

  3. java获取keyvault_ARM Template 结合key vault存储机密信息 (一)

    前两篇讲到了terraform,作为跨平台的IAC工具绝对是没话说的,很非常好用,今天再讲回Azure原生的ARM Template,ARM Template好处就是作为微软的亲儿子,兼容性啥的绝对没 ...

  4. java 获取permgen_java – 如何查看PermGen中存储的确切内容?

    在我的应用程序中,我有一个PermGen内存不足错误,我想知道导致它的原因. 我通过VisualVM连接到我的应用程序. 我想知道在我的应用程序中究竟消耗了如此多的PermGen内存,但我无法在Vis ...

  5. EF Core下利用Mysql进行数据存储在并发访问下的数据同步问题

    小故事 在开始讲这篇文章之前,我们来说一个小故事,纯素虚构(真实的存钱逻辑并非如此) 小刘发工资后,赶忙拿着现金去银行,准备把钱存起来,而与此同时,小刘的老婆刘嫂知道小刘的品性,知道他发工资的日子,也 ...

  6. java获取被占用的文件进程_java – 进程无法访问该文件,因为它正被另一个进程使用...

    我有一段代码监视目录以添加文件.每当将新文件添加到目录时,将挑选该文件的内容并在kafka上发布,然后删除该文件. 这在我发出单个请求时有效,但是一旦我将代码从jMeter请求5或10个用户请求,内容 ...

  7. java获取手机通讯录权限_iOS6 中如何获得通讯录访问权限

    在iOS 6中,以前工作正常的访问通讯录的iPhone程序可能会出错,现象是程序启动时不提醒用户是否允许程序访问通讯录,同时在"设置->隐私->通讯录"中看不到你的程序 ...

  8. java获取文件名方法,利用Java获取文件名、类名、方法名和行号的方法小结

    大家都知道,在C语言中,我们可以通过宏FILE. __LINE__来获取文件名和行号,而在Java语言中,则可以通过StackTraceElement类来获取文件名.类名.方法名.行号,具体代码如下: ...

  9. Java获取系统时间日期存储到数据库Timestamp时间限制

    由于Java中没有datetime数据类型,timestamp类型数据在数据库中只能存储到2038年,数据库中存完整的时间日期可以使用datetime.本文主要探索在Java中使用Timestamp类 ...

最新文章

  1. windows如何实现视屏自动定时、全屏、轮播 播放
  2. resultset需要关闭吗_微信视频号能关闭吗?怎么操作?3秒教你搞定
  3. MSSQL数据库全库批量替换
  4. 获取日志$6到$NF的字段
  5. python 进程编程速成
  6. html 怎么让tr的css覆盖td的_通达OA上传漏洞之变量覆盖分析
  7. 矩池云上创建Pytorch 0.41环境
  8. 常见的电子商务模式理解
  9. 递增序列(迭代加深)
  10. Win10系统升级,1804->21H2
  11. 论文相关-论文写作-图片色卡
  12. 如何将电脑图片缩小kb?图片怎么压缩大小?
  13. shopex php5.3 无法安装,php版本导致shopex4.8.5安装的问题
  14. Android 购物选择颜色、尺码实现(二)
  15. Hibernate could not initialize proxy - the owning Session was closed 错误 :解决办法
  16. UVM中uvm_sequencer的方法总结
  17. 服务器系统 固态硬盘速度慢,SSD速度慢的原因和解决办法 电脑装了固态硬盘还慢怎么办...
  18. 联想微型计算机B3O5,触摸电视功能 联想B3系列一体电脑评测
  19. Unity学习笔记(4)-----粒子效果的实现
  20. ExcelJS 导入导出excel带下拉框筛选数据

热门文章

  1. 透过水晶球一瞥下一代SOC
  2. A 元素[HTML 4.01]
  3. 单台主机 kafka + zookeeper 集群搭建
  4. C# 用户控件之温度计
  5. Lintcode: Kth Smallest Number in Sorted Matrix
  6. apache 定义日志格式 及日志记录
  7. Caused by: java.lang.NoSuchMethodException: onClick_Flashlight [class android.view.View]
  8. 正则表达式练习 Regex Golf
  9. Exchange 2013部署系列之(七)配置SSL多域名证书
  10. linux 发行版 suse opensuse 区别