我有一个负责ApiController
的工作人员角色,当前它通过我在其服务配置文件中定义的http和https输入端点与公共互联网通信。
我想将此API放在Azure APIM API的后面,并让所有流量通过那里,而不是直接扮演worker角色。我已经很忙了,但是在确保不能直接从公共互联网上扮演工人角色时遇到了麻烦。
当前:
我认为,阻止我的工作人员角色直接从公共互联网直接访问的最佳方法是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直接通过对等的虚拟网络进行调用?现在,我相信它仍在通过公共互联网进行。
答案 0 :(得分:1)
我在正确的轨道上。我唯一需要更改的是remoteSubnet的值。我需要包括API管理服务的VIP,而不是ARM虚拟网络的地址空间。 .cscfg文件的相关部分如下所示:
[Route("r")]
public sealed class PageController : Controller
{
[Route("{*queryvalues}")]
public IActionResult Index()
{
return View();
}
}