3.5. 映射
要控制允许哪些用户进入 Ansible Automation Platform 服务器,并根据其属性(如用户名和电子邮件地址)或团队,或者他们所属的组,您可以配置验证器映射。
通过验证器映射,您可以添加在授予用户获得或拒绝访问资源类型前必须满足的条件。验证器映射与验证器关联,并给出了顺序。用户登录时,会按顺序处理映射。它们可以像防火墙规则或邮件过滤器一样被认为。
3.5.1. 了解验证器映射
- 身份验证
- 验证用户的身份,通常是通过用户名和密码或信任系统。
- 授权
- 确定经过身份验证的用户在通过身份验证后可以执行的操作。
在 Ansible Automation Platform 中,验证器管理身份验证,验证用户并返回详情,如用户名、名字、电子邮件和组成员资格(如 LDAP 组)。授权来自验证器的关联映射。
在身份验证过程中,在用户通过身份验证后,授权系统以内存中的默认权限集开始。然后按顺序处理验证器映射,并根据它们的触发器条件调整权限。处理所有验证器的映射后,用户权限的内存中表示会与其现有的权限协调。
例如,以下是默认权限的一个简化内存表示,如下所示:
Access allowed = True Superuser permission = Undefined Admin of teams = None
此外,您可能具有需要处理的映射按照以下顺序处理:
- 允许将 规则集设置为 never
- 基于组的允许规则
- 基于用户属性的 超级用户 规则
- 基于 用户组的团队管理规则
第一个 Allow map 设置为 never,拒绝访问系统,内存表示形式如下:
Access allowed = False
Superuser permission = Undefined
Admin of teams = None
但是,如果用户与第二个 Allow map (基于组的 allow)匹配,则权限会更改为以下内容:
Access allowed = True
Superuser permission = Undefined
Admin of teams = None
之后,用户被授予 Ansible Automation Platform 的访问权限,因为它们具有所需的组。
接下来,Super user map 会检查用户属性。如果未找到匹配项,则默认不会撤销现有权限。因此,权限与上一个映射的结果相同:
Access allowed = True
Superuser permission = Skipped
Admin of teams = None
要撤销超级用户访问权限,您可以选择 Superuser 映射上的 Revoke 选项。这样,当用户不满足属性标准时,权限会更新为 False,如下所示:
Access allowed = True
Superuser permission = False
Admin of teams = None
最后的 团队映射 会检查来自团队"我的团队"的 admin 访问验证器的用户组。如果用户有所需的组,则权限会更新至以下内容:
Access allowed = True
Superuser permission = False
Admin of teams = “My Team”
如果用户缺少所需的组,则权限保持不变,除非映射上选择了 Revoke 选项,在这种情况下,权限会更新为以下内容:
Access allowed = True
Superuser permission = False
Admin of teams = Revoke admin of “My Team”
在按照定义的顺序处理所有映射后,最终权限协调后,根据映射规则更新用户的访问权限。
总之,验证器会验证用户,并将系统授权委派给验证器映射。执行验证器映射,以便创建用户权限的内存中表示,该符号在所有映射执行后与实际权限协调。
默认情况下,验证器映射返回 ALLOW 或 SKIPPED。
- ALLOW
- 这意味着检测到匹配项,平台应授予用户对相应角色或权限(如超级用户或团队成员)的访问权限。
- 跳过
- 这意味着用户与映射中的触发器不匹配,平台会跳过处理此映射,并继续检查剩余的映射。如果要在不需要更改验证器映射的情况下授予系统中额外权限,这非常有用。
但是,当选择了 Revoke 选项时,SKIPPED 将变为 DENY,不符合所需触发器条件的用户将被拒绝访问对应的角色或权限。这样可确保只有具有匹配触发器条件的用户才会被授予访问权限。
3.5.2. 验证器映射类型
Ansible Automation Platform 支持以下规则类型:
- Allow
- 确定是否允许用户登录系统。
- 机构(Organization)
- 确定用户是否应放入机构中。
- Team
- 确定该用户应该是团队成员。
- 角色
- 确定用户是否为角色的成员(例如,系统审核员)。
- 是超级用户
- 确定该用户是否为系统中的超级用户。
这些身份验证映射类型可用于任何类型的验证器。
3.5.3. 验证器映射触发器
每个映射都有一个触发器,用于定义映射应评估为 true 的时间。触发器类型包括:
- Always
- 该触发器应始终触发。
- Never
- 触发器不应触发。
- 组
根据在源系统中有多个组的用户,映射为 true 或 false。有关使用 Group 触发器的信息,请参阅 Authenticator 映射示例。
在定义组触发器时,身份验证映射会扩展使其包含以下选择:
operations : 此字段包含条件设置,这些设置根据指定的 组 标准触发规则的处理。选择包括 和 或。例如,如果选择,并且 登录的用户必须是 Groups 字段中指定的所有组的成员,才能使此触发器为 true。或者,如果您选择 或 登录,或者用户登录必须是任何指定组的成员,才能触发触发器。
注意如果您只对一个组进行密钥,如果您选择 "and" 或" 或",则这无关紧要。
groups : 这是来自用户必须是成员的身份验证系统的一个或多个组的列表。第一次创建 Groups 条目时,您必须手动输入值。输入后,该选择将从 Groups 列表中获得。
请参阅 Operation 字段,以确定触发器的行为(如果触发器中指定了多个组)。
注意组标识符区分大小写,必须与验证器后端匹配。例如,
cn=johnsmith,dc=example,dc=com
而不是CN=johnsmith,DC=example,DC=com
。
- 属性
根据来自源系统的用户属性,映射为 true 或 false。有关使用 属性 触发器的信息,请参阅 Authenticator 映射示例。
在定义属性触发器时,身份验证映射会扩展使其包含以下选择:
operations : 此字段包含条件设置,这些设置根据指定的 Attribute 标准触发规则的处理。在版本 2.5 中,此字段指示源系统返回属性列表而不是单个值时会发生什么。例如,如果源系统为用户返回多个电子邮件,并且 Operation 设置为 和,则所有给定电子邮件都必须与触发器 的比较 匹配为 True。如果 Operation 设置为 或,任何返回的电子邮件都将触发器设置为 True,如果它们与触发器中的 比较 匹配。
注意如果要使用多个属性映射来试验,您可以通过 API 完成此操作,但如果通过 UI 保存验证器,则 UI 表单将删除多属性映射。在向映射中添加多个属性时,Operation 也应用到属性。
-
attribute : 来自源系统的属性的名称,此触发器将针对它进行评估。例如,如果您想要根据用户的姓氏而触发的触发器,并且源系统中的姓氏字段名为
users_last_name
,则您将在此字段中输入值 'users_last_name'。 比较: 告诉触发器如何评估用户的值。源系统中的 属性 与 触发器 中指定的值进行比较。可用选项包括: 包含、匹配、以、结尾 或等于。 以下是每个 比较 类型的分类:
- 包含 : 值 中指定的字符序列包含在从源返回的属性值中。例如,如果触发器 Value 设置为 'Joy',则 include compare 的属性值将 'John' 的属性值设置为 True,如果触发器 Value 为 'Joy',则为 False。
- 匹配 :触发器上的值被视为 python 正则表达式,并在指定的 Value 和从源系统返回的值之间执行 正则表达式匹配(re.match) (带有 case ignore on)。例如,如果触发器的 Value 是 'Jo',如果来自源的值为 'John' 或 'Joanne',则触发器会返回 True,或者与正则表达式 'Jo' 匹配的任何其他值。如果属性的 source 值是 'Dan',则触发器将返回 False,因为 'Dan' 与正则表达式 'Jo' 不匹配。
- 以: 触发器结尾:触发器将看到源提供的值是否以触发器的指定值结束。 例如,如果源提供了 'John' 的值,如果值为 'n' 或 'on',则触发器将为 True。 如果因为来自源的 值 'John' 的值不是以触发器指定的值 'z',则触发器将为 False。
- 等于 :触发器将看到源提供的值等于(整个) 触发器的 指定的值。例如,如果源返回了值 'John',如果其 Value 被设置为 'John',则触发器将为 True。源返回的 'John' 以外的任何值都会将此触发器设置为 False。
- 在 中: in condition 将会看到值是否与多个值之一匹配。在 中 被指定为 compare 时,Value 字段可以是用逗号分开的列表。例如,如果触发器的值为 'John,Donna',如果来自源的属性具有 'John' 或 'Donna',则触发器将为 True。 否则,触发器将为 False。
值 :一个 users 属性将根据 compare 字段 匹配的值。请参阅本节中的 compare 定义中的示例。
注意如果 比较 类型位于 中,则此字段可以是用逗号分开的列表(不带空格)。
3.5.4. 验证器映射示例
使用以下示例来探索不同的条件,如您可以实施的 groups 和属性值来控制用户对平台的访问。
根据属性将用户添加到机构
在本例中,如果用户具有 Networking 值的 Organization
属性,则将它们添加到 Networking
机构中:

- 页面 的机构 标题表示您要在机构中配置设置权限。
-
网络组织
在此字段中输入,是此映射配置的唯一描述性名称。 -
从 Trigger 列表中选择 属性,以根据源系统中的属性来配置身份验证,在这个示例中是
Organization
。 -
操作被定义为
或
表示,至少有一个条件必须为 true,才能成功进行身份验证。 - 来自源 系统的属性是 Organization。
-
compare 值设置为
matches
,这意味着当用户具有Networking
的属性 值时,它们将添加到 Networking 机构中。 -
来自源系统的属性值是
Networking
。 -
要添加成员的组织的名称是
Networking
。 -
用户添加到具有组织
Member 角色的 Networking 机构中
。
根据 users 组将用户添加到团队
在本例中,如果用户有以下组之一,您将将用户添加到 Apple
团队:
cn=Administrators,ou=AAP,ou=example,o=com
或者
cn=Operators,ou=AAP,ou=example,co=com

不要升级权限
在本例中,您永远不会将用户升级到超级用户。但请注意,此规则不会撤销用户的超级用户权限,因为未设置 revoke 选项。

根据拥有组的用户升级特权
在本例中,如果您用户属于以下组,则会将用户权限升级到超级用户:
cn=Administrators,ou=AAP

使用映射顺序创建异常
由于映射按顺序执行,因此可以创建例外。在前面用于 Do not upgrade 权限 的示例上的扩展,您可以使用更高顺序添加另一个规则,如 Escalate 权限。
第一条规则(不要升级特权)阻止任何用户升级到超级用户,但第二条规则(升级特权)会更改该决定,如果他们位于 Administrators
组中,则会限制超级用户特权。

3.5.5. 允许映射
通过允许映射,您可以通过定义必须满足的条件来控制哪些用户可以访问系统。
流程
- 为身份验证方法配置身份验证详情后,从 Add authentication mapping 列表中选择 Allow。
- 输入唯一规则 Name 来标识该规则。
- 从列表中选择 Trigger。有关 映射触发器的更多信息,请参阅 Authenticator 映射触发器。
- 选择 Revoke 在触发器条件不匹配时拒绝用户访问系统。
- 点击 。
后续步骤
您可以通过在列表中拖放映射,来管理身份验证映射顺序。
注意映射优先级由列出映射的顺序决定。
- 点 以查看和验证映射配置。
- 单击 。
3.5.6. 机构映射
您可以根据用户名和电子邮件地址等属性,根据属性控制哪些用户放置到哪个 Ansible Automation Platform 机构,或基于验证器提供的组。
当机构映射被积极评估时,如果一个指定的机构没有存在于与映射关联的验证器时,则会创建一个指定的机构。
流程
- 为身份验证类型配置身份验证详情后,从 Add authentication mapping 列表中选择 Organization。
- 输入唯一规则 Name 来标识该规则。
- 从列表中选择 Trigger。有关 映射触发器的更多信息,请参阅 Authenticator 映射触发器。
- 选择 Revoke 在触发器条件不匹配时删除用户对所选机构角色的访问权限。
- 选择与添加或删除用户匹配的 机构。
- 为匹配的用户选择要应用或删除的 Role (如 Organization Admin 或 Organization Member)。
- 点击 。
后续步骤
您可以通过在列表中拖放映射,来管理身份验证映射顺序。
注意映射优先级由列出映射的顺序决定。
- 点 以查看和验证映射配置。
- 单击 。
3.5.7. 团队映射
团队映射是来自验证器的团队成员(用户)的映射。
您可以定义每个团队成员资格的选项。对于每个团队,您可以指定哪些用户会自动添加为团队成员,以及哪些用户可以管理团队。
可以为每个帐户身份验证单独指定团队映射。
当团队映射被积极评估时,如果允许相关验证器创建对象,则会创建指定的团队及其机构。
流程
- 为身份验证类型配置身份验证详情后,从 Add authentication map 列表中选择 Team。
- 输入唯一规则 Name 来标识该规则。
- 从列表中选择 Trigger。有关 映射触发器的更多信息,请参阅 Authenticator 映射触发器。
- 选择 Revoke 以删除用户对所选机构角色的访问权限,并在触发器条件不匹配时拒绝用户访问系统。
- 选择与 添加或删除用户匹配的团队和 机构。
- 为匹配的用户选择要应用或删除的 Role (如 Team Admin 或 Team Member)。
- 点击 。
后续步骤
您可以通过在列表中拖放映射,来管理身份验证映射顺序。
注意映射优先级由列出映射的顺序决定。
- 点 以查看和验证映射配置。
- 单击 。
3.5.8. 角色映射
角色映射是用户的映射,可以是全局角色,如平台审核员或团队或机构角色。
当团队和/或机构与适当的角色指定时,其行为与机构映射或团队映射相同。
可以为每个帐户身份验证单独指定角色映射。
流程
- 为身份验证类型配置身份验证详情后,从 Add authentication mapping 列表中选择 Role。
- 输入唯一规则 Name 来标识该规则。
- 从列表中选择 Trigger。有关 映射触发器的更多信息,请参阅 Authenticator 映射触发器。
- 选择 Revoke 在没有匹配触发器条件时删除用户的角色。
- 为匹配的用户选择要应用或删除的 Role。
- 点击 。
后续步骤
您可以通过在列表中拖放映射,来管理身份验证映射顺序。
注意映射优先级由列出映射的顺序决定。
- 点 以查看和验证映射配置。
- 单击 。
3.5.9. 超级用户映射
超级用户映射是用户到超级用户角色的映射,如系统管理员。
流程
- 为身份验证类型配置身份验证详情后,从 Add authentication map 列表中选择 Superuser。
- 输入唯一规则 Name 来标识该规则。
- 从列表中选择 Trigger。有关 映射触发器的更多信息,请参阅 Authenticator 映射触发器。
- 选择 Revoke 在没有匹配触发器条件时,从用户中删除超级用户角色。
- 点击 。
后续步骤
您可以通过在列表中拖放映射,来管理身份验证映射顺序。
注意映射优先级由列出映射的顺序决定。
- 点 以查看和验证映射配置。
- 单击 。
3.5.10. 查看验证器映射结果
作为平台管理员,您可以通过 API api/gateway/v1/users/X
中的用户页面查看验证器映射结果,以查看用户登录平台时如何评估映射。