如何让我的工作人员角色仅与APIM API通信?

时间:2019-02-15 16:47:16

标签: azure azure-cloud-services azure-worker-roles azure-api-management azure-virtual-network

我有一个负责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直接通过对等的虚拟网络进行调用?现在,我相信它仍在通过公共互联网进行。

1 个答案:

答案 0 :(得分:1)

我在正确的轨道上。我唯一需要更改的是remoteSubnet的值。我需要包括API管理服务的VIP,而不是ARM虚拟网络的地址空间。 .cscfg文件的相关部分如下所示:

    [Route("r")]
    public sealed class PageController : Controller
     {
    [Route("{*queryvalues}")]
     public IActionResult Index()
        { 
          return View();

        }
      }