版权:转载请在文章明显位置注明做者及出处。如发现错误,欢迎批评指正。
来个惯例,吹水!😅😅😅😅😅api
前一周由于考试,还有我的的私事,一会儿差点颓废了。想了想,写博客这种的东西仍是得坚持,再忙,也要检查。要养成一种习惯,同时这也是自我约束的一种形式。虽说不能浪费大量时间在刷朋友圈,看自媒体的新闻,看一些营销号的视频等等,不喜勿喷啊,这是我我的的一些观念,也没有带认识眼光啊!好了,废话很少说,在此先立个Flag,bash
1,保证每周输出一片文章。ssh
2,开始检查每周4次的5千米跑步。curl
好了,开始今天的分析👇👇👇👇👇ide
------------------------------------我是分割线------------------------------------post
以前有个章节讲到Azure AD的一些基础概念,以及Azure AD究竟能够用来作什么?,还讲了讲如何在咱们的项目中集成Azure AD 保护咱们的API资源!讲了这些,其实远远不够,AD里里面还有好多概念性的知识,同时也是在其余模块中有使用到的,就好比什么叫“托管标识”,托管标识又分为“系统托管标识”和“用户托管标识”;什么叫“服务主体”,它又能干什么,和Azure又有什么关系?好的,那么今天就带着这些问题,咱们来剖析,探个究竟!。url
下图演示了托管服务标识如何与 Azure 虚拟机 (VM) 协同工做:spa
Azure 资源管理器收到请求,要求在 VM 上启用系统分配托管标识。(图1).net
Azure 资源管理器在 Azure AD 中建立与 VM 标识相对应的服务主体。 服务主体在此订阅信任的 Azure AD 租户中建立。3d
Azure 资源管理器经过使用服务主体客户端 ID 和证书更新 Azure 实例元数据服务标识终结点来配置 VM 上的标识。
VM 有了标识之后,请根据服务主体信息向 VM 授予对 Azure 资源的访问权限。 若要调用 Azure 资源管理器,请在 Azure AD 中使用基于角色的访问控制 (RBAC) 向 VM 服务主体分配相应的角色。 若要调用 Key Vault,请授予代码对 Key Vault 中特定机密或密钥的访问权限。
在 VM 上运行的代码能够从只能从 VM 中访问的 Azure 实例元数据服务终结点请求令牌:http://169.254.169.254/metadata/identity/oauth2/token
resource=https://management.azure.com/
。调用了 Azure AD,以便使用在步骤 3 中配置的客户端 ID 和证书请求访问令牌(在步骤 5 中指定)。 Azure AD 返回 JSON Web 令牌 (JWT) 访问令牌。
代码在调用支持 Azure AD 身份验证的服务时发送访问令牌。
Azure 资源管理器收到请求,要求建立用户分配托管标识。
Azure 资源管理器在 Azure AD 中建立与用户分配托管标识相对应的服务主体。 服务主体在此订阅信任的 Azure AD 租户中建立。
Azure 资源管理器收到在 VM 上配置用户分配的托管标识的请求,并使用用户分配的托管标识服务主体客户端 ID 和证书更新 Azure 实例元数据服务标识终结点。
建立用户分配托管标识之后,请根据服务主体信息向标识授予对 Azure 资源的访问权限。 若要调用 Azure 资源管理器,请在 Azure AD 中使用 RBAC 向用户分配标识的服务主体分配相应的角色。 若要调用 Key Vault,请授予代码对 Key Vault 中特定机密或密钥的访问权限。
备注
也可在步骤 3 以前执行此步骤。
在 VM 上运行的代码能够从只能从 VM 中访问的 Azure 实例元数据服务标识终结点请求令牌:http://169.254.169.254/metadata/identity/oauth2/token
resource=https://management.azure.com/
。api-version=2018-02-01
或指定更高的版本。调用了 Azure AD,以便使用在步骤 3 中配置的客户端 ID 和证书请求访问令牌(在步骤 5 中指定)。 Azure AD 返回 JSON Web 令牌 (JWT) 访问令牌。
代码在调用支持 Azure AD 身份验证的服务时发送访问令牌。
稍后会提示
注意,此时在AD的应用注册页面是找不到刚刚注册的应用的,只有在给Azure 资源分配托管标识访问Azure资源管理器,我这里是提早建立了是一个vm资源,也就是使用vm系统分配的托管标识访问Azure Key Vault。简而言之,Azure Key Vault做为密钥保管库,Key Vault 随后可以让客户端应用程序使用机密访问未受 Azure Active Directory (AD) 保护的资源。 托管服务标识由 Azure 自动管理,可用于向支持 Azure AD 身份验证的服务进行身份验证,这样就无需在代码中插入凭据了。
可是Azure中资源和资源之间是相互隔离的,不可以相互访问。
因此,咱们须要开启vm的系统分配的托管标识,而后再key vault 中开启 vm的访问策略。以下所示
添加 “vm001” 对 “key vault” 的访问策略
建立 “机密” 信息
名称输入:conn;值输入 123 ,点击“建立”,
而后使用ssh 登录刚刚建立好的vm001上,获取访问 “key vault” 的 “access_token”
在终端窗口中,使用 CURL 向 Azure 资源终结点的本地托管标识发出请求,以获取 Azure Key Vault 的访问令牌
世纪互联版
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.cn' -H Metadata:true
全球版
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true
可使用此访问令牌对 Azure Key Vault 进行身份验证。 下一个 CURL 请求显示如何使用 CURL 和 Key Vault REST API 从 Key Vault 读取密钥。 将须要 Key Vault 的 URL,该 URL 位于 Key Vault 的“概述” 页的“软件包” 部分。 另外,还须要在前面的调用中获取的访问令牌
curl https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01 -H "Authorization: Bearer <ACCESS TOKEN>"
经过在请求头添加Bearer认证,获取key vault 中刚刚建立的机密信息 名称 “conn”,值 “123”
bingo,成功的拿到密钥。开启系统分配的托管标识,其实就是授予例如 Azure VM资源的托管标识对另一个Azure 资源的访问权限。
今天的文章大概介绍了 Azure系统的托管标识究竟是个什么东西,能够用来干什么,这里不只仅能够去 VM 访问 "key Vault",还能够访问 “Azure 存储”,“Azure Cosmos DB”等,都是一样的道理。
下一偏开始讲解一下关于用户本身分配的托管标识,已经做一下演示,同时演示使用用户分配的托管身份运行应用程序。
版权:转载请在文章明显位置注明做者及出处。如发现错误,欢迎批评指正。
做者:Allen
版权:转载请在文章明显位置注明做者及出处。如发现错误,欢迎批评指正。