很多时候管理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:{你的应用密钥}

OAuth EndPoint:https://login.chinacloudapi.cn/{你的目录ID}/oauth2/token

有了这些信息以后就可以通过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

请参考:https://blogs.msdn.microsoft.com/dsadsi/2013/08/12/using-fiddler-to-acquire-a-jwt-json-web-token-for-use-with-the-graph-api/

请求里面的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}

请求的Url记得带上api-version信息,如:https://kvstorage.vault.azure.cn/secrets/storage?api-version=2015-06-01

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

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

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

http://www.dushyantgill.com/blog/2015/04/26/say-goodbye-to-key-management-manage-access-to-azure-storage-data-using-azure-ad/

利用KeyVault来加强存储Azure Storage访问密钥管理的更多相关文章

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

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

  2. 【Azure 存储服务】代码版 Azure Storage Blob 生成 SAS (Shared Access Signature: 共享访问签名)

    问题描述 在使用Azure存储服务,为了有效的保护Storage的Access Keys.可以使用另一种授权方式访问资源(Shared Access Signature: 共享访问签名), 它的好处可 ...

  3. Windows Azure Storage (17) Azure Storage读取访问地域冗余(Read Access – Geo Redundant Storage, RA-GRS)

    <Windows Azure Platform 系列文章目录> 细心的用户会发现,微软在国外和国内的数据中心建设都是成对的,比如香港数据中心(Asia East)和新加坡的数据中心(Sou ...

  4. 如何访问Microsoft Azure Storage

    首先先要创建存储账户 http://www.cnblogs.com/SignalTips/p/4119128.html 可以通过以下的几个方式访问 通过Visual Studio 2013 Commu ...

  5. 使用PowerShell创建Azure Storage的SAS Token访问Azure Blob文件

    Azure的存储包含Storage Account.Container.Blob等具体的关系如下: 我们常用的blob存储,存放在Storage Account的Container里面. 目前有三种方 ...

  6. Azure Storage 系列(二) .NET Core Web 项目中操作 Blob 存储

    一,引言 上一篇文章,我们介绍到在实际项目中系统会产生大量的日志文件,用户上传的头像等等,同时也介绍到可以使用Azure Blob Storage 来存储项目中的一些日志文件,用户头像,用户视频等等. ...

  7. 【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint连接Blob Service遇见 The Azure Storage endpoint url is malformed

    问题描述 使用Azure Storage Account的共享访问签名(Share Access Signature) 生成的终结点,连接时遇见  The Azure Storage endpoint ...

  8. [New Portal]Windows Azure Storage (14) 使用Azure Blob的PutBlock方法,实现文件的分块、离线上传

    <Windows Azure Platform 系列文章目录> 相关内容 Windows Azure Platform (二十二) Windows Azure Storage Servic ...

  9. Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob

    <Windows Azure Platform 系列文章目录> 请读者在参考本文之前,预习相关背景知识:Windows Azure Storage (1) Windows Azure St ...

随机推荐

  1. vue通过判断写样式(v-bind)

    v-bind:style="$index % 2 > 0?'background-color:#FFF;':'background-color:#D4EAFA;'"

  2. poj1260 pearls

    题目大意:珠宝店有许多珠宝,你需要每种珠宝各买一定的数目,各种珠宝的价格是不一样的,每种珠宝买的时候都必须多付10颗该珠宝的钱,但一种珠宝可以用比它更贵的珠宝来代替,所以有时候用更贵的珠宝来充数可能更 ...

  3. 源码安装extundelete以及对遇到问题的解决

    软件下载:http://sourceforge.net/projects/extundelete/ 1.在安装extundelete包./configure时遇到configure: error: C ...

  4. phpize的安装

    一直想装VLD却一直没装上,因为需要用到phpize,但这个工具大部分机子都没有装,上网搜了一下大部分都是讲phpize的应用没有讲怎么安装. 今天终于搜到了,不过是要在linux机器上,有yum命令 ...

  5. 109. Convert Sorted List to Binary Search Tree

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  6. java运用Comparator为对象排序

    要排序的类需要实现Comparator接口,重写compare方法: user类及实现接口的内部类: package test; import java.util.Comparator; public ...

  7. 我的IT相关网址收藏

    it语言学习免费视频: 尚学堂:http://www.sxt.cn/ 慕课网:http://www.imooc.com/course/list 大学生自学网:http://v.dxsbb.com/ 尚 ...

  8. 黄聪:wordpress前台自定义用户,调用wp_editor上传附件提示【抱歉,出于安全的考虑,不支持此文件类型】错误。

    1.直接禁用文件类型检测,在wp-config.php文件中,添加这样一句代码define('ALLOW_UNFILTERED_UPLOADS', true); 2.在functions.php里面, ...

  9. PLSQL_低效SQL的识别和查询汇总(案例)

    2014-12-18 Created By BaoXinjian

  10. JDBC中的批量插入和乱码解决

    字符集-乱码问题 用JDBC访问MySql数据库的时候,如果JDBC使用的字符集和MySql使用的字符集不一致,那么会导致乱码发生.解决办法当时是在使用JDBC的时候指定和数据库一样的字符集.我们可以 ...