微服务是一个很小甚至微独立的进程,通过Thrift,HTTPS, R EST API等机制进行通信并返回消息。基本上,微服务体系结构是许多小流程的组合,这些小流程组合并形成了一个应用程序。在微服务体系结构中,每个进程都由多个容器表示。每个单独的服务都是为特定函数而设计的,所有服务共同构成一个应用程序。
现在让我们讨论微服务体系结构中的实际安全点,如今,许多应用程序都使用外部服务来构建其应用程序,并且对高质量软件开发和体系结构设计的需求也越来越大。系统管理员,数据库管理员,云解决方案提供商和API网关是这些应用程序使用的基本服务。微服务的安全性主要集中在设计由应用程序实现的所有服务之间的安全通信。
如何保护微服务:
(1)密码复杂度:
密码复杂性是每个安全功能都非常重要的部分。开发人员实施的机制必须能够强制用户在创建帐户期间创建强密码。必须检查所有密码字符,以避免仅包含字符串或数字的弱密码组合。
(2)认证机制:
有时,身份验证在实现安全功能期间不被视为高优先级。在几次失败的登录尝试后锁定用户帐户非常重要。登录时必须实施速率限制以避免暴力攻击。如果应用程序使用任何外部服务,则所有API都必须使用身份验证令牌来实现,以避免用户干扰API端点通信。在微服务中使用多因素身份验证可避免在登录和重置密码时枚举用户名。
(3)两个服务之间的身份验证:
中间人攻击可能发生在服务与服务之间的通信过程中。在始终使用HTTPS而不是HTTP的情况下,HTTPS始终确保两个服务之间的数据加密,并提供额外的保护,以防止外部实体渗透到流量上客户端服务器之间。
在多机情况下,很难在服务器上管理SSL证书,并且在每台设备上颁发证书都非常复杂。存在通过HTTPS提供HMAC的安全解决方案。 HMAC包含基于哈希的消息传递代码以对请求进行签名。
(4)保护休息数据:
保护当前未使用的数据非常重要。如果环境是安全的,网络是安全的,那么我们认为攻击者无法到达存储的数据,但事实并非如此,仅由于对数据安全性的保护机制较弱,在受保护系统中存在许多数据泄露的例子。存储数据的所有端点都必须是非公开的。同样,在开发过程中要照顾好API密钥密钥。所有API密钥必须是秘密的,私有API的泄漏也会导致公开敏感数据。不要在源代码中公开任何敏感数据,端点。
(5)渗透测试:
在软件开发生命周期本身中考虑安全功能始终是一个好习惯,但是总的来说,这并不总是正确的,考虑到此问题,在最终发行版之后对应用程序进行渗透测试始终很重要。 OWASP始终在应用程序的渗透测试中尝试这些攻击。下面提到了一些重要的攻击媒介。
- SQL注入。
- 跨站点脚本(XSS)。
- 敏感信息披露。
- 身份验证和授权已损坏。
- 访问控制损坏。