建立接入联盟
配置联合访问拓扑前
在进行配置访问联合拓扑的下一步之前,请确保执行以下操作配置Base URL在Artifactory方面。
建立Access Federation需要以下主要步骤:
- 配置访问以允许来自任务控制中心的远程调用
在此步骤中,您将启用任务控制向JFrog平台部署中的任何Access服务发送命令。 - 建立信任圈
在此步骤中,您将通过使用同步源服务的根证书提供同步目标服务,从而为Access Federation拓扑建立基础。 - 配置接入联合拓扑
在此步骤中,您将建立所需的连接,以便源平台部署中的Access服务将能够将安全实体同步到目标平台部署中的Access服务(即已提供源服务的根证书的那些实体)。
建立信任圈
如果源受目标信任,则只能配置从源到目标平台部署的安全实体的同步。这种信任是通过向目标平台部署中的Access提供源平台部署的根证书来建立的。有关更多信息,请参见建立信任的圈子.配置联合访问拓扑前
在进行下一步的访问联合拓扑配置之前,请确保目标Access服务提供了来自源Access服务的所需根证书。
JFROG_HOME美元/ artifactory / var / etc /访问/键/信任
文件夹
要在头盔安装中建立信任圈,请参见为头盔安装添加信任证书圈.
配置接入联合拓扑
通过向目标平台部署提供源平台部署的根证书来建立信任圈之后,您需要通过在Access Federation中设置关系来配置拓扑。
样本拓扑
例1:建立星型拓扑
考虑这样一个场景,应该在星型拓扑中设置三个Access服务,其中Access- a同步到Access- b和Access- c。
此时,需要向Access-B和Access-C提供Access-A的根证书,使A获得B和C的信任。
例2:建立全网格拓扑
考虑这样一个场景,在Full Mesh拓扑中应该设置三个Access服务,其中每个服务应该能够将对安全实体的更改同步到其他两个服务。
在这种情况下,您需要为每个Access服务提供两个其他服务的根证书,以便两个服务都是受信任的。
在访问联合中建立关系
要配置访问联合拓扑,请从政府在安装了任务控制的平台部署中展开用户管理并选择访问联合会.显示所管理的平台部署列表。
网状拓扑结构
单击,设置“Mesh拓扑”应用拓扑|网格.该向导将带您完成以下步骤:
选择平台部署
选择要同步的安全实体
总结
1.选择平台部署
在此步骤中,选择将成为联邦组一部分的Platform deployment。要将平台部署包含在联邦组中,请从可用的平台部署列表并使用箭头将它们转移到选择平台部署列表。
2.选择安全的实体
一旦您设置了联邦组中的Access服务,您就可以选择应该从以下内容中同步的安全实体集:
用户
组
权限
访问令牌
只需检查应该同步的实体(默认情况下,它们都被选中),然后单击下一个.
3.总结
最后,向导显示配置的摘要。申请,请点击完成.
显示结果的摘要。
明星拓扑
单击,设置接入联合应用拓扑并选择明星.向导将引导您完成以下步骤:
选择服务
选择要同步的安全实体
总结
此示例演示如何设置星型拓扑以允许从Home-JPD来artifactory-edge1.在安装之前,artifactory-edge1是否提供了根证书Home-JPD任务控制中心被设置来调用访问服务artifactory-edge1。
1.选择服务
在此步骤中,选择将成为联邦组一部分的服务。要将服务包含在联邦组中,请从可用的平台部署列表并使用箭头将它们转移到选择平台部署列表。
2.选择安全的实体
同步安全实体。
选择为目标分配实体类型的方法。
手动将实体分配给不同的目标:这提供了灵活性,因为它允许您将不同的实体类型分配给不同的目标。例如:将Access A中的用户和组同步到Access B,只将Access A中的用户、组和权限同步到Access C,将Access A中的所有实体同步到Access E。
应用于所有目标:所做的任何选择适用于所有目标,选择权限适用于所有权限。选择“星形拓扑”时启用此选项。
选择要同步的实体类型。
用户
组
权限
包含/排除模式:在为目标分配实体类型时,可以使用包含/排除正则表达式分配要同步的特定权限。
令牌
3.总结
最后,向导显示配置的摘要。申请,请点击完成.
显示结果的摘要。
配置同步
在此步骤中,您将配置Access服务应该将哪些安全实体同步到其目标服务。同时,您可以选择设置一些控制同步过程的参数。配置参数在YAML配置文件被上传到不同的Access服务。
联邦存储库利用一个名为federatedRepoUrlBase,
这是相关的只有并不能应用于其他设置地理同步的功能。要配置地理同步,您需要通过访问YAML配置.
访问联合参数
YAML配置文件中的以下部分管理访问联合:
- “入境”:入站参数将源访问服务的服务id映射到接收访问服务所附加的服务id。要确定Artifactory服务的服务ID,请使用得到服务IDREST API端点。
- “出站”:出站参数定义控制从源服务向外同步安全实体到目标服务的参数。
联邦YAML文件参数的格式如下所示,默认值如下:
Federation: outbound: entity-type -to-sync: -users - groups - permissions - tokens exclude-users: -- buffer-wait-millis: 30000 buffer-max-size: 500 consider-stale-hours: 168 maximum-future-time-diff-millis: 60000 timeout-millis: 3000 number-of-retries: 3 servers: -name: " " url: " " url: " "…-name: "< Target -name>" url: "< Target -url>" inbound: Service -id-mapping: - from: to: - from: to: …—from: to: . from:
地点:
entity-types-to-sync |
指定应该将哪些实体同步到已配置的目标服务器。可能的值是: ——用户 ——组 ——权限 ——令牌 隐式同步 为了保持信任圈内不同Access服务之间实体层次关系的一致性,安全实体的同步需要遵循以下规则:
LDAP, SAML, Crowd等。 当使用第三方身份验证提供者,如LDAP、SAML和Crowd时,只有用户在这些提供程序中定义的可以被联合,而不是配置。 还要注意,为了让联合工作,这些用户必须在登录到Artifactory之后创建。 |
exclude-users |
可选 应该从同步中排除的特定用户 |
buffer-wait-millis |
可选(默认值:30000] 两次同步之间的时间间隔(毫秒)。 |
buffer-max-size |
可选(默认值:500] 两次同步尝试之间可以累积的最大实体数。 |
consider-stale-hours |
可选(默认值:168(一个星期) 接收服务器在被认为“过时”且无法与更新同步之前无法响应或响应错误的时间长度。一旦一个服务器被认为是“陈旧的”,它只能通过更新陈旧的服务器中描述的REST API端点恢复运行。 |
maximum-future-time-diff-millis |
可选(默认值:60000] 如果更新了一个Access服务,并且随后将另一个更新同步到它,那么如果时间戳为至少,Access服务将只接受后续更改 详情请参阅处理同步冲突. |
timeout-millis |
可选(默认值:3000] 同步更新后,访问服务等待接收访问服务确认后重新尝试同步更新的时间长度。方法中指定的次数,如果在此时间段内没有收到确认,则发送服务器将重试将更新同步到目标服务器 |
重试次数 |
可选(默认值:3] Access服务尝试将更新同步到远程服务的次数,直到。如果在此次数的重试后仍未从目标服务器收到确认,则认为同步失败。 |
服务器 |
此Access服务可以将实体同步到的目标Access服务的逻辑名称和URL |
service-id-mapping |
当任务控制、Xray或分发等服务选择Artifactory实例作为其身份验证提供者时,该服务的服务ID将自动注册到相应的Access服务。 该字段将正在同步的服务的服务id映射到此Access服务。映射由Access自动生成,不需要手动输入,除非下面描述的一些限制。 对于同步目标,from和to字段定义了服务id的映射。 的来自:字段应使用通配符指定服务类型。例如,对于Artifactory,指定 的:字段应指定源服务指向的特定服务(在来自:字段)被映射。 限制
|
小心你的空白
YAML文件格式对空白非常敏感,因此需要确保所有必需的空白字符都已到位。如果YAML格式无效,将无法成功同步权限,也不会收到错误消息。
处理同步冲突
根据您所配置的同步拓扑,Access服务器可能会在短时间间隔内从不同来源接收多个更新,连续更新甚至可能发生冲突。例如,在全网格拓扑中,Access服务器可能将用户的密码更新为从一个源同步过来的一个值,但同一用户的密码可能更新为从另一个源同步过来的不同值。为了解决此类冲突,Access服务器将在具有最新时间戳的更新时完成。然而,由于服务器时钟的同步可能并不总是完全准确的,当Access服务器接收到冲突的更新时,仍然可能存在不一致。为克服服务器时钟同步中可能出现的不准确性,Access服务器使用在maximum-future-time-diff-millis
参数指定。如果更新早于。访问将不会更新实体maximum-future-time-diff-millis
上次更新的毫秒数。
考虑以下示例,使用缺省值maximum-future-time-diff-millis = 60000。
在访问服务1上,用户User1的密码在09:02:00:000时刻修改为“abc”。
然而,大约在同一时间,User1从Access Service 2被同步到Access Service 1, Access Service 2将密码设置为“def”。
如果从Access Service 2同步过来的更改有一个时间戳在09:02:00:000到09:02:59:999之间,那么User1的密码将是"abc",因为从Access Service 2同步过来的密码将被忽略。
如果从Access Service 2同步过来的更改有一个09:03:00:000或更高的时间戳,那么User1的密码将是“def”,因为从Access Service 2同步过来的密码被认为比直接在Access Server 1上设置的密码晚,因此它将被接受。
数据同步
一旦使用相应的YAML文件配置了访问服务,就可以将数据从源访问服务同步到目标访问服务。
在Artifactory 7.42.1版本中,有两种同步数据的方法:
- 从访问联合菜单调用完整广播到每个联邦源(可从7.42.1版本获得)
- 通过在源服务上手动应用REST API端点来调用广播
从访问联合菜单调用完整广播
全面广播的目的是当你第一次建立一个联盟。您还可以使用此功能来解决“陈旧服务器”状态。
曾推高操作
因为“全面广播”是资源过多,你应该尽可能避免重复的Broadcast点击。
- 若要从特定的访问联合源触发完整广播,请导航到用户管理|接入联合.
- 选择您想要广播的源,并从右边的三点菜单中选择广播.
您将被要求确认完整广播和重新同步。 - 点击好吧开始广播或取消。
在源服务上手动应用REST API端点
描述:同步源数据到目标访问服务
注:需要Artifactory Enterprise Plus
自: 5.11
安全:需要admin用户。
使用:把/ api / v1 /系统/ / [targetServer] / full_broadcast联盟
示例用法:
curl -uaccess-admin:密码http://localhost:8040/access/api/v1/system/federation/access-2/full_broadcast -XPUT
访问admin用户
对Access服务的REST API调用需要使用进行调用的Access服务的Admin用户进行身份验证。
不要将此与Artifactory中定义的任何Admin用户混淆。这些可以用于在Artifactory上进行REST API调用。此调用是在访问服务上进行的,以便在长时间不活动后恢复它,而不是在Artifactory上。
例子
通过将信任圈中的源访问服务的权限设置同步到目标,下面是如何配置权限的单向复制的示例。以下是这个过程的步骤:
本示例应用于使用Access配置手动设置Access Federation。当设置访问联邦via任务控制的UI,部分设置由任务控制中心在设置过程中处理。
将权限目标与不同类型的存储库映射
默认情况下,联合只适用于将权限应用于相同类型(本地到本地和远程到远程)的资源的权限目标。2022世界杯阿根廷预选赛赛程
映射具有不同类型(远程到本地或本地到远程)的存储库需要编辑artifactory系统属性。
启用远程存储库的本地权限。
artifactory.apply.local.repos.permissions.on.remote.repos = true
启用对本地存储库的远程权限。
artifactory.apply.remote.repos.permissions.on.local.repos = true
获得服务id
第一步是获取权限同步关系中涉及的Artifactory服务的服务id。注意,我们需要Artifactory服务id,但实际上,权限是由相应的Access服务管理和同步的。
对于每个源和目标Artifactory服务,运行得到服务IDREST API端点。在本例中,我们假设您直接在Artifactory服务正在运行的机器上应用此调用(即在localhost上):
curl -uadmin:password -v http://localhost:8081/artifactory/api/system/service_id在源服务端,响应为:jfrt@01c9s2y40bcs960sdxwy4302yc在目标服务端,响应为:jfrt@01c9wadx1fvh3d1egg7wne0e0g
计划和规划您的同步
我们强烈建议使用每个Artifactory集群的服务ID,并在为服务ID分配逻辑名称的同时创建一个图来说明您正在实现的权限同步拓扑。在本例中,我们将为源和目标服务id分配以下逻辑名称:
access-1: jfrt@01c9s2y40bcs960sdxwy4302yc
access-2: jfrt@01c9wadx1fvh3d1egg7wne0e0g
入站的配置
上加载以下YAML文件目标访问服务,创建服务ID映射上传YAML文件.注意,由于目标服务正在接收权限(而没有同步任何内容),因此不需要包含entity-types-to-sync
字段。
Federation:\n inbound:\n service-id-mapping:\n - from: jfrt@*\n - to: jfrt@01c9wadx1fvh3d1egg7wne0e0g\n
不要忘记在将YAML文件放在指定位置后重新启动Access服务。
出站配置
出站配置在源Access实例上进行
注意,Outbound配置应该应用于同步安全实体的源Access实例。
在本例中,我们希望使用默认值同步所有安全实体,除了以下我们想修改的设置:
timeout-millis = 4000
重试次数:5
上加载以下YAML文件源中描述的访问服务上传YAML文件设置access-1的同步目标为access-2(本例中access-2的业务IP地址为35.230.92.254)。
Federation:\n outbound:\n timeout-millis: 3000\n number-of-retries: 3\n servers:\n name: "access-2"\n url: "http://35.230.92.254:8040/access"\n
不要忘记在将YAML文件放在指定位置后重新启动Access服务。
调用同步
设置了联邦之后,就可以通过应用中描述的联邦REST API端点来同步数据了数据同步access-1:
curl -uaccess-admin:密码http://localhost:8040/access/api/v1/system/federation/access-2/full_broadcast -XPUT
恢复失效的服务
“stale”服务是一个已经注册为同步目标的服务,但是它在超过配置源Access服务的consideration -stale-hours参数中定义的时间的一段时间内没有响应任何同步数据的尝试。一旦目标服务被认为是过时的,源服务将不再允许任何将数据同步到它的尝试。要“恢复”过时的服务并恢复同步数据,您需要手动应用中描述的“联邦”REST API端点数据同步在源服务上:
移除已注册的同步目标
要删除已注册到Access服务的同步目标,您需要从YAML配置文件中删除它,并按照中所述重新加载该文件上传YAML文件.
一旦文件位于指定位置,不要忘记重新启动Access服务。
REST API
任务控制支持管理访问联合会通过REST API。