首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >备份mysql而不登录mysql用户

备份mysql而不登录mysql用户
EN

Stack Overflow用户
提问于 2016-12-23 15:57:23
回答 1查看 85关注 0票数 1

不使用mysql用户就可以在mysql中备份数据库吗?

问题:我想使用ansible制作备份系统,但是在数据库备份时我遇到了问题,因为需要声明用户和密码mysql用户才能执行这些备份。因此,出于安全性和效率的考虑,我想在没有声明用户和密码的情况下进行备份。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-23 23:32:06

第一件事

  • 从不在脚本中包含凭据!
  • 从不在源代码或任何类型的源代码存储库中包含凭据(包括专门为凭据而制作的Git )!

You ”只能在两种条件之一下合理地“”这样做。

  • 您的数据库没有用户名/密码(非常不可能,也从未通知过)。
  • 您的数据库处于脱机状态(您可以使用某种类型的副本复制它)

但是,请不要这样做!

为什么不行?

  • 不安全
  • 不安全
  • 这会给你的数据库和你的生意带来不必要的风险
  • 您的数据库几乎总是包含一些敏感信息,即使您选择不存储加密的信息,也不应该不保护它。
  • 您不应该为了进行备份而将数据库脱机。停机是死的时间,每一次停机都会花费金钱和潜在的客户。

如何在生产机器上存储/使用数据库

  • 如果可能的话,应该加密。
  • 它应该始终受到强用户名和密码的保护,这样才能阻止对数据库的最常见攻击。
  • 加密可以阻止几乎所有的攻击,除了最复杂的攻击。
  • 当您的服务处于活动状态时,您甚至可以并且应该考虑自动更改(定期)备份用户名和密码。

现在你很可能是thinking...how,你希望我这么做吗?你说过我不能把凭据写在剧本里。

那我该怎么办?

相反,您需要使用安全的凭据分发方法,它可能是简单的,也可能是复杂的。但是一般来说,对于凭证分发服务来说,有几条经验法则。

  • 凭据不应存储在请求它们的客户端计算机的磁盘上,客户端只应在需要时保留凭据。缓存(在内存中)可能可以在临时时间内接受,否则凭据请求将非常频繁。
  • 如果可能的话,凭据应该在内存中加密,而不是以纯文本的形式存储,每个客户端都可以使用随机加密密钥。这里要记住的是尽量减少攻击的表面积,因为消除是不可能的。
  • 服务/分发方法只能由授权机器访问。
  • 服务(和客户端)应该受到防火墙的适当保护,包括免受任何可能的DDOS或已知网络攻击的保护。
  • 服务应该在主机或可用性区域发生故障的情况下运行,应该可以根据需要检测这些问题和故障转移。
  • 使用已签名的服务器证书并确保客户端始终验证它们,您甚至可以选择使用自签名的路由,因为这只应该是内部服务。
  • 您可以并且应该(如果可能的话)也使用签名的客户端证书来帮助限制未经授权的机器对服务的未经授权的访问,并提高安全性(这是一个很好的,有些产品不提供这个)。
  • 该服务只应向已知的授权机器提供特定的凭据。
  • 服务只应通过加密和安全的通道(如HTTPS (甚至在内部网络上)提供这些凭据)。

有多种现有的方法来向应用程序分发凭据。我强烈建议使用已经过测试和验证的东西,而不是尽可能开发自己的东西。

注意:您还应该以类似的方式分发生产私钥/证书。不要将它们包含在安装包、源回购中,或者在机器实际停机时将它们放在机器上。启动脚本可以下载所需的证书,当服务退出时,您可以使用关机脚本清除私钥/证书文件。我不再说在应用程序启动后清除这些文件,因为一些应用程序在服务运行时重新读取或锁定这些文件。

Note2:这些都不是为了完全阻止攻击或妥协,这些建议只是为了限制攻击的表面积。因为,你留下的东西越多,攻击者就越容易找到它们,而且也更容易使用它们。

以下是安全凭证分发方法的几个示例

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41304422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档