您的问题似乎并未对要使用的平台/操作系统做出任何假设。这就是为什么要添加一个有关大型机环境中通常如何完成/解决问题的答案的原因,在大型机环境中,“工程师”(如您的问题标题所示)实际上是一群人,其中有数十人(可能是数百人)参与。我的答案是基于使用我最熟悉的SCM产品(不确定是否需要公开产品名称)。
1.建筑
以下是我将如何回答您的问题的重点内容:
- 所有代码(以及相关的工件,如可执行文件等)都存储在文件中,这些文件统称为我们的库结构。
- 对于每个(可能是远程)目标系统上的每个环境,都有一个服务器(在大型机中为“启动任务”),它负责对库结构中的所有内容进行ALL更新(重复:ALL)。有一些例外情况(例如安全人员或空间管理团队),但除此之外,没有人(重复:没人)有权将更新应用于该库结构内的任何文件。换句话说:服务器获得整个库结构的独占更新权限。注意:如果您进入以限制他们的访问权限,OPS人员将变得更加愚蠢(起初,他们将抵抗...),因此请确保您被高层管理人员(CxO)覆盖以强加这些访问规则...
- 实际的软件更改仅由一个组件(半夜中的一个小代码修复……)组成,或者也可能是成百上千个源,可执行文件或任何其他构件(在发行周末期间)。为了使它们易于管理,应将应同时移动(或多或少)的事物捆绑在一起,称为软件变更包。
通过上述操作,只有通过定义明确的工作流程,服务器才能对库结构进行任何类型的更新,我们将其称为软件变更包(如果需要,请选择SDLC)的生命周期。要实际执行该工作流程中的各个步骤,需要执行以下操作:
- 只有服务器将执行必需的(和预配置的)步骤。
- 在收集(执行)所需的批准后,服务器将仅执行特定步骤(=更新库结构中的某处)。
- 批准只能由具有允许他们(=权限)发布此类批准的角色的用户提供。
2.角色和权限
服务器将确保只有在用户权限适当的情况下,尝试使某事发生的用户(如“批准某事”)才能这样做。这部分很容易。但是,您不想使用SCM系统来管理所有相关用户的所有那些权限,这就是您的安全系统(不是SCM系统!)所属的权限,以便您可以调整工作流程(在SCM系统中)在适当的时候去检查那些权限。下面的步骤提供了更多详细信息。
步骤1:配置权限(在安全系统中)
在安全系统中定义安全实体,并为这些实体定义明确的名称。一些样本(添加尽可能多的类似样本以满足您自己的需求):
PrmUnit
,用于获取权限申请一个促进要说单位 -testing。
PrmQA
,用于获取权限申请一个推动说QA -testing(假设这是测试的最高级别)。
PrdEnduser
,由参与某些级别测试的最终用户使用,表示对某种测试产生的结果感到满意。因此,这些最终用户同意库结构中不断发展的变化。
PrdRelmgnt
,由发布经理用于授权生产中的激活(=库结构中的最后/最高级别)。
在安全系统中定义用户组。一些样本(添加尽可能多的类似样本以满足您自己的需求):
GrpDevs
,(例如)与您的开发人员相对应(可能多于1)。
GrpEnduser
,(例如)与您的最终用户(至少1个,最好是更多相似的用户)相对应。
GrpRelMgnt
,(例如)与您的发布经理(至少1个,最好是几个用户)相对应。
授予权限,也使用您的安全系统,以允许访问选定“ 用户组 ”的选定“ 安全实体 ”。继续上面的示例,这似乎是合适的(适合您自己的需求):
- 组
GrpDevs
可以访问(仅!)安全实体PrmUnit
。
- 组
GrpEnduser
可以访问(仅!)安全实体PrdEnduser
。
- 组
GrpRelMgnt
可以访问(均为!)安全实体 PrmQA
和PrdRelmgnt
。
步骤2:配置工作流程(在SCM系统中)
在安全系统中配置了权限之后(如步骤1中所述),在SCM系统中要做的就是配置生命周期中的各个步骤与安全系统中的相关安全实体的匹配方式。也就是说,只有那些对所需安全实体具有适当访问权限的用户才被允许请求服务器执行工作流中的相应步骤。
以下是一些示例,说明如何配置SCM系统以使某些事情发生:
- 如果用户有权访问
PrmUnit
,则这种用户被允许请求促进到单位 -testing。显然,组GrpDevs
中的用户是为此授权的用户(请注意:例如,不是组中的用户GrpRelMgnt
)。
- 如果用户有权访问
PrmQA
,则这种用户被允许请求促进至QA -testing。显然,组GrpRelMgnt
中的用户是为此授权的用户(请注意:不是,例如组GrpDevs
或组中的用户GrpEnduser
)。
- 如果用户可以访问
PrdEnduser
,则允许该用户授权更改在库结构中向前移动(这通常是组中用户GrpRelMgnt
甚至可以查看更改的先决条件)。显然,组GrpEnduser
中的用户是为此授权的(唯一)用户。
- 如果用户有权访问
PrdRelmgnt
,则允许该用户授权生产中的激活(=库结构中的最后/最高级别)。
3.期待意外,并做好准备
上面只是一个蓝图,希望可以最终帮助理解服务器是如何完成职责分离的……如果您有CxO的权限,可以强加一些并非所有人都会喜欢的访问规则。
为了完成上述说明,服务器创建了系统中所有活动的审核跟踪(日志记录)。因此,在任何时间点,始终可以回答诸如
什么时候以及为什么发生什么事,哪个授权用户实际上批准了它?
但是,最困难的部分可能是要有足够的可用报告工具(并知道如何使用它们)。至少(轻松)满足IT审核员的要求(他们的问题可能非常具有挑战性)。还要指向SCM系统中的相关日志记录,以回答(部分)生产下降的危机情况下的各种“发生了什么”问题。
PS:如果我的回答是“是”或“否”,则由每个人自己决定。