建立接入联盟
在配置接入联合拓扑之前
在继续配置Access Federation拓扑的下一步之前,请确保配置基本URL在Artifactory方面。
建立Access Federation需要以下主要步骤:
- 配置Access以允许来自任务控制的远程调用
在这一步中,您将启用任务控制向JFrog平台部署中的任何访问服务发送命令。 - 建立信任圈
在此步骤中,您将通过向同步目标服务提供同步源服务的根证书来建立Access Federation拓扑的基础。 - 配置接入联合拓扑
在此步骤中,您将建立所需的连接,以便源平台部署中的Access服务能够将安全实体同步到目标平台部署中的Access服务(即已提供源服务的根证书的Access服务)。
建立信任圈
如果源受目标信任,则只能配置从源到目标平台部署的安全实体的同步。这种信任是通过向目标平台部署中的Access提供源平台部署的根证书来建立的。有关更多信息,请参见建立信任圈.在配置接入联合拓扑之前
在继续配置Access Federation拓扑的下一步之前,请确保为目标Access服务提供了源Access服务所需的根证书。
JFROG_HOME美元/ artifactory / var / etc /访问/键/信任
文件夹
要在头盔安装中建立信任圈,请参见在Helm安装中添加信任证书圈.
配置接入联合拓扑
通过向目标平台部署提供源平台部署的根证书来建立信任圈之后,您需要通过在Access Federation中设置关系来配置拓扑。
样本拓扑
例1:建立星型拓扑
考虑这样一个场景,在星型拓扑中应该设置三个Access服务,其中Access- a与Access- b和Access- c同步。
在这种情况下,您需要为Access-B和Access-C提供Access-A的根证书,以便A受到B和C的信任。
例2:建立全网格拓扑
考虑这样一个场景,应该在Full Mesh拓扑中设置三个Access服务,其中每个服务应该能够将对安全实体的更改同步到其他两个服务。
在这种情况下,您需要为每个Access服务提供其他两个服务的根证书,以便两者都受信任。
在Access Federation中建立关系
若要配置访问联合拓扑,请从政府“任务控制”安装在“平台部署”中的模块,展开用户管理并选择访问联合会.显示已管理的平台部署列表。
网状拓扑结构
单击,设置“Mesh拓扑”应用拓扑|网格.向导将带您完成以下步骤:
选择平台部署
选择要同步的安全实体
总结
1.选择平台部署
在此步骤中,选择将成为联邦组一部分的Platform deployment。要将平台部署包括在联邦组中,请从可用的平台部署列表并使用箭头将它们转移到选定的平台部署列表。
2.选择安全实体
一旦您设置了联邦组中的Access服务,您可以从以下内容中选择应该同步的安全实体集:
用户
组
权限
访问令牌
只需检查应该同步的实体(默认情况下,它们都是选中的),然后单击下一个.
3.总结
最后,向导显示配置的摘要。若要应用,请单击完成.
将显示结果的摘要。
明星拓扑
单击,设置接入联合应用拓扑并选择明星.向导将带您完成该过程的步骤,其中包括:
选择服务
选择要同步的安全实体
总结
此示例显示如何设置星型拓扑以允许从Home-JPD来artifactory-edge1.在设置之前,artifactory-edge1提供了根证书Home-JPD任务控制被设置为调用Access服务artifactory-edge1。
1.选择服务
在此步骤中,选择将成为联邦组一部分的服务。要在联邦组中包括服务,请从可用的平台部署列表并使用箭头将它们转移到选定的平台部署列表。
2.选择安全实体
同步安全实体。
选择为目标分配实体类型的方法。
手动将实体分配给不同的目标:这提供了灵活性,因为它允许您将不同的实体类型分配给不同的目标。例如:选择将Access A的用户、组和权限同步到Access B,选择只将Access A的用户、组和权限同步到Access C,选择将Access A的所有实体同步到Access E。
适用于所有目标:任何选择适用于所有目标,选择“权限”适用于所有权限。选择星形拓扑时启用此选项。
选择要同步的实体类型。
用户
组
权限
包含/排除模式:当为目标分配实体类型时,您可以使用包含/排除正则表达式分配要同步的特定权限。
令牌
3.总结
最后,向导显示配置的摘要。若要应用,请单击完成.
将显示结果的摘要。
配置同步
在此步骤中,您将配置Access服务应将哪些安全实体同步到其目标服务。同时,您还可以选择设置一些控制同步过程的参数。配置参数在YAML配置文件上传到不同的Access服务。
联合存储库使用一个名为federatedRepoUrlBase,
这是相关的只有到联合存储库,并且不能应用于其他功能来设置地理同步。要配置地理同步,需要通过访问YAML配置.
接入联合参数
YAML配置文件中的以下部分管理访问联合:
- “入境”:入站参数将源Access服务的服务id映射到接收Access服务所附加的服务id。要确定Artifactory服务的服务ID,请使用获取服务IDREST API端点。
- “出站”:出站参数定义了控制从源服务向外到目标服务的安全实体同步的参数。
联邦YAML文件参数的格式如下所示,默认值为:
Federation: outbound: entity-type -to-sync: -users - groups - permissions - tokens exclusion -users: -- buffer-wait-millis: 30000 buffer-max-size: 500 consider- stat -hours: 168 maximum-future-time- diffi -millis: 60000 timeout-millis: 3000 number-of-retries: 3 servers: -name: " " url: " " -name: " " url: " "…-name: "< Target -name>" url: "< Target -url>" inbound: Service -id-mapping: - from:
地点:
entity-types-to-sync |
指定应将哪些实体同步到已配置的目标服务器。可能取值为: ——用户 ——组 ——权限 ——令牌 隐式同步 为了保持信任圈内不同Access服务之间实体层次关系的一致性,安全实体的同步应用如下规则:
LDAP, SAML, Crowd等。 当使用第三方身份验证提供者(如LDAP、SAML和Crowd)时,只有用户在这些提供者中定义的可以被联合,而不是配置。 还要注意,为了让联邦工作,这些用户必须在登录到Artifactory后创建。 |
exclude-users |
可选 应该从同步中排除的特定用户 |
buffer-wait-millis |
可选(默认值:30000] 两次同步的时间间隔(ms)。 |
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 |
当一个服务(如Mission Control、Xray或Distribution)选择一个Artifactory实例作为其身份验证提供者时,该服务的服务ID将自动注册到相应的Access服务中。 该字段将正在同步的服务的服务id映射到此Access服务。映射由Access自动生成,除了下面描述的一些限制外,不需要手动输入。 对于同步目标,“from”和“to”字段定义了服务id的映射。 的来自:字段应使用通配符指定服务类型。例如,对于Artifactory,指定 的:字段应指定源服务指向的特定服务(在来自:字段)正在被映射。 限制
|
注意你的空白
YAML文件格式对空白很敏感,因此需要确保所有必需的空白字符都到位。如果YAML格式无效,权限将无法成功同步,您将不会收到错误消息。
同步冲突处理
根据您所配置的同步拓扑,访问服务器可能会以较短的时间间隔从不同源接收多个更新。连续的更新甚至可能发生冲突。例如,在全网格拓扑中,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从已将密码设置为“def”的访问服务2同步到访问服务1。
如果从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版本开始,有两种同步数据的方法:
从访问联合菜单调用完全广播
全面广播的目的是当您第一次建立联合时。您还可以使用此功能来解决“过时服务器”状态。
曾推高操作
因为“完整广播”是如果资源过多,则应尽可能避免重复单击Broadcast。
- 若要触发来自特定访问联合源的完整广播,请导航到用户管理|接入联合.
- 选择要广播的源,然后从右边的三点菜单中选择广播.
您将被要求确认完整广播并重新同步。 - 点击好吧开始广播或取消。
在源服务上手动应用REST API端点
描述:同步源数据到目标Access服务
注:要求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
access-admin用户
Access服务上的REST API调用需要使用正在进行调用的Access服务的Admin用户进行身份验证。
不要将其与Artifactory中定义的任何Admin用户混淆。这些可以用于在Artifactory上进行REST API调用。这个调用是在Access服务上进行的,以便在长时间不活动后恢复它,而不是在Artifactory上进行的。
例子
下面是一个示例,说明如何通过将权限设置从信任圈中的源Access服务同步到目标来配置权限的单向复制。以下是这个过程的步骤:
本举例适用于通过Access配置手动设置Access Federation。在设置Access Federation via时任务控制界面,一些设置是由任务控制在设置过程中处理。
将权限目标映射到不同类型的存储库
默认情况下,联合仅适用于权限目标,其中权限应用于相同类型的资源(local-to-local和remote-to-remote)。2022世界杯阿根廷预选赛赛程
映射不同类型的存储库(远程到本地或本地到远程)需要编辑人工系统属性。
启用远程存储库的本地权限。
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
字段。
联邦:\n inbound:\n service-id-mapping:\n - from: jfrt@*\n - to: jfrt@01c9wadx1fvh3d1egg7wne0e0g\n
不要忘记在将YAML文件放置到指定位置后重新启动Access服务。
出站配置
出站配置在源Access实例上进行
注意,Outbound配置应该应用于正在从中同步安全实体的源Access实例。
在这个例子中,我们希望使用默认值同步所有安全实体,除了我们想修改的以下设置:
超时毫秒= 4000
重试次数:5
上加载以下YAML文件源访问服务,如上传YAML文件,并将access-2设置为access-1的同步目标(本例中假设access-2业务IP地址为35.230.92.254)。
联邦:\n outbound:\n timeout-millis: 3000\n重试次数:3\n服务器:\n名称:“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参数中定义的时间。一旦目标服务被认为是过时的,源服务将不能再尝试将数据同步到它。要“恢复”失效服务并恢复同步数据,您需要手动应用中描述的“Federation”REST API端点数据同步在源服务上:
移除已注册的同步目标
要删除已注册到Access服务的同步目标,需要从YAML配置文件中删除它,并按照中所述重新加载该文件上传YAML文件.
一旦文件在指定的位置,不要忘记重新启动Access服务。
REST API
任务控制支持管理访问联合会通过REST API。