【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account

本文涉及的产品
云防火墙,500元 1000GB
简介: 【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

相关文章
|
20天前
|
安全 API 网络安全
【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
【Azure API 管理】APIM不能连接到 App Service (APIM cannot connect to APP service)
|
20天前
|
API 开发工具 网络架构
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
【Azure Developer】如何通过Azure Portal快速获取到对应操作的API并转换为Python代码
|
20天前
|
存储 Kubernetes API
【APIM】Azure API Management Self-Host Gateway是否可以把请求的日志发送到Application Insights呢?让它和使用Azure上托管的 Gateway一样呢?
【APIM】Azure API Management Self-Host Gateway是否可以把请求的日志发送到Application Insights呢?让它和使用Azure上托管的 Gateway一样呢?
|
20天前
|
API 网络架构 C++
【Azure Key Vault】使用REST API调用Azure Key Vault Secret的示例步骤
【Azure Key Vault】使用REST API调用Azure Key Vault Secret的示例步骤
|
30天前
|
机器人 API Python
智能对话机器人(通义版)会话接口API使用Quick Start
本文主要演示了如何使用python脚本快速调用智能对话机器人API接口,在参数获取的部分给出了具体的获取位置截图,这部分容易出错,第一次使用务必仔细参考接入参数获取的位置。
|
15天前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
25天前
|
SQL 存储 数据处理
|
28天前
|
XML JSON API
RESTful API设计最佳实践:构建高效、可扩展的接口
【8月更文挑战第17天】RESTful API设计是一个涉及多方面因素的复杂过程。通过遵循上述最佳实践,开发者可以构建出更加高效、可扩展、易于维护的API。然而,值得注意的是,最佳实践并非一成不变,随着技术的发展和业务需求的变化,可能需要不断调整和优化API设计。因此,保持对新技术和最佳实践的关注,是成为一名优秀API设计师的关键。
|
29天前
|
监控 API 数据安全/隐私保护
​邮件API触发式接口分析?邮件API接口好评榜
邮件API在企业通信和营销中至关重要,通过自动化邮件发送流程提升效率与客户满意度。本文解析邮件API触发式接口,即基于特定事件(如用户注册、购买产品)自动发送邮件的技术,能显著加快企业响应速度并增强用户体验。推荐市场上的优秀邮件API产品,包括SendGrid、Mailgun、Amazon SES、Postmark及新兴的AOKSend,它们各具特色,如高发送率、详细分析工具、灵活配置、强大的日志功能及用户友好的API接口,帮助企业根据不同需求选择最合适的邮件API解决方案。
|
1月前
|
存储 算法 Oracle
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
19 Java8概述(Java8概述+lambda表达式+函数式接口+方法引用+Stream+新时间API)
55 8