2017-02-16 105 views
2

目前我的功能可以公开访问。有没有办法让它只能通过别的东西来访问,比如API网关,而不是直接访问?我尝试通过“网络”刀片添加VNET,但我不认为它做了什么(我仍然可以公开地调用这些功能)......我认为这样做可以使功能访问专用网络上的资源。我没有看到设置中的任何选项使IP隐私。我对网络相关问题不太熟悉,如果我不清楚,请致歉。使Azure功能无法公开访问?

+0

我会为此使用App Service环境,但功能应用程序似乎尚未在“可用应用程序类型”选项中可用 –

+0

@KaiWalter不幸的是,函数未在该UI中列出,但您只需执行顶级创建,选择“App Service Plan”作为Function App的托管选项。 –

+0

另请参阅... http://stackoverflow.com/questions/43241431/azure-functions-can-you-use-web-config-restrictions-eg-ip-restriction-or-bas – SteveC

回答

2

built-in keys support旨在为此提供选项。您可以要求所有请求包含仅与您关心的资源共享的API密钥。事实上,所有HTTP触发的功能默认都需要一个密钥。您将不得不明确选择删除此要求。

虽然钥匙不是网络解决方案,但如果泄漏密钥,有人可以访问您的API(直到您滚动钥匙)。你是正确的,VNet支持是点对点的,这意味着它可以访问资源,但功能应用程序本身不受保护。应用程序服务环境可以解决这个问题,尽管Kai对原始问题的评论是正确的 - ASE尚不适用于函数。

除了钥匙,你可以看看使用App Service Authentication/Authorization要求AAD服务的主体。这实际上就像一个关键,但如果您正在为AAD中的其他实体建模,则会带来额外的好处。除非你知道你需要这个,但是,我会坚持用钥匙。

2

使用CORS功能,您可以限制对Azure功能的访问。要配置它,请检查以下链接:Azure Function Settings,位于CORS部分。

+0

这不仅适用于浏览器中的JavaScript吗? – SteveC