【发布时间】:2019-02-15 16:47:15
【问题描述】:
我有一个托管 ApiController 的辅助角色,它目前通过我在其服务配置文件中定义的 http 和 https 输入端点与公共互联网通信。
我想将此 API 放在 Azure APIM API 后面,让所有流量都通过那里,而不是直接打到辅助角色。我已经完成了大部分工作,但无法确保无法直接从公共 Internet 访问 worker 角色。
目前:
- 我创建了一个 ARM 虚拟网络和一个 Azure APIM API
- 我已将我们的 API 配置为 run on the ARM virtual network
- 我还创建了一个经典的虚拟网络和configured our worker role to deploy to it
- I've defined a peering 在它和我们经典虚拟网络之间的 ARM 虚拟网络中
- API 的 Web 服务 URL 设置为云服务的站点 URL 值
- 我们的worker角色配置文件目前有http and https input endpoints that can be hit from the public internet
- 我目前有一个 url 映射到我的 API 管理服务的虚拟 IP (VIP) 地址,并且可以通过该 url 成功地向我的 API 发出请求。
我认为防止我的工作人员角色被直接从公共互联网访问的最佳方法是defining Access Control List rules in its configuration file,它只允许来自我的 APIM API 的调用。它看起来像这样:
<AccessControls>
<AccessControl name="APIM">
<Rule action="permit" description="OnlyPermitAPIM" order="100" remoteSubnet="?" />
</AccessControl>
</AccessControls>
<EndpointAcls>
<EndpointAcl role="RoleName" endPoint="httpsIn" accessControl="APIM"/>
<EndpointAcl role="RoleName" endPoint="httpIn" accessControl="APIM"/>
</EndpointAcls>
我不确定remoteSubnet 属性的正确值是多少。我尝试输入我的 ARM 虚拟网络(我的 APIM API 所在)的地址空间值,但这似乎不起作用,测试调用返回 500 状态。
这是正确的方法吗?另外,有没有办法确保我的 APIM API 直接通过对等虚拟网络进行调用?现在我相信它仍在通过公共互联网。
【问题讨论】:
标签: azure azure-cloud-services azure-worker-roles azure-api-management azure-virtual-network