【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account
问题描述
在Azure的同一数据中心,API Management访问启用了防火墙的Storage Account,并且把APIM的公网IP地址设置在白名单。但访问依旧是403
原因是:
存储帐户部署在同一区域中的服务使用专用的 Azure IP 地址进行通信。 因此,不能基于特定的 Azure 服务的公共出站 IP 地址范围来限制对其的访问。
在Storage Account的网络设置页面,有一个功能可以通过管理标识(Managed Identity)的方式访问Storage Account。
Specify resource instances that will have access to your storage account based on their system-assigned managed identity.根据系统分配的托管标识指定有权访问存储帐户的资源实例。

所以,如上图所示,可以通过管理标识来指定APIM服务的实例来访问Storage Account中的文件。本文就介绍 [在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account]
实现步骤
第一步:启用APIM服务的MI,并添加Storage Account 的RBAC访问权限
注意:不是 开发者门户部分的Identity,而是APIM 安全部分的 Managed identities

以下权限均可以访问Storage Account:
- Storage Account Data Owner
- Storage Blob Data Contributor
- Storage Blob Data Reader
第二步:在Storage Account的Network中,添加APIM 服务访问实例,以及选择正确的MI
- 在Resource type中选择 Microsoft.ApiManagement/service
- 在Instance name中选择APIM服务名称

第三步:为APIM中的接口添加 authentication-managed-identity Policy
- 在API的Inbound策略中,添加 <authentication-managed-identity resource="https://storage.azure.com/" />, resource内容不变。即使在中国区,也是使用 storage.azure.com域名
- 访问Storage Account,必须携带 x-ms-version header,为了避免每次手动输入,所以在此处添加 set-header 策略来设置 x-ms-version 的值

完整的Polciy内容:
<policies>
<inbound>
<base />
<authentication-managed-identity resource="https://storage.azure.com/" />
<set-header name="X-Ms-Version" exists-action="override">
<value>2022-11-02</value>
</set-header>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
测试访问,成功!

参考资料
Storage Account允许从 Internet IP 范围进行访问 : https://docs.azure.cn/zh-cn/storage/common/storage-network-security?tabs=azure-portal#grant-access-from-an-internet-ip-range
Authenticate with managed identity : https://learn.microsoft.com/en-us/azure/api-management/authentication-managed-identity-policy#examples
【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account的更多相关文章
- Azure Mobile Services的REST API调用方式和自定义API
Azure Mobile Services(移动服务)是微软在Azure平台中提供的一种跨平台的移动应用后端服务,即移动后端即服务.支持.NET和JavaScript(Node.js)写后端代码:支持 ...
- 使用JWT来实现对API的授权访问
目录 什么是JWT JWT的结构 Header Payload Signature 解码后的JWT JWT是怎样工作的 在JAVA里使用JWT 引入依赖 JWT Service 生成JWT 解码JWT ...
- Azure Cosmos DB (二) SQL API 操作
一,引言 还记得国庆期间,我们学习了一下关于Azure Cosmos DB 的一些基础知识以及Azure Cosmos DB 的几种支持数据库类型.今天就开始分享一些实战操作,如何通过Azure Po ...
- ASP.NET Web Api构建基于REST风格的服务实战系列教程
使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[十]——使用CacheCow和ETag缓存资源 系列导航地址http://www.cnblogs.com/fzrain/p/3 ...
- 谈谈微服务中的 API 网关(API Gateway)
前言 又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了,在这里给大家抱歉. 那么,在本篇文章中,我们就一起来探 ...
- 微服务中的 API 网关(API Gateway)
API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需进行 ...
- [Windows Azure] Walkthrough to Configure System Center Management Pack for Windows Azure Fabric Preview for SCOM 2012 SP1 (with a MetricsHub Bonus)
The wait is finally over. This is a huge update to the Azure Management Pack over the one that was r ...
- [Windows Azure] Monitoring SQL Database Using Dynamic Management Views
Monitoring Windows Azure SQL Database Using Dynamic Management Views 5 out of 7 rated this helpful - ...
- 服务中的 API 网关(API Gateway)
我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有自己的数据库,框架甚至语言等,这些小系统通常以提供 Rest Api ...
- Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用
写在前面 Api网关我们之前是用 .netcore写的 Ocelot的,使用后并没有完全达到我们的预期,花了些时间了解后觉得kong可能是个更合适的选择. 简单说下kong对比ocelot打动我的 ...
随机推荐
- PRINCE2核心知识点整理
前言 PRINCE2,即 PRoject IN Controlled Environment(受控环境中的项目)是一种结构化的项目管理方法论,由英国政府内阁商务部(OGC)推出,是英国项目管理标准. ...
- 一款能“干掉” ChatGPT 的应用「GitHub 热点速览」
据说有了它,ChatGPT 就可以靠边站了.因为 Auto-GPT 能更加主动地完成你给他的指定任务,不用做更多的人为干涉,它的推理能力比 ChatGPT 更强,有人用它解放双手做了个 React 网 ...
- Go中的有限状态机FSM的详细介绍
1.FSM简介 1.1 有限状态机的定义 有限状态机(Finite State Machine,FSM)是一种数学模型,用于描述系统在不同状态下的行为和转移条件. 状态机有三个组成部分:状态(Stat ...
- 获取电脑的网络连接状态(三)Ping
网络连接判断,使用ping测试获取: 1 private static async Task<bool> IsPingSuccess() 2 { 3 try 4 { 5 using (Pi ...
- [Pytorch框架] 1.1、Pytorch简介
文章目录 1.1 Pytorch 简介 1.1.1 PyTorch的由来 1.1.2 Torch是什么? 1.1.3 重新介绍 PyTorch 1.1.4 对比PyTorch和Tensorflow 1 ...
- 中国剩余定理(CRT)学习笔记
约定 \(A\perp B\) 表示 \(\gcd(A,B)=1\). \(A\mid B\) 表示 \(B\equiv 0\pmod{A}(A\neq0)\). 引入 考虑以下这道题: 有物不知其數 ...
- JavaScript中的四种枚举方式
字符串和数字具有无数个值,而其他类型如布尔值则是有限的集合. 一周的日子(星期一,星期二,...,星期日),一年的季节(冬季,春季,夏季,秋季)和基本方向(北,东,南,西)都是具有有限值集合的例子. ...
- 2022-06-11:注意本文件中,graph不是邻接矩阵的含义,而是一个二部图。 在长度为N的邻接矩阵matrix中,所有的点有N个,matrix[i][j]表示点i到点j的距离或者权重, 而在二部
2022-06-11:注意本文件中,graph不是邻接矩阵的含义,而是一个二部图. 在长度为N的邻接矩阵matrix中,所有的点有N个,matrix[i][j]表示点i到点j的距离或者权重, 而在二部 ...
- 2022-05-21:给定一个数组arr,长度为n, 表示n个服务员,每个人服务一个人的时间。 给定一个正数m,表示有m个人等位。 如果你是刚来的人,请问你需要等多久? 假设:m远远大于n,比如n<=
2022-05-21:给定一个数组arr,长度为n, 表示n个服务员,每个人服务一个人的时间. 给定一个正数m,表示有m个人等位. 如果你是刚来的人,请问你需要等多久? 假设:m远远大于n,比如n&l ...
- ET框架6.0分析三、网络通信
概述 ET框架的消息机制贯彻始终,包含Entity消息(Awake,Update ...),自定义(Customer)消息,网络消息等.而ET系统的进程包含了客户端.Gate等各种类型的服务器,进程包 ...