论文部分内容阅读
您的开发人员正在使用开源软件——即使您不了解它。本文介绍了怎样进行控制,为什么要这样做。
最近,SAS严肃地向企业发出呼吁,企业应限制其使用的开源项目的数量。在以SAS为主导的市场上,这看起来好像是在抗议数据科学和分析开源R编程语言的兴起。但是,在这种抗议中隐藏着很好的一点是:使用开源软件意味着知道您正在使用什么,这样您可以跟踪和维护它。
大多数企业并不知道开发人员使用多少开源软件,以及可能会暴露出什么样的漏洞。您无法对那些自己所依赖的、但是不熟悉的开源项目进行安全评估或者补丁管理。
Sonatype的2016年软件供应链研究发现,第三方组件占典型企业Java应用程序中的百分之八十至九十,而企业下载的十六个组件中就会有一个存在安全漏洞。老一些组件的安全漏洞是新版本的三倍之多,企业应用程序中一半以上组件的使用年限已经超过两年。在发现Heartbleed漏洞两年后,Cisco安全研究在2015年测试的一半以上的OpenSSL版本仍然很脆弱。
2014年,Veracode发现在其扫描的5,000个应用程序中,企业Web应用程序中使用的开源软件和第三方组件在每个应用程序中平均引入了24个已知漏洞。
开源软件监控和管理服务公司WhiteSource首席执行官兼联合创始人Rami Sass告诉CIO.com:“即使已经知道他们在使用开源软件的软件公司也需要通过工具来更好地进行管理。企业很少知道他们正在使用多少开源软件。现在,银行等企业、金融服务公司、媒体公司都有大型软件工程部门。他们通常会惊讶地发现,开源软件的应用非常广泛,而人工清查这些软件并对其进行跟踪的少之又少。平均来说,实际的组件数量是他们所认为的数量的三倍。有时候高达十倍。”
这并不是说,您不应该让开发人员使用开源软件,特别是如果您正在迁移到DevOps,因为在这一领域有许多可用的工具,如果您自己编写代码,其实很难胜过竞争对手。Sass说:“企业使用开源软件是有道理的,因为您希望开发人员专注于您的核心业务。您所需要的很多东西已经有了;您想重新使用已经经过测试而且有社区进行维护的代码,这样您就不用自己去做那些繁重的编程工作。这就是为什么每个人都喜欢开源软件的原因——但不幸的是,开源软件有其自身的问题。”
开源软件许可责任
过去,企业往往最关心开源软件的许可问题。Sass指出,“开源软件是免费的,但它附带了许多条款。”开源软件许可对于商业组织来说可能是雷区。越来越多的项目使用MIT和Apache许可之类的宽松许可,这些许可对代码重新分配的要求非常少,而其他许可的要求却很苛刻。谷歌最近关于如何使用开源软件的指导内容包括有关AGPL等许可在内部被禁止的说明,之所以如此是因为有发布衍生产品代码的要求。
即使是声称是公共域或者“免费使用”的软件项目,您都需要仔细考虑,因为把软件放在公共域并不是一件小事。如果您是商业企业,您应避免在非商业应用中使用免费的东西,其中包括许多知识共享许可。
这并不意味着您必须避免使用开源软件,而是要知道使用开源项目而接受其许可的后果。开源软件项目相互联系的特性可能会使其变得更加复杂,例如,许多使用npm软件包管理器的用户发现,在对软件包名称进行争论后,开发人员并没有发布其他数千个项目依赖的软件包。
Sass说:“一个开源组件会依赖于许多其他开源组件。每当一个开发人员处理开源软件组件时,他们都会带来其背后所依赖的所有关系树,而通常您根本不了解这些。您应该查看自己有多少开源组件,但大多数企业并不知情。”
采用所谓的“copyleft”许可,例如GPL,通常需要您发布对代码所做的任何修改。Sass说:“一般企业将使用一些有GPL许可的开源组件。在300个组件中,可能一两个或者三个是GPL。这对他们来说简直就是新闻。”
除了知道您使用的是什么样的开源软件之外,您还需要跟踪开发人员可能为其提供代码的开源项目。对此,一种方法是使用GitHub Business。虽然大多数企业认为GitHub Business是一种云服务,避免了他们在自己服务器上运行GitHub Business的麻烦,但它也可以让您控制自己企业中有哪些身份的开发人员使用GitHub存储库并对其有贡献。
GitHub产品设计高级总监Connor Sears告诉CIO.com:“我们的客户想要的是,更多的直接联系开发人员和项目、社区,这就是GitHub所做的。这么多的开源软件代码对我们的客户是有价值的。他们从中受益,他们也想对其做出贡献。他们希望使用我们合作伙伴贡献的各种平臺工具。”
GitHub Business与您现有的身份管理工具相集成,无论是Azure Active Directory、Okta还是其他SAML和SCIM兼容的身份系统,例如OneLogin和Shibboleth。这意味着如果您企业的开发人员下载开源软件代码,并反过来为项目做出贡献,或者将其分配给一个内部项目,即使他们离职,不是从他们的个人GitHub登录,而是从官方公司账户登录,您也要继续对其控制。
开源软件安全
使用开源软件的另一个关键问题是在发现安全问题后一定要更新。Sass说:“当开发人员采用了有漏洞的开源组件,并将其置入到软件中时,那么您会很容易受到攻击,您的客户也容易受到攻击。”
然而,真正的问题并不在于有漏洞,因为总是存在漏洞,关键是没有打补丁。“您总会找到过时的库,总是会发现有的组件有漏洞,几乎总是会找到企业不打算使用的许可。”
“开源的好处是,一旦知道这些问题,问题就很容易解决。通常不需要花费大量的精力去更新组件,尽管有时会出现兼容性问题。通常来说,开源社区的人们已经在努力解决这些问题了。”
最近,SAS严肃地向企业发出呼吁,企业应限制其使用的开源项目的数量。在以SAS为主导的市场上,这看起来好像是在抗议数据科学和分析开源R编程语言的兴起。但是,在这种抗议中隐藏着很好的一点是:使用开源软件意味着知道您正在使用什么,这样您可以跟踪和维护它。
大多数企业并不知道开发人员使用多少开源软件,以及可能会暴露出什么样的漏洞。您无法对那些自己所依赖的、但是不熟悉的开源项目进行安全评估或者补丁管理。
Sonatype的2016年软件供应链研究发现,第三方组件占典型企业Java应用程序中的百分之八十至九十,而企业下载的十六个组件中就会有一个存在安全漏洞。老一些组件的安全漏洞是新版本的三倍之多,企业应用程序中一半以上组件的使用年限已经超过两年。在发现Heartbleed漏洞两年后,Cisco安全研究在2015年测试的一半以上的OpenSSL版本仍然很脆弱。
2014年,Veracode发现在其扫描的5,000个应用程序中,企业Web应用程序中使用的开源软件和第三方组件在每个应用程序中平均引入了24个已知漏洞。
开源软件监控和管理服务公司WhiteSource首席执行官兼联合创始人Rami Sass告诉CIO.com:“即使已经知道他们在使用开源软件的软件公司也需要通过工具来更好地进行管理。企业很少知道他们正在使用多少开源软件。现在,银行等企业、金融服务公司、媒体公司都有大型软件工程部门。他们通常会惊讶地发现,开源软件的应用非常广泛,而人工清查这些软件并对其进行跟踪的少之又少。平均来说,实际的组件数量是他们所认为的数量的三倍。有时候高达十倍。”
这并不是说,您不应该让开发人员使用开源软件,特别是如果您正在迁移到DevOps,因为在这一领域有许多可用的工具,如果您自己编写代码,其实很难胜过竞争对手。Sass说:“企业使用开源软件是有道理的,因为您希望开发人员专注于您的核心业务。您所需要的很多东西已经有了;您想重新使用已经经过测试而且有社区进行维护的代码,这样您就不用自己去做那些繁重的编程工作。这就是为什么每个人都喜欢开源软件的原因——但不幸的是,开源软件有其自身的问题。”
开源软件许可责任
过去,企业往往最关心开源软件的许可问题。Sass指出,“开源软件是免费的,但它附带了许多条款。”开源软件许可对于商业组织来说可能是雷区。越来越多的项目使用MIT和Apache许可之类的宽松许可,这些许可对代码重新分配的要求非常少,而其他许可的要求却很苛刻。谷歌最近关于如何使用开源软件的指导内容包括有关AGPL等许可在内部被禁止的说明,之所以如此是因为有发布衍生产品代码的要求。
即使是声称是公共域或者“免费使用”的软件项目,您都需要仔细考虑,因为把软件放在公共域并不是一件小事。如果您是商业企业,您应避免在非商业应用中使用免费的东西,其中包括许多知识共享许可。
这并不意味着您必须避免使用开源软件,而是要知道使用开源项目而接受其许可的后果。开源软件项目相互联系的特性可能会使其变得更加复杂,例如,许多使用npm软件包管理器的用户发现,在对软件包名称进行争论后,开发人员并没有发布其他数千个项目依赖的软件包。
Sass说:“一个开源组件会依赖于许多其他开源组件。每当一个开发人员处理开源软件组件时,他们都会带来其背后所依赖的所有关系树,而通常您根本不了解这些。您应该查看自己有多少开源组件,但大多数企业并不知情。”
采用所谓的“copyleft”许可,例如GPL,通常需要您发布对代码所做的任何修改。Sass说:“一般企业将使用一些有GPL许可的开源组件。在300个组件中,可能一两个或者三个是GPL。这对他们来说简直就是新闻。”
除了知道您使用的是什么样的开源软件之外,您还需要跟踪开发人员可能为其提供代码的开源项目。对此,一种方法是使用GitHub Business。虽然大多数企业认为GitHub Business是一种云服务,避免了他们在自己服务器上运行GitHub Business的麻烦,但它也可以让您控制自己企业中有哪些身份的开发人员使用GitHub存储库并对其有贡献。
GitHub产品设计高级总监Connor Sears告诉CIO.com:“我们的客户想要的是,更多的直接联系开发人员和项目、社区,这就是GitHub所做的。这么多的开源软件代码对我们的客户是有价值的。他们从中受益,他们也想对其做出贡献。他们希望使用我们合作伙伴贡献的各种平臺工具。”
GitHub Business与您现有的身份管理工具相集成,无论是Azure Active Directory、Okta还是其他SAML和SCIM兼容的身份系统,例如OneLogin和Shibboleth。这意味着如果您企业的开发人员下载开源软件代码,并反过来为项目做出贡献,或者将其分配给一个内部项目,即使他们离职,不是从他们的个人GitHub登录,而是从官方公司账户登录,您也要继续对其控制。
开源软件安全
使用开源软件的另一个关键问题是在发现安全问题后一定要更新。Sass说:“当开发人员采用了有漏洞的开源组件,并将其置入到软件中时,那么您会很容易受到攻击,您的客户也容易受到攻击。”
然而,真正的问题并不在于有漏洞,因为总是存在漏洞,关键是没有打补丁。“您总会找到过时的库,总是会发现有的组件有漏洞,几乎总是会找到企业不打算使用的许可。”
“开源的好处是,一旦知道这些问题,问题就很容易解决。通常不需要花费大量的精力去更新组件,尽管有时会出现兼容性问题。通常来说,开源社区的人们已经在努力解决这些问题了。”