我想使用Azure中的API管理限制对我的Azure Container App的访问。
我已成功将API管理与容器应用程序链接,并已使用API密钥激活订阅,该API密钥将阻止通过API管理服务URL进行公共访问。但问题是,仍然可以通过容器应用程序的公共URL访问容器应用程序。
仍然可以选择将容器应用程序中的Ingress Traffic
设置为Limited to Container Apps Environment
,但随后API管理也将无法访问容器应用程序。
正确保护API管理服务背后的容器应用程序的正确方法是什么?
4条答案
按热度按时间rjee0c151#
对于Azure容器示例,你没有类似于Azure应用服务的配置IP限制的选项。相反,你必须首先创建虚拟网络并将网络安全组配置为拒绝来自Internet的所有流量,仅允许来自APIM的流量,然后将你的Azure容器示例部署到此虚拟网络。
有关将Azure容器示例部署到虚拟网络的信息,请参见此处:https://learn.microsoft.com/en-us/azure/container-instances/container-instances-vnet
有关在虚拟网络中配置网络安全组的信息,请参阅:https://learn.microsoft.com/en-us/azure/virtual-network/manage-network-security-group#work-with-security-rules
cfh9epnr2#
您的应用服务仍可通过公共Internet访问,因为您尚未在应用服务的网络中配置访问限制。
您需要做的是转到您的应用服务,然后从左侧菜单中选择网络并打开入站流量的访问限制。
创建访问限制规则以拒绝来自Internet的访问。
接下来创建第二个访问规则以允许从APIM访问。确保此访问规则的优先级较高。
在此处阅读有关如何设置应用服务IP限制的Microsoft文档:https://learn.microsoft.com/en-us/azure/app-service/app-service-ip-restrictions
i34xakig3#
假设您的API管理服务有一个静态IP(不是消费计划),您将需要使用自己的VNET:
然后,使用NSG,您可以添加入站规则,以仅允许来自APIM服务IP的HTTPS(TCP 443)通信。
33qvvth14#
Azure容器应用程序现在似乎确实能够限制入站IP地址
https://azure.microsoft.com/en-gb/updates/public-preview-inbound-ip-restrictions-support-in-azure-container-apps/
我们正在寻找一个类似的架构,但面临着类似的困境。我们拥有的一切都是通过Azure b2c保护的,但如果我想让Azure API管理可以访问内部容器/微服务,我想我必须放弃b2c(API管理没有用户界面登录到b2c),并使其通过入口公开访问。如果入站ip地址被限制为api管理可能是可以的。我确实担心ip地址会被欺骗,尽管你希望微软已经想到了这一点。
另一个我没有研究过但确实适用于Azure功能的替代方案是托管身份,但这可能根本不适用于容器应用程序
https://www.svenmalvik.com/azure-apim-function-msi/