如何让我的工作者角色只与我的 APIM API 通信?
How do I have my Worker Role only communicate with my APIM API?
我有一个托管 ApiController
的工作者角色,它目前通过我在其服务配置文件中定义的 http 和 https 输入端点与 public 互联网通信。
我想把这个 API 放在 Azure APIM API 后面,让所有流量都经过那里,而不是直接访问辅助角色。我已经完成了大部分工作,但无法确保无法直接从 public 互联网访问工作者角色。
目前:
- 我已经创建了一个 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 值
- 我们的工作者角色配置文件目前有http and https input endpoints that can be hit from the public internet
- 我目前有一个 url 映射到我的 API 管理服务的虚拟 IP (VIP) 地址,并且可以通过 [=] 成功地向我的 API 发出请求66=].
我认为防止从 public 互联网直接访问我的工作者角色的最佳方法是 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 所在的地址 space 值),但这似乎不起作用,测试调用返回 500 状态。
这是正确的方法吗?另外,有没有办法确保我的 APIM API 直接通过对等虚拟网络进行调用?现在我相信它仍在通过 public 互联网。
我走在正确的轨道上。我唯一需要更改的是 remoteSubnet 的值。我需要包含 API 管理服务的 VIP,而不是 ARM 虚拟网络的地址 space。 .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>
我有一个托管 ApiController
的工作者角色,它目前通过我在其服务配置文件中定义的 http 和 https 输入端点与 public 互联网通信。
我想把这个 API 放在 Azure APIM API 后面,让所有流量都经过那里,而不是直接访问辅助角色。我已经完成了大部分工作,但无法确保无法直接从 public 互联网访问工作者角色。
目前:
- 我已经创建了一个 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 值
- 我们的工作者角色配置文件目前有http and https input endpoints that can be hit from the public internet
- 我目前有一个 url 映射到我的 API 管理服务的虚拟 IP (VIP) 地址,并且可以通过 [=] 成功地向我的 API 发出请求66=].
我认为防止从 public 互联网直接访问我的工作者角色的最佳方法是 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 所在的地址 space 值),但这似乎不起作用,测试调用返回 500 状态。
这是正确的方法吗?另外,有没有办法确保我的 APIM API 直接通过对等虚拟网络进行调用?现在我相信它仍在通过 public 互联网。
我走在正确的轨道上。我唯一需要更改的是 remoteSubnet 的值。我需要包含 API 管理服务的 VIP,而不是 ARM 虚拟网络的地址 space。 .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>