3.5. 映射


要控制允许哪些用户进入 Ansible Automation Platform 服务器,并根据其属性(如用户名和电子邮件地址)或团队,或者他们所属的组,您可以配置验证器映射。

通过验证器映射,您可以添加在授予用户获得或拒绝访问资源类型前必须满足的条件。验证器映射与验证器关联,并给出了顺序。用户登录时,会按顺序处理映射。它们可以像防火墙规则或邮件过滤器一样被认为。

3.5.1. 了解验证器映射

身份验证
验证用户的身份,通常是通过用户名和密码或信任系统。
授权
确定经过身份验证的用户在通过身份验证后可以执行的操作。

在 Ansible Automation Platform 中,验证器管理身份验证,验证用户并返回详情,如用户名、名字、电子邮件和组成员资格(如 LDAP 组)。授权来自验证器的关联映射。

在身份验证过程中,在用户通过身份验证后,授权系统以内存中的默认权限集开始。然后按顺序处理验证器映射,并根据它们的触发器条件调整权限。处理所有验证器的映射后,用户权限的内存中表示会与其现有的权限协调。

例如,以下是默认权限的一个简化内存表示,如下所示:

Access allowed = True
Superuser permission = Undefined
Admin of teams = None

此外,您可能具有需要处理的映射按照以下顺序处理:

  1. 允许将 规则集设置为 never
  2. 基于组的允许规则
  3. 基于用户属性的 超级用户 规则
  4. 基于 用户组的团队管理规则

第一个 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”

在按照定义的顺序处理所有映射后,最终权限协调后,根据映射规则更新用户的访问权限。

总之,验证器会验证用户,并将系统授权委派给验证器映射。执行验证器映射,以便创建用户权限的内存中表示,该符号在所有映射执行后与实际权限协调。

默认情况下,验证器映射返回 ALLOWSKIPPED

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 机构中:

将用户添加到机构映射示例,该示例与以下列表关联,该数字描述了每个字段的功能
  1. 页面 的机构 标题表示您要在机构中配置设置权限。
  2. 网络组织 在此字段中输入,是此映射配置的唯一描述性名称。
  3. Trigger 列表中选择 属性,以根据源系统中的属性来配置身份验证,在这个示例中是 Organization
  4. 操作被定义为 表示,至少有一个条件必须为 true,才能成功进行身份验证。
  5. 来自源 系统的属性是 Organization。
  6. compare 值设置为 matches,这意味着当用户具有 Networking 的属性 值时,它们将添加到 Networking 机构中。
  7. 来自源系统的属性值是 Networking
  8. 要添加成员的组织的名称是 Networking
  9. 用户添加到具有组织 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. 允许映射

通过允许映射,您可以通过定义必须满足的条件来控制哪些用户可以访问系统。

流程

  1. 为身份验证方法配置身份验证详情后,从 Add authentication mapping 列表中选择 Allow
  2. 输入唯一规则 Name 来标识该规则。
  3. 从列表中选择 Trigger。有关 映射触发器的更多信息,请参阅 Authenticator 映射触发器。
  4. 选择 Revoke 在触发器条件不匹配时拒绝用户访问系统。
  5. 点击 Next

后续步骤

  1. 您可以通过在列表中拖放映射,来管理身份验证映射顺序。

    注意

    映射优先级由列出映射的顺序决定。

  2. Next 以查看和验证映射配置。
  3. 单击 Finish

3.5.6. 机构映射

您可以根据用户名和电子邮件地址等属性,根据属性控制哪些用户放置到哪个 Ansible Automation Platform 机构,或基于验证器提供的组。

当机构映射被积极评估时,如果一个指定的机构没有存在于与映射关联的验证器时,则会创建一个指定的机构。

流程

  1. 为身份验证类型配置身份验证详情后,从 Add authentication mapping 列表中选择 Organization
  2. 输入唯一规则 Name 来标识该规则。
  3. 从列表中选择 Trigger。有关 映射触发器的更多信息,请参阅 Authenticator 映射触发器。
  4. 选择 Revoke 在触发器条件不匹配时删除用户对所选机构角色的访问权限。
  5. 选择与添加或删除用户匹配的 机构
  6. 为匹配的用户选择要应用或删除的 Role (如 Organization AdminOrganization Member)。
  7. 点击 Next

后续步骤

  1. 您可以通过在列表中拖放映射,来管理身份验证映射顺序。

    注意

    映射优先级由列出映射的顺序决定。

  2. Next 以查看和验证映射配置。
  3. 单击 Finish

3.5.7. 团队映射

团队映射是来自验证器的团队成员(用户)的映射。

您可以定义每个团队成员资格的选项。对于每个团队,您可以指定哪些用户会自动添加为团队成员,以及哪些用户可以管理团队。

可以为每个帐户身份验证单独指定团队映射。

当团队映射被积极评估时,如果允许相关验证器创建对象,则会创建指定的团队及其机构。

流程

  1. 为身份验证类型配置身份验证详情后,从 Add authentication map 列表中选择 Team
  2. 输入唯一规则 Name 来标识该规则。
  3. 从列表中选择 Trigger。有关 映射触发器的更多信息,请参阅 Authenticator 映射触发器。
  4. 选择 Revoke 以删除用户对所选机构角色的访问权限,并在触发器条件不匹配时拒绝用户访问系统。
  5. 选择与 添加或删除用户匹配的团队和 机构
  6. 为匹配的用户选择要应用或删除的 Role (如 Team AdminTeam Member)。
  7. 点击 Next

后续步骤

  1. 您可以通过在列表中拖放映射,来管理身份验证映射顺序。

    注意

    映射优先级由列出映射的顺序决定。

  2. Next 以查看和验证映射配置。
  3. 单击 Finish

3.5.8. 角色映射

角色映射是用户的映射,可以是全局角色,如平台审核员或团队或机构角色。

当团队和/或机构与适当的角色指定时,其行为与机构映射或团队映射相同。

可以为每个帐户身份验证单独指定角色映射。

流程

  1. 为身份验证类型配置身份验证详情后,从 Add authentication mapping 列表中选择 Role
  2. 输入唯一规则 Name 来标识该规则。
  3. 从列表中选择 Trigger。有关 映射触发器的更多信息,请参阅 Authenticator 映射触发器。
  4. 选择 Revoke 在没有匹配触发器条件时删除用户的角色。
  5. 为匹配的用户选择要应用或删除的 Role
  6. 点击 Next

后续步骤

  1. 您可以通过在列表中拖放映射,来管理身份验证映射顺序。

    注意

    映射优先级由列出映射的顺序决定。

  2. Next 以查看和验证映射配置。
  3. 单击 Finish

3.5.9. 超级用户映射

超级用户映射是用户到超级用户角色的映射,如系统管理员。

流程

  1. 为身份验证类型配置身份验证详情后,从 Add authentication map 列表中选择 Superuser
  2. 输入唯一规则 Name 来标识该规则。
  3. 从列表中选择 Trigger。有关 映射触发器的更多信息,请参阅 Authenticator 映射触发器。
  4. 选择 Revoke 在没有匹配触发器条件时,从用户中删除超级用户角色。
  5. 点击 Next

后续步骤

  1. 您可以通过在列表中拖放映射,来管理身份验证映射顺序。

    注意

    映射优先级由列出映射的顺序决定。

  2. Next 以查看和验证映射配置。
  3. 单击 Finish

3.5.10. 查看验证器映射结果

作为平台管理员,您可以通过 API api/gateway/v1/users/X 中的用户页面查看验证器映射结果,以查看用户登录平台时如何评估映射。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.