Azure 中的 API 安全最佳实践

标签 api azure asp.net-web-api azure-api-management azure-api-apps

我正在开发一个 Web API,该 API 将由同一 Azure 主机中的其他 Web 应用程序以及其他第 3 方服务/应用程序调用。我目前正在研究 API 应用程序和 API 管理,但对于安全实现,我有一些不清楚的事情:

  1. API App在实现API管理时是否需要进行身份验证?如果是,有哪些选择?此链接http://www.kefalidis.me/2015/06/taking-advantage-of-api-management-for-api-apps/提到“请记住,没有必要在 API 应用程序上进行身份验证,因为您可以在 API 管理上启用身份验证并让它处理所有详细信息。”那么这意味着 API 应用程序身份验证必须是公开匿名的吗?但知道 API 应用程序直接 URL 的人可以直接访问它。
  2. 实现 API 管理安全性的最佳方式是什么?本教程中提到的(在 header 中传递原始订阅 key )似乎容易受到中间人攻击
  3. 与普通 Web API 项目相比,API 应用程序有哪些优势?

提前致谢。

最佳答案

我可以从API管理的角度回答。为了确保 API 管理和后端之间的连接安全(有时称为最后一英里安全),有几个选项:

  1. 基本身份验证:这是最简单的解决方案
  2. 相互证书身份验证:https://azure.microsoft.com/en-us/documentation/articles/api-management-howto-mutual-certificates/ - 这是最常见的方法。
  3. IP 白名单:如果您有标准层或高级层 APIM 实例,代理的 IP 地址将保持不变。因此,您可以配置防火墙规则来阻止未知的 IP 地址。
  4. JWT token :如果您的后端能够验证 JWT token ,您可以阻止任何没有有效 JWT 的调用者。

此视频可能也有帮助:https://channel9.msdn.com/Blogs/AzureApiMgmt/Last-mile-Security

我认为该文档意味着您可以在 APIM 中进行 JWT token 验证。但是,为了防止有人直接调用您的后端,您必须在 Api 应用程序中实现上述选项之一

关于Azure 中的 API 安全最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32376718/

相关文章:

azure - 每个容器的精细存储帐户成本监控

c# - 如何连接 table1 - table2 和 table1 - table3 并返回 DTO 变量

asp.net-web-api - 从 NSwag swagger 中过滤架构

c# - 在不公开 ORM 模型的情况下使用 OData 进行查询?

c - 如何从C中的函数中获取函数名和参数个数?

Azure Web App 仅通过应用程序网关并禁用直接访问

xml - .Net Core 2 接受返回 406 的 XML header

asp.net - Web 角色内部服务器错误 (500.22)

android - google books api改造

ios - 适用于 iPhone 和 iPad 的 iOS 实时视频聊天应用程序