如何实现公司内部Web服务的安全性

时间:2010-12-30 18:01:10

标签: web-services security

最近出现了一个关于Web服务安全性的话题。不一定是您可能想到的WSE 3.0中的位,而是更多关于在公司内保护服务的内容。

例如。我们一直在讨论通过一个或多个Web服务端点为整个公司提供某些功能的可能性。问题归结为谁可以访问Web服务。我看到他们以三种不同的方式访问:

  1. 通过网站。本网站可能会或可能不会模仿访问该网站的用户,因此对Web服务的调用可能是真实用户,IIS服务帐户或我们可能因其他原因而冒充的其他服务帐户
  2. 通过批处理程序。也在服务器上运行,但通常作为服务帐户运行
  3. 通过用户桌面上的Windows应用程序,在这种情况下将使用用户的凭据
  4. 现在,理论上我们 可以 让任何人都可以开放网络服务。无知是幸福,对吧?但问题是,如果攻击者获得访问我们网络的权限并发现网络服务,他就会对知识产权进行全权委托。所以开放并不好。

    我们可以使用一些精心设计的自制方案来锁定它们,以检查IP地址,用户名等。但这似乎是一场行政噩梦。

    有什么想法?我们正在讨论几个想法,但我想知道是否有人已经解决了这类问题。

    由于

2 个答案:

答案 0 :(得分:1)

在我公司,我们使用带有加密签名的X509证书。这为您的服务提供了最大的安全性。要限制对服务的访问,您只能允许客户的公共证书。这当然意味着您的客户也必须拥有自己的证书。如果您的客户没有自己的证书,您可以使用OpenSSL创建自己的证书。我自己使用过此应用程序并创建了可用于加密或握手的合法证书。此外,我相信您可以为每个客户创建自定义策略,并通过在每个功能上使用策略属性来限制对服务功能的访问(可能是说谎,但我想我偶然发现了这一点)。希望这会有所帮助。

答案 1 :(得分:0)

如果您正在考虑为内部使用打开端点这是一回事,但您有多少内部客户?

如果端点要驱动需要动态数据的Excel电子表格或BI数据立方体,并且可供各种各样的人使用,那么您需要仔细考虑安全性。也许您可以将每日生成的API密钥发布到公司内部网上的显着页面 - 这样,如果他们想要使用端点,数据的内部用户会有一些小的不便,但它不会成为IT的一个讨厌的维护工作

如果端点将由少数定制应用程序使用,那么我建议将应用程序本身内的安全性紧密耦合(在配置文件中硬编码然后加密)。通过这种方式,可以广泛使用访问,但并不广为人知。

显然只允许GET(并确保GET不是伪装的POST或PUT)并记录每个端点以进行高级管理签收。如果高级管理层对允许访问数据的风险感到满意,那么它实际上只是关于如何锁定数据的辩论。