【问题标题】:How do I have my Worker Role only communicate with my APIM API?如何让我的 Worker Role 只与我的 APIM API 通信?
【发布时间】:2019-02-15 16:47:15
【问题描述】:

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

我想将此 API 放在 Azure APIM API 后面,让所有流量都通过那里,而不是直接打到辅助角色。我已经完成了大部分工作,但无法确保无法直接从公共 Internet 访问 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 直接通过对等虚拟网络进行调用?现在我相信它仍在通过公共互联网。

【问题讨论】:

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


    【解决方案1】:

    我在正确的轨道上。我唯一需要更改的是 remoteSubnet 的值。我需要包含 API 管理服务的 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>
    

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多