如何防止直接访问托管在 Azure 应用服务中的 API
How to prevent direct access to API hosted in Azure app service
我有一个托管在 Azure 应用服务中的后端 API。我想使用 Azure API 管理作为此后端 API 的前端,并已在 Azure 中成功配置。我已将 API 管理配置为在访问此后端 API 时使用 OAuth,这在客户端通过 Azure API 管理端点访问 API 时有效,但我如何防止人们直接访问后端 API 端点以便只允许来自 API 管理端点的调用?
有几个不同安全级别的选项:
- 共享秘密 - 在 APIM 中设置一个具有特定值的特定 header 并在您的后端检查该值。
- 托管身份 - 您可以在 APIM 服务中启用托管身份并将其令牌发送到您可以验证它的后端。
- IP 过滤器 - 在后端检查 APIM IP 作为来源。
- 客户端证书授权 - 将客户端证书授权上传到 APIM 并将其附加到后端的每个请求。在后端检查该证书。
- VNET - 将 APIM 和您的后端置于同一 VNET 中并阻止从外部访问后端。
我个人使用 IP 限制取得了巨大的成功。 APIM 被赋予一个静态 IP,因此您可以在 "root API" 中设置一个 IP 限制,只允许 APIM 呼叫。如果您直接调用根 API,则会导致 403。
如果您不希望来自根 API 的 403,您可以使用策略来更改它,或者您可以在 APIM 级别设置身份验证,您将获得一个 401,甚至在达到 403 之前。
我有一个托管在 Azure 应用服务中的后端 API。我想使用 Azure API 管理作为此后端 API 的前端,并已在 Azure 中成功配置。我已将 API 管理配置为在访问此后端 API 时使用 OAuth,这在客户端通过 Azure API 管理端点访问 API 时有效,但我如何防止人们直接访问后端 API 端点以便只允许来自 API 管理端点的调用?
有几个不同安全级别的选项:
- 共享秘密 - 在 APIM 中设置一个具有特定值的特定 header 并在您的后端检查该值。
- 托管身份 - 您可以在 APIM 服务中启用托管身份并将其令牌发送到您可以验证它的后端。
- IP 过滤器 - 在后端检查 APIM IP 作为来源。
- 客户端证书授权 - 将客户端证书授权上传到 APIM 并将其附加到后端的每个请求。在后端检查该证书。
- VNET - 将 APIM 和您的后端置于同一 VNET 中并阻止从外部访问后端。
我个人使用 IP 限制取得了巨大的成功。 APIM 被赋予一个静态 IP,因此您可以在 "root API" 中设置一个 IP 限制,只允许 APIM 呼叫。如果您直接调用根 API,则会导致 403。
如果您不希望来自根 API 的 403,您可以使用策略来更改它,或者您可以在 APIM 级别设置身份验证,您将获得一个 401,甚至在达到 403 之前。