GoCD中的策略

    您的查询搜索没有结果。

    策略

    策略是一组针对GoCD实体(如环境、配置存储库等)的权限。策略定义了某个角色中的用户对GoCD实体的访问权限。GoCD支持限制性访问模型,即在未授予访问权限之前,任何人均无法访问该实体(管理员除外)。

    权限由3个值组成:

    1. 类型: GoCD实体的类型。支持的值为environment, config_repo, cluster_profile, elastic_agent_profile. 通配符(*) 也是允许的,表示所有支持的值。
    2. 操作: 受控的操作。支持的值为viewadminister
    3. 资源: 资源可以是实体的名称或包含通配符(*) 的模式,匹配一个或多个实体,并可选择在父实体下使用:分隔符命名空间。

    目前,GoCD有两种类型的权限:

    • 允许:允许权限授予对指定实体的特定操作的访问。
    • 拒绝:拒绝权限限制对指定实体的特定操作的访问。

    注意:如果为同一实体指定了两种权限,则deny权限优先。

    特权-动作矩阵

    每个GoCD实体都有一组动作,用于授予/限制对更细粒度的控制。以下矩阵描述了相同的内容。

    环境

    1. API

      索引 获取 创建 更新 修补 删除
      查看
      管理
    2. UI

      列表 创建 更新 删除
      查看
      管理

    配置存储库

    1. API

      索引 获取 创建 更新 删除
      查看
      管理
    2. UI

      列表 创建 刷新 更新 删除
      查看
      管理

    弹性代理配置

    GoCD支持通过弹性代理动态预配代理。要在GoCD中配置弹性代理,用户需要配置集群配置文件和弹性代理配置文件。

    在大多数情况下,单个GoCD实例被多个团队使用。每个团队可以有其自己的构建环境,例如开发、暂存、生产等。每个构建环境映射到一个集群配置文件,而代理的类型和配置则指定为弹性代理配置文件。

    由于集群配置文件和弹性代理配置文件相互依赖,可以指定特定的权限策略以按团队提供精细的访问权限。

    基本权限

    集群配置文件
    1. API

      索引 获取 创建 更新 删除
      查看
      管理
    2. UI

      列表 创建 更新 删除 集群状态报告
      查看
      管理
    弹性代理配置文件
    1. API

      索引 获取 创建 更新 删除
      查看
      管理
    2. UI

      列表 创建 更新 删除 代理状态报告 弹性配置文件使用情况
      查看
      管理

    隐式权限

    1. 集群配置文件上的任何权限都会隐式应用于同一集群的所有弹性代理配置文件。

      示例:

      <cruise>
          <roles>
              <role name="frontend_team">
                  <users>
                    <user>Bob</user>
                  </users>
                  <policy>
                    <allow action="administer" type="cluster_profile">frontend_team_uat_cluster</allow>
                  </policy>
              </role>
          </roles>
          <elastic>
               <agentProfiles>
                    <agentProfile id="node6-agent" clusterProfileId="frontend_team_uat_cluster"/>
                    <agentProfile id="node8-agent" clusterProfileId="frontend_team_uat_cluster"/>
               </agentProfiles>
               <clusterProfiles>
                     <clusterProfile id="frontend_team_uat_cluster" pluginId="cd.go.contrib.docker"/>
                </clusterProfiles>
          </elastic>
      </cruise>
      

      在给定的角色中,用户Bob已获得frontend_team_uat_cluster集群的管理访问权限。通过隐式权限,用户Bob被允许管理frontend_team_uat_cluster集群配置文件和node6-agent, node8-agent弹性代理配置文件。

    2. 弹性代理配置文件上的任何权限提供对关联的集群配置文件的视图权限。

      示例:

      <cruise>
          <roles>
              <role name="frontend_team">
                  <users>
                    <user>Bob</user>
                  </users>
                  <policy>
                    <allow action="administer" type="elastic_agent_profile">node6-agent</allow>
                  </policy>
              </role>
          </roles>
          <elastic>
               <agentProfiles>
                    <agentProfile id="node6-agent" clusterProfileId="frontend_team_uat_cluster"/>
               </agentProfiles>
               <clusterProfiles>
                     <clusterProfile id="frontend_team_uat_cluster" pluginId="cd.go.contrib.docker"/>
                </clusterProfiles>
          </elastic>
      </cruise>
      

      在给定的角色中,用户Bob已获得node6-agent弹性代理配置文件的管理访问权限。通过隐式权限,用户Bob被允许管理node6-agent弹性代理配置文件并能够查看frontend_team_uat_cluster集群配置文件。

    命名空间权限

    在分布式团队设置中,除了授予创建GoCD实体的权限外,我们通常希望限制用户执行某些操作。通过命名空间资源权限,我们可以将用户的权限限制在特定实体内。

    命名空间资源权限可以使用冒号 (:) 分隔符指定。示例:parent_entity:child_entity.这将强制执行给定用户仅在child_entity内具有操作权限。parent_entity.

    在创建弹性代理配置时,我们经常要限制用户只能访问其团队的集群配置文件和弹性配置文件。以下是根据团队使用命名空间资源演示权限限制的示例。

    <roles>
        <role name="frontend_team">
            <users>
              <user>Bob</user>
            </users>
            <policy>
              <allow action="administer" type="elastic_agent_profiles">frontend_*:*</allow>
            </policy>
        </role>
        <role name="backend_team">
            <users>
              <user>John</user>
            </users>
            <policy>
              <allow action="administer" type="elastic_agent_profiles">backend_*:*</allow>
            </policy>
        </role>
        <role name="devops_team">
             <users>
               <user>Admin</user>
             </users>
             <policy>
               <allow action="administer" type="elastic_agent_profiles">*:*</allow>
             </policy>
         </role>
    </roles>
    

    在给定的示例中:

    1. 作为角色frontend_team的一部分,用户Bob已获得对所有引用frontend_*集群配置文件的弹性代理配置文件的管理访问权限。
    2. 作为角色backend_team的一部分,用户John已获得对所有引用backend_*集群配置文件的弹性代理配置文件的管理访问权限。
    3. 作为角色devops_team的一部分,用户Admin已获得对所有弹性代理配置文件的管理访问权限。这也可以通过指定*作为资源来实现。

    配置策略

    1. 登录到您的 GoCD 服务器。

    2. 前往管理菜单 →角色配置.

      “Navigate to role configuration”

    3. 点击Add按钮。

      “Add Role Button”

    4. 输入角色配置的唯一名称。

    5. 点击Add Permission按钮。

      “Add Permission Button”

    6. 将权限选择为Allow,类型选择为Environment,操作选择为View。输入resource值为*。这将授予对此角色的用户查看所有环境的权限。

      “Define Permission”

    7. 点击Save按钮。

    创建角色后,请继续添加用户到该角色。这些用户的GoCD实体访问将根据所配置的权限进行管理。