Coldfusion 有没有一种方法可以在开发环境中从prod数据库中提取查询细节?

Coldfusion 有没有一种方法可以在开发环境中从prod数据库中提取查询细节?,coldfusion,cfquery,Coldfusion,Cfquery,我想要一份从prod到dev的订单详细信息和相关表的副本,我想知道我们是否可以使用ColdFusion cfquery或queryExecute从dev环境查询prod server的详细信息?,这一切都取决于您对生产的访问权限。安全性要求prod CF可以访问prod DB,但在prod网络之外没有对prod DB的外部访问 您需要使用数据库工具导出生产表数据,然后在dev数据库中恢复该数据。然后,这会引发与安全相关的多个安全问题。您需要清理这些数据,以便开发人员无法访问实际的用户数据 所以,

我想要一份从prod到dev的订单详细信息和相关表的副本,我想知道我们是否可以使用ColdFusion cfquery或queryExecute从dev环境查询prod server的详细信息?

,这一切都取决于您对生产的访问权限。安全性要求prod CF可以访问prod DB,但在prod网络之外没有对prod DB的外部访问

您需要使用数据库工具导出生产表数据,然后在dev数据库中恢复该数据。然后,这会引发与安全相关的多个安全问题。您需要清理这些数据,以便开发人员无法访问实际的用户数据


所以,你可以(应该)通过CF来实现这一点,不可以。也许可以通过DB工具来实现。

你可以。我们是在我以前工作的地方做的,但可能会有问题。这样做

  • 安排CF开发环境以获得必要的数据库权限。事实上,可能已经有了
  • 在CF开发环境中设置DSN
  • 阿里安·莫雷诺提到了安全问题。除此之外,您还必须担心代码的复杂性和数据的保护

    代码复杂性基于这样一种假设,即您的CF dev环境对生产数据库和开发数据库都有DSN。这意味着这两个DSN将具有不同的名称,这在将代码升级到生产环境时变得非常重要。开发人员要么在最后一刻修改代码,要么加入一些逻辑,使dsn成为基于环境的变量。我们两个都做了


    当CF具有读/写权限而不是只读权限时,数据保护是一个问题。您需要确保生产数据不会无意中受到开发活动的影响。

    这是一个完美的例子,说明可以做,但可能不应该做

    有多种方法可以实现您的要求,但所有方法都涉及到一些额外的配置或与其他团队合作

    根据你所从事的业务类型,这可能会产生法律或财务方面的影响

    无论如何,在我看来,这不应该是允许开发人员做的事情。允许开发环境访问生产环境会带来很多问题。其中最重要的一点是,内部威胁可能会破坏您的数据。或者,更可能的情况是,直接将代码部署到生产环境中(或者意外地部署),这在下一次开发人员部署时就会丢失

    我认为您的实际需要(也是一个相当普遍的需要)是为开发目的提供类似于生产的数据。

    注意:我主要使用Microsoft SQL Server,因此如果您使用不同的DBMS,我的建议可能不适用

    在我看来,实现这一点的方法完全是在数据库方面。让数据库彼此协作,而不是让开发环境访问生产数据库

    选项1:这正是SSIS(SQL Server集成服务)的主要用途。根据您的DBMS,这可能是最简单的方法

    选项2:在Prod和Dev之间配置共享服务器访问。除非别无选择,否则我不建议使用此选项。有很多安全隐患

    备选方案3:我建议:

    • 确保在开发过程中对数据库所做的任何更改都编写了脚本

    • 备份生产数据库

    • 在开发服务器上恢复生产备份


    • 运行将剥离、匿名化或消除PII的脚本我工作的地方大多是开发人员无法在没有另一个VPN连接+防火墙例外的情况下将流量传送到prod DB的地方,更不用说一旦你有了一条路由,就没有prod DB凭据了。20年前,我记得我在廉价的主机包上工作过,其中多个站点使用唯一的前缀作为对象名共享同一个DB(!)。我们谁也不知道你在这个频谱上的设置。通过问这个问题(特别是在这里而不是在你的组织中),听起来你还没有责任感或能力去冒险连接生产。我认为这取决于你的公司如何运作。我确实明白为什么一些公司(尤其是小公司)会在开发人员的环境中为Prod和Dev提供dsn,或者允许开发人员从同一界面访问这两个环境。但我仍然认为这是自找麻烦。防止意外问题所需的安全性可能比一开始就操作完全独立的环境更麻烦。当开发人员第一次在
      cfquery
      中运行“DROP TABLE users”时,在意识到他们使用的是生产DSN而不是开发人员之前,这一点就非常清楚了:-/