建立Access Federation
在配置接入联合拓扑之前
在进行配置Access Federation拓扑的下一步之前,请确保配置基础URL在人工方面。
设置Access Federation需要以下主要步骤:
- 配置访问以允许来自任务控制中心的远程呼叫
在此步骤中,您将启用任务控制向JFrog平台部署中的任何Access服务发送命令。 - 建立信任圈
在此步骤中,您将通过向同步目标服务提供同步源服务的根证书,为Access Federation拓扑建立基础。 - 配置接入联邦拓扑
在此步骤中,您将建立所需的连接,以便源平台部署中的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:设置全网格拓扑
考虑这样一个场景:三个Access服务应该在Full Mesh拓扑中设置,其中每个服务应该能够将对安全实体的更改同步到其他两个服务。
在这种情况下,您需要为每个Access服务提供其他两个服务的根证书,以便它们都是受信任的。
Access Federation中关系的建立
要配置Access Federation拓扑,请从政府模块中安装任务控制的平台部署,展开用户管理并选择访问联合会.将显示所管理的平台部署列表。
网状拓扑结构
单击,设置“Mesh topology”应用拓扑| Mesh.向导将带您完成以下步骤:
选择平台部署
选择要同步的安全实体
总结
1.选择平台部署
在此步骤中,选择将成为联合组一部分的Platform deployment。要在联合组中包括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。
适用于所有目标:任何选择适用于所有目标,选择“权限”适用于所有权限。此选项在选择星型拓扑时启用。
选择要同步的实体类型。
用户
组
权限
Include/exclude模式:在为目标分配实体类型时,可以使用Include/exclude正则表达式指定需要同步的特定权限。
令牌
3.总结
最后,向导显示配置摘要。要应用,请单击完成.
显示结果摘要。
配置同步
在此步骤中,您将配置Access服务应将哪些安全实体同步到其目标服务。同时,您可以选择设置一些控制同步过程的参数。配置参数在YAML配置文件上载到不同的Access服务。
联合存储库使用一个URLfederatedRepoUrlBase,
这是相关的只有并且不能应用于用于设置地理同步的其他特性。要配置地理同步,您需要通过访问YAML配置.
接入联邦参数
YAML配置文件中的以下部分管理访问联合:
- “入境”:入站参数将源Access服务的服务id映射到接收Access服务附加到的服务id。要确定人工服务的服务ID,请使用获取服务IDREST API端点。
- “出站”:出站参数定义了控制从源服务向外到目标服务的安全实体同步的参数。
联邦YAML文件参数的格式如下所示,默认值为:
Federation: outbound: entity-type -to-sync:—users - groups - permissions - tokens exclude-users:—— buffer-wait-millis: 30000 buffer-max-size: 500考虑-过期-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)时,只有用户可以联合这些提供程序中定义的,而不是配置。 还要注意,要使federation工作,必须在登录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服务的逻辑名称和URL |
service-id-mapping |
当Mission Control、Xray或Distribution等服务选择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- diffi -millis = 60000。
在接入业务1上,用户User1的密码在时间09:02:00 . 000修改为“abc”。
然而,大约在同一时间,User1从Access Service 2同步到Access Service 1,后者将密码设置为“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开始,有两种同步数据的方法:
从Access Federation菜单调用完整广播
完整广播的目的是在您第一次建立联邦时使用。您还可以使用此功能来解析“过期服务器”状态。
曾推高操作
因为“完整的广播”是资源繁重,应该尽可能避免重复的广播点击。
- 若要触发来自特定Access Federation源的完整广播,请导航到用户管理|访问联合.
- 选择您希望播放的源,然后从右侧的三点菜单中选择广播.
系统将要求您确认完整广播并重新同步。 - 点击好吧开始广播或取消。
在源服务上手动应用REST API端点
描述:同步源访问服务到目标访问服务
注:需要Artifactory Enterprise Plus
自: 5.11
安全:需要admin用户。
使用:把/ api / v1 /系统/ / [targetServer] / full_broadcast联盟
示例用法:
curl -uaccess-admin:password 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 Federation。设置Access Federation时任务控制的用户界面,一些设置是由任务控制中心在设置期间处理的。
将权限目标映射到不同类型的存储库
缺省情况下,联合只对同一类型资源(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和目标服务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: jfirst @*\n - to: jfrt@01c9wadx1fvh3d1egg7wne0e0g\n
在将YAML文件放入指定位置后,不要忘记重新启动Access服务。
出站配置
出站配置在源Access实例上进行
注意,出站配置应应用于源Access实例,您将从中同步安全实体。
在这个例子中,我们想要使用默认值同步所有的安全实体,除了下面我们想要修改的设置:
Timeout-millis = 4000
重试次数:5
控件上加载以下YAML文件源中描述的访问服务上传YAML文件指定上述参数,并将access-2设置为access-1的同步目标(本例中假设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:password http://localhost:8040/access/api/v1/system/federation/access-2/full_broadcast -XPUT
恢复陈旧的服务
“失效”服务是已注册为同步目标的服务,但是在超过配置源Access服务时使用的参数中定义的时间段内,它没有响应任何同步数据的尝试。一旦目标服务被认为是陈旧的,源服务将不会再尝试将数据同步到它。要“恢复”过时的服务并恢复同步数据,您需要手动应用中描述的“Federation”REST API端点数据同步在源服务上:
移除已注册同步目标器
要删除已注册到Access服务的同步目标,您需要从YAML配置文件中删除它,并重新加载该文件,如上传YAML文件.
不要忘记在文件到达指定位置后重新启动Access服务。
REST API
任务控制支持管理访问联合会通过REST API。