授权
在没有启用安全性的前提下,当然也没有授权。一旦配置了安全性,默认情况下任何用户都可以执行任何操作。然而,GoCD可以将某些操作限制为特定用户或角色,并管理这些角色的成员。
管理员
GoCD允许您限制可以执行某些功能的用户。管理员是一个特殊角色,允许其成员在GoCD中执行任何操作。指定管理员是可选的——不指定时,所有用户都会自动成为管理员。
如果指定了管理员,则只有他们可以执行以下操作:
- 访问“管理”选项卡
- 添加/编辑管道模板
- 启用代理
- 添加/删除代理资源
可以从“管理”菜单下的“用户管理”部分将用户设置为管理员。
若要通过“Config xml”给予用户和/或角色管理员权限,请参阅下面章节中的示例,其中“go_admin”角色的成员(jhumble和qiao)以及用户chris可以管理GoCD。
基于角色的访问控制
您可以定义可以在任何需要授权的地方使用的角色。角色只是一组用户。管理员可以从“管理”部分的“用户摘要”选项卡中将用户添加到新角色或现有角色中。在这里,您可以选择任意数量的用户并给他们分配新角色或现有角色。在此示例中,将用户“aantony”添加到了角色“analyst”中。
对于高级用户,这是如何通过“Config XML”配置角色的方法:
<cruise>
<server>
<license... />
<security>
<passwordFile path="/etc/go-server/passwords.properties" />
<roles>
<role name="qa">
<users>
<user>dyang</user>
<user>pavan</user>
</users>
</role>
<role name="go_admin">
<users>
<user>jhumble</user>
<user>qiao</user>
</users>
</role>
</roles>
<admins>
<role>go_admin</role>
<user>chris</user>
</admins>
</security>
</server>
</cruise>
在此示例中,“qa”角色有两个用户:dyang和pavan。“go_admin”角色也有两个用户:jhumble和qiao。
启动GoCD19.11.0
,可以配置角色以允许被赋予该角色的用户如何访问GoCD实体。GoCD系统管理员现在可以定义一个角色,其中包含一组权限,用于管理属于该角色的用户的GoCD实体访问。policy
能够包含一组权限来管理属于该角色的用户的GoCD实体访问。
以下角色定义将授予view
对GoCD实体类型的environment
匹配的通配符模式的操作权限:
...
<roles>
<role name="view-permissions">
<policy>
<allow type="environment" action="view">env*</allow>
</policy>
</role>
</roles>
...
这意味着任何拥有角色view-permissions
的用户都将获得view
对环境的访问权限,其名称以env
开头。您可以阅读更多关于策略的内容在这里.
为管道组指定权限
GoCD允许您将管道分组在一起。如果您定义了管道组,则可以指定谁能查看或操作这些组。为此,您需要为管道组配置权限。即使系统管理员未明确授予权限,他们仍然可以完全访问管道组。
注意:如果未为管道组定义授权,则仅GoCD系统管理员可以查看和操作它。
The “查看”权限允许用户查看管道。它不包括触发管道、批准阶段或重新运行阶段的权限。在下面的例子中,用户“akrishna”和“aantony”可以查看此组中的管道,但他们无法对该组执行任何操作。
The “操作”权限允许用户触发管道及其阶段。在下面的例子中,角色“developer”被授予了操作权限,能够触发此组内的管道及其阶段。
The “管理员”权限使用户成为管道组管理员允许他们查看、操作和管理管道组。在下面的例子中,角色“admins”被授予了此权限。
请注意,可以仅给用户或角色操作权限。在下面的例子中,用户“bot”仅有操作权限。这意味着他们无法查看管道,只能对其进行操作。这可用于让脚本通过API操作管道,而不允许该用户访问GoCD的其他功能。
要编辑管道组的权限,请导航到“管理”部分的“管道”选项卡:
然后,点击您要管理权限的管道组的“编辑”链接:
对于高级用户,以下是如何通过“Config XML”配置权限的方法:
<pipelines group="Shine">
<authorization>
<view>
<user>aantony</user>
<user>krishna</user>
<role>developer</role>
</view>
<operate>
<user>bot</user>
<role>developer</role>
</operate>
<admins>
<role>admins</role>
</admins>
</authorization>
...
</pipelines>
为审批添加授权
在GoCD中,可以指定阶段间的手动审批。还可以指定哪个用户可以触发手动审批。
此授权可以从该管道所属的管道组继承。但是,定义特定权限会覆盖这一点。在下面的例子中,只有角色“dev”的成员和用户“operate”可以触发审批。
对于高级用户,这是如何通过“Config XML”为阶段配置审批授权的方法:
<stage name="stage">
<approval type="manual">
<authorization>
<role>dev</role>
<user>operate</user>
</authorization>
</approval>
<jobs>
<job name="deploy">
<resources>
<resource>uat</resource>
</resources>
<tasks>
<ant target="deploy" />
</tasks>
</job>
</jobs>
</stage>
为模板指定权限
GoCD管理员可以让任何用户成为特定模板的模板管理员。作为模板管理员,用户现在可以查看和编辑他有权限的模板。
若要编辑模板的权限,请导航至“Admin”部分中的“Templates”选项卡:
然后,单击您想要管理权限的模板对应的“Permissions”链接:
对于高级用户,以下是如何通过“Config XML”配置权限的方法:
<templates>
<pipeline name="app-1-template">
<authorization>
<view>
<role>dev</role>
</view>
<admins>
<user>tez</user>
</admins>
</authorization>
...
</pipeline>
</templates>