目前我的功能可以公开访问。有没有办法让它们只能通过其他东西访问,比如API网关,而不是直接访问?我尝试通过“网络”刀片添加VNET,但我认为没有做任何事情(我仍然可以公开调用这些功能)......我认为只是这样才能使功能可以访问专用网络上的资源。我没有在设置中看到任何使IP成为私有的选项。我不太熟悉网络相关问题,如果我不清楚,请道歉。
答案 0 :(得分:5)
built-in keys support旨在为此提供一个选项。您可以要求所有请求都包含一个API密钥,该密钥仅与您关注的资源共享。实际上,默认情况下,所有HTTP触发的函数都需要密钥。您必须明确选择删除此要求。
密钥不是网络解决方案,如果泄漏密钥,有人可以访问您的API(直到您滚动密钥)。您是正确的,VNet支持是点对点的,这意味着它可以访问资源,但功能应用程序本身不受保护。应用程序服务环境可以解决这个问题,虽然Kai对原始问题的评论是正确的 - ASE尚不可用于函数。
除了密钥之外,您还可以使用App Service Authentication / Authorization来请求AAD服务主体。这实际上就像一把钥匙,但如果你在AAD中建模其他实体,它还有其他好处。除非你知道你需要这个,否则我会坚持使用钥匙。
答案 1 :(得分:1)
使用CORS功能,您可以限制对Azure功能的访问。要进行配置,请在CORS部分检查以下链接:Azure Function Settings。
答案 2 :(得分:1)
您可以将访问限制应用于Azure功能。可以在here中找到该文档。
您可以使用PowerShell AZ模块创建规则(如果需要,也可以创建门户)。
Add-AzWebAppAccessRestrictionRule `
-ResourceGroupName "ResourceGroup" `
-WebAppName "AppName" `
-Name "Ip example rule" `
-Priority 100 `
-Action Allow `
-IpAddress 122.133.144.0/24
here上有Add-AzWebAppAccessRestrictionRule
的文档。
答案 3 :(得分:0)
IP限制可用于限制对白名单IP的访问。您可以通过门户-
https://docs.microsoft.com/en-gb/azure/app-service/app-service-ip-restrictions
或在带有ipSecurity的web.config中