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

问题描述 投票:0回答:1

我有一个托管ApiController的辅助角色,它目前通过我在其服务配置文件中定义的http和https输入端点与公共互联网进行通信。

我想将此API放在Azure APIM 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
1个回答
1
投票

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

<AccessControls>
  <AccessControl name="APIM">
    <Rule action="permit" description="OnlyPermitAPIM" order="100" remoteSubnet="<VIP address of APIM service>/32" />
  </AccessControl>
</AccessControls>
<EndpointAcls>
  <EndpointAcl role="RoleName" endPoint="httpsIn" accessControl="APIM"/>
  <EndpointAcl role="RoleName" endPoint="httpIn" accessControl="APIM"/>
</EndpointAcls>
© www.soinside.com 2019 - 2024. All rights reserved.