32.2. 基于角色的访问控制
基于角色的访问控制 (RBAC)内置在自动化控制器中,并允许管理员委托对服务器清单、机构等的访问权限。管理员也可以集中管理各种凭据,允许用户在不向用户公开该机密的情况下使用所需的机密。您可以使用 RBAC 启用自动化控制器来提高安全性和简化管理。
RBAC 是向用户或团队授予角色的方法。RBAC 可以被认为是角色,它精确定义了谁或什么可以看到、更改或删除要为其设置特定功能的"对象"。
自动化控制器的 RBAC 设计角色、资源和用户的主要概念如下:
- 用户可以是一个角色的成员,授予他们对与该角色关联的任何资源或与"子代"角色关联的任何资源的访问权限。
- 角色是能力的集合。
- 用户通过为其分配的角色或通过从角色层次结构继承的角色获得对这些权限和自动化控制器资源的访问权限。
- 角色将一组能力与一组用户相关联。所有功能都源自角色内的成员资格。用户仅通过为其分配的角色或通过角色层次结构继承的角色获得权限。角色的所有成员都有授予该角色的所有权限。在一个机构中,角色相对稳定,而用户和能力则有很多,可能会快速变化。
- 用户可以有多个角色。
32.2.1. 角色层次结构和访问权限继承
假设您有一个名为"SomeCompany"的机构,并想给两个人"Josie"和"Carter",以管理与该机构关联的所有设置。为此,您必须使两个人都成为 组织的 admin_role
的成员。
系统中通常会有许多角色,其中一些您要包含其他角色的所有功能。例如,您可能希望系统管理员可以访问机构管理员可访问的所有内容,而机构管理员具有项目管理员可访问的所有内容。
这个概念被称为 "Role Hierarchy":
- 父角色获取与任何子角色相关的所有功能。
- 角色的成员可以自动获取他们所属角色以及任何子角色的所有权限。
角色层次结构通过允许角色具有"父角色"来表示。角色具有的任何权限都会被隐式授予任何父角色(或那些父角色的父级)。
角色可以有多个父角色,并且为所有父项隐式授予了能力。
RBAC 还允许您明确允许用户和用户团队针对特定主机组运行 playbook。用户和团队仅限于被授予了能力的 playbook 和主机组。使用自动化控制器,您可以根据需要创建多个用户和团队,手动创建用户和团队,或者从 LDAP 或 Active Directory 导入它们。
32.2.1.1. 使用 RBAC
下面介绍如何在您的环境中应用自动化控制器的 RBAC 系统。
32.2.1.1.1. 编辑用户
在编辑用户时,自动化控制器系统管理员可以将用户指定为 系统管理员 (也称超级用户)或 System Auditor :
- 系统管理员会隐式地继承环境中所有对象的所有权限(读取/写入/执行)。
- 系统审核员隐式继承环境中所有对象的只读权限。
32.2.1.1.2. 编辑机构
在编辑机构时,系统管理员可以指定以下角色:
- 一个或多个用户作为机构管理员
- 一个或多个用户作为机构审核员
- 一个或多个用户(或团队)作为机构成员
作为机构成员的用户和团队可以查看其机构管理员。
作为机构管理员的用户隐式继承了该机构内所有对象的所有权限。
作为机构审核员的用户隐式继承了该机构内所有对象的只读权限。
32.2.1.1.3. 编辑机构中的项目
在编辑机构中的项目时,系统管理员和机构管理员可指定:
- 一个或多个作为项目管理员的用户或团队
- 一个或多个作为项目成员的用户或团队
- 一个或多个可从 SCM 更新项目的用户或团队(来自属于该机构成员的用户和团队)。
作为项目成员的用户可以查看其项目管理员。
项目管理员隐式继承了从 SCM 更新项目的权限。
管理员也可以指定一个或多个可在作业模板中使用该项目的用户或团队(来自属于该项目成员的用户或团队)。
32.2.1.1.4. 在机构中创建清单和凭证
授予使用、读取或写入凭证的所有访问权限都通过角色处理,该角色使用自动化控制器的 RBAC 系统授予所有权、审核员或使用角色。
系统管理员和机构管理员可根据其管理功能在机构内创建清单和凭证。
无论是编辑清单还是凭证,系统管理员和机构管理员都可以指定一个或多个用户或团队(来自属于该机构成员的用户或团队)来授予该清单或凭证的用量权限。
系统管理员和机构管理员可以指定一个或多个用户或团队(来自属于该机构成员的用户或团队),以便具有(动态或手动)清单更新(动态或手动)。管理员也可以为清单执行临时命令。
32.2.1.1.5. 编辑作业模板
系统管理员、机构管理员和项目管理员在其管理功能下的项目中可以创建和修改该项目的新作业模板。
在编辑作业模板时,管理员(自动化控制器、机构和项目)可以在他们具有使用权限的机构中选择清单和凭证,或者他们可以将这些字段留空以便在运行时选择。
另外,他们可以指定具有该作业模板的执行权限的一个或多个用户或团队(来自属于该项目成员的用户或团队)。无论用户或团队针对清单或作业模板中指定的凭证授予了任何显式功能,执行能力都是有效的。
32.2.1.1.6. 用户视图
用户可以:
- 查看他们所属的任何机构或项目
- 创建只属于他们自己的凭证对象
- 查看并执行他们被授予执行权限的任何作业模板
如果赋予了执行功能的作业模板没有指定清单或凭证,则在运行时会提示用户在运行时选择他们拥有的机构中的清单和凭证,或被授予了使用能力。
作为作业模板管理员的用户可以对作业模板进行更改。但是,若要更改作业模板中使用的清单、项目、playbook、凭证或实例组,用户还必须具有当前使用或正在设置的项目和清单的"使用"角色。
32.2.1.2. 角色
授予使用、读取或写入凭证的所有访问权限都通过角色处理,并且为资源定义角色。
32.2.1.2.1. 内置角色
下表列出了 RBAC 系统角色,它包括了如何根据自动化控制器中的权限定义角色的定义描述:
系统角色 | 它可以执行什么操作 |
---|---|
系统管理员 (System Administrator) - 系统范围单例 | 管理系统的所有方面 |
系统审核员 (System Auditor) - 系统范围单例 | 查看系统的所有方面 |
临时角色 (Ad Hoc Role) - 清单 | 对清单运行临时命令 |
管理员角色 (Admin Role) - 机构、团队、清单、项目、作业模板 | 管理定义的机构、团队、清单、项目或作业模板的所有方面 |
审核员角色 (Auditor Role) - 所有 | 查看定义的机构、项目、清单或作业模板的所有方面 |
执行角色 (Execute Role) - 作业模板 | 运行分配的作业模板 |
成员角色 (Member Role) - 机构、团队 | 用户 是定义的机构或团队的成员。 |
读取角色 (Read Role) - 机构、团队、清单、项目、作业模板 | 查看定义的机构、团队、清单、项目或作业模板的所有方面 |
更新角色 (Update Role) - 项目 | 从配置的源控制管理系统更新项目 |
更新角色 (Update Role) - 清单 | 使用云源更新系统更新清单 |
所有者角色 (Owner Role) - 凭证 | 拥有并管理此凭证的所有方面 |
Use Role - Credential, Inventory, Project, IGs, CGs | 在作业模板中使用凭证、清单、项目、IG 或 CG |
单例角色是授予系统范围权限的特殊角色。自动化控制器目前提供两个内置单例角色,但目前不支持创建或自定义单例角色。
32.2.1.3. 常见团队角色 -“Personas”
自动化控制器支持人员通常能够确保自动化控制器可用,并以平衡可支持性和用户易于使用的方式进行管理。自动化控制器支持人员通常会向用户分配 机构所有者 或 管理员角色,以便他们能够创建新机构或添加其团队中所需的成员。这可最小化支持人员的数量,并专注于保持服务的正常运行时间,并协助用户使用自动化控制器的用户。
下表列出了自动化控制器机构管理的一些常见角色:
系统角色(用于机构) | 常见用户角色 | 描述 |
---|---|---|
所有者 | 团队领导 - 技术领导 | 此用户可控制其机构中其他用户的访问权限。他们可以添加、删除和授予用户对项目、清单和作业模板的特定访问权限。这种类型的用户也可以创建、删除或修改机构项目、模板、清单、团队和凭证的任何方面。 |
审核员 (Auditor) | 安全工程师 - 项目管理器 | 这个帐户可以在只读模式下查看机构的所有方面。对于检查和维护合规性的用户,这可能是一个不错的角色。对于管理或将自动化控制器的作业数据发送到其他数据收集器的服务帐户,这可能是一个很好的角色。 |
成员 - 团队 | 所有其他用户 | 默认情况下,作为机构成员的这些用户不会收到对机构任何方面的任何访问权限。要授予他们访问对应的机构所有者,必须将它们添加到其各自团队中,并为机构的项目、清单和作业模板的每个组件授予管理员、执行、使用、更新和临时权限。 |
成员 - 团队"所有者" | 超级用户 - 领导开发人员 | 机构所有者可以通过组接口(包括项目、清单和作业模板)的团队接口提供"admin"。这些用户能够修改和使用所给访问权限的相应组件。 |
成员 - 团队"执行" | 开发人员 - 工程师 | 这是最常见的角色,使机构成员能够执行作业模板和对特定组件的读取权限。此权限适用于模板。 |
成员 - 团队"使用" | 开发人员 - 工程师 | 此权限适用于机构的凭证、清单和项目。此权限可让用户使用其作业模板中的相应组件。 |
成员 - 团队"更新" | 开发人员 - 工程师 | 此权限适用于项目。允许用户在项目上运行 SCM 更新。 |