令牌证书
令牌证书是密钥对,由私有证书和根证书组成,用于签署和验证令牌。的private.key
用于签署访问令牌和crt
匹配的公钥,用于验证令牌的签名。
的crt
将从目标的可信文件夹中消失,并将被放置在Artifactory数据库中。
重置令牌证书
管理员可以强制Access重置令牌证书。
重置令牌证书。
- 创建一个名为
reset_root_keys
然后把它放在< VAR > /引导/ etc /。访问/键/目录中
. - 重置Artifactory服务。
重置令牌证书将有效地撤销已生成的所有令牌。如果要重置证书,但要维护以前创建的令牌,则需要复制旧的令牌crt
进入受信任目录:/var/etc/access/keys/trusted
.
HA中的证书-密钥对在现有HA集群中的传播
在高可用性集群中使用证书时,应使用private.key
而且root.key
自动传播,并在集群节点之间更新。
使用令牌
有几种方法可以使用访问令牌进行身份验证。
基本身份验证
可以使用访问令牌代替密码进行基本身份验证。当您需要一个只支持基本身份验证的客户端(比如某些依赖管理器)来访问Artifactory时,这可能很有用。在这种情况下,使用创建令牌时提供的相同用户名访问Artifactory是很重要的- d“用户名= <用户名>”
).
例如,要使用访问令牌作为密码来ping JFrog平台的URL,你可以使用:
curl -u: http://JFROG_PLATFORM_URL/router/api/v1/system/ping
授权标头
访问令牌可在授权标头中用作承载令牌。这对于使用Artifactory而不是凭据验证CI服务器特别有用,因为如果在中提供了组,则不需要在Artifactory中定义用户- d”member-of-groups: <集团> "
在该Artifactory实例中配置。因此,不需要为需要访问Artifactory的不同自动化工具管理虚构的用户。
例如,使用一个访问令牌作为承载令牌来ping Artifactory,你可以使用:
curl -H"授权:承载" http://JFROG_PLATFORM_URL/router/api/v1/system/ping
支持对不存在的用户进行认证
访问令牌的最大优点之一是,您不必在Artifactory中创建用户来使用它们。在创建令牌时,您可以指定一个不存在的用户名,Artifactory将创建一个临时用户,该用户只在令牌有效时存在。这在提供对不同工具的访问时非常有用,例如CI服务器协调构建,而不必管理假用户帐户。这种方法也更安全,因为您可以为外部工具运行的每个“作业”分配一个新的令牌。
仅限Artifactory管理员
注意,此特性仅适用于Artifactory管理员,因为非管理员用户只能以自己为Subject创建令牌。
生成到期令牌
重要的
创建令牌时,如果将令牌有效期设置为小于revocable-expiry-threshold
参数。访问YAML配置,
令牌将是不可撤销的。缺省情况下,revocable-expiry-threshold
参数设置为6小时。
例如,如果您设置的过期时间小于6小时,则令牌将不会过期可撤销的直到它自然失效。
在生成token时,可以通过设置token的过期时间来限制token的有效期。如果设置了,令牌将一直有效,直到过期时间过去。
您还可以通过将有效期设置为零来将令牌设置为不可过期的,在这种情况下,令牌将无限期有效,直到主动撤销为止。
此值通过使用“expires_in = < VALUE_IN_SECONDS >
参数时生成令牌(参见下面REST API部分中的示例)。如果不使用,默认值将是3600,这意味着您的令牌将在一小时内有效。
仅限Artifactory管理员
- 只有Artifactory管理员可以将令牌的有效期更改为任何值。
- 非管理员用户只能将令牌有效期设置为等于或小于管理员设置的最大允许值。
- 从版本7.21.1开始,可以通过设置
token.max-expiry
参数在$ JFROG_HOME / artifactory / var / etc / artifactory /access.config.yml
文件(p在7.21.1版本中,要设置的参数为artifactory.access.token.non.admin.max.expires.in). - 如果
token.max-expiry
等于0(这是默认值),则令牌有效期没有限制。但是,如果最大过期时间大于0,用户就不能创建不可过期的令牌。 - 的
token.max-expiry
参数的值必须大于token.default-expiry
参数值。
生成可刷新令牌
如上所述,可以通过设置令牌的过期时间来限制令牌的有效期。为了允许在令牌过期后扩展令牌的访问权限,您可以提供一个刷新令牌,它将生成一个具有与原始令牌相同权限的新令牌。这将令牌管理从其发行者手中解放出来,并将其委托给接收令牌的用户。
谁能刷新?
只有发出可刷新令牌的实例(或HA集群)才能实际刷新令牌。
禁用创建可刷新令牌的选项
从版本,7.21.1,一个管理员可以通过设置该参数禁用创建可刷新令牌的选项token.allow-refreshable
虚假的$
JFROG_HOME artifactory / var / etc / artifactory /access.config.yml
文件。
Token过期的宽限期
当一个可刷新的令牌过期时,JFrog Access为用户提供了一个宽限期,基本上扩展了刷新令牌的能力。这是通过使用参数来完成的token.refresh-expiry
在$
JFROG_HOME artifactory / var / etc / artifactory /access.config.yml
文件。默认设置为24小时。
限制
整合SCIM确保已创建令牌的外部用户如果已从外部身份验证服务器删除令牌,则无法刷新令牌。
但是,如果您的组织有不启用SCIM, aN已创建令牌的外部用户即使已被删除,仍然能够刷新它;因此,建议在您的系统中实现SCIM。
生成管理令牌
从Artifactory version 7.4提供。
通常,令牌的范围是通过指定令牌所在的组来定义的,但是,Artifactory管理员也可以使用管理权限创建令牌。这对于JFrog Mission Control和JFrog Xray来说很有用,因为这两个互补的应用程序都需要管理权限才能与Artifactory无缝地工作。有了这个功能,当Mission Control或Xray连接到Artifactory实例时,他们可以创建一个管理令牌并使用它进行身份验证,而不是使用带有用户名和密码的基本身份验证。
若要从管理模块创建管理令牌,请转到用户管理|访问令牌|生成管理员令牌.
上面屏幕上显示的服务仅是JFrog平台部署中可用的服务。
生成作用域令牌
Administration选项卡的User Management功能提供了用于管理的集中UI作用域的令牌,哪一个是安全访问令牌,提供有限且集中的权限。作用域令牌的范围从任何用户都可以为自己创建的标识令牌(参见身份标识),到提供管理员访问级别权限的令牌。
在政府Tab,转到用户管理|访问令牌.
您现在可以创建两种类型的令牌:Admin令牌(它提供一系列权限)或User令牌。
查看Token的作用域
从Artifactory 7.46.3版本开始,您可以在Access Tokens UI中看到一个令牌的作用域作为一个名为scope的列。
创建一个管理范围令牌
- 从Token范围字段中选择管理.
- 在User name字段中,输入Admin用户的名称。
- 在“服务”字段中,您可以选中“全部”复选框,也可以清除“全部”复选框,然后从“服务”字段中出现的列表中,选择要添加到该用户的令牌的服务。
- 在Expiration time字段中,设置令牌的过期时间(使用该字段中的一个选项或设置自定义过期时间(以小时为单位)。
- 点击生成生成令牌。
这将显示Generate Token窗口,其中包括用户名、范围、受众、过期、令牌ID和实际的令牌。 要复制令牌,请单击它旁边的复制图标或简单地单击复制.
重要的
出于安全原因,这里生成的令牌不会存储在JFrog平台中;因此,请确保在关闭此窗口之前复制了令牌。一旦关闭,令牌将不可用。
创建管理员作用域引用令牌
从Artifactory发行版7.38.4开始,您可以选择是生成一个扩展令牌(如上面屏幕所示),还是生成一个扩展令牌参考标记.参考令牌是一个“缩短的”128个字符的键,因此为较长的令牌提供了别名。
为了支持这个选项,生成作用域令牌UI包含了一个额外的创建参考令牌复选框。
- 若要创建引用令牌,请确认选中了复选框并单击生成.
这将显示Generate Token窗口,其中包括用户名、范围、受众、过期、令牌ID和完整的令牌和参考标记. 要复制完整令牌或引用令牌,请使用复制图标在令牌旁边。
重要的
出于安全原因,这里生成的令牌不会存储在JFrog平台中;因此,请确保在关闭此窗口之前复制了令牌。一旦关闭,令牌将不可用。
创建用户范围令牌
- 从Token范围字段中选择用户.
- 单击Users字段以显示Artifactory用户的下拉列表,并选择一个用户,或者在字段中键入用户名以定位该用户。
- 在“服务”字段中,您可以选中“全部”复选框,也可以清除“全部”复选框,然后从“服务”字段中出现的列表中,选择要添加到该用户的令牌的服务。
- 在Expiration time字段中,设置令牌的过期时间(使用该字段中的一个选项或设置自定义过期时间(以小时为单位)。
- 点击生成生成令牌。
这将显示令牌窗口,其中包括Artifactory用户的用户名、范围、受众、过期、令牌ID和实际令牌,您可以通过单击复制这些令牌复制.
生成配对令牌
关于配对令牌
可从Artifactory 7.29.7版本获得配对令牌通过在不同的JFrog微服务之间建立信任来管理连接。配对令牌是用于初始配对流的访问令牌。因为令牌是一个有限的访问令牌,所以它专门用于特定的任务并且寿命很短。一旦建立信任,服务就可以继续使用标准的基于令牌的身份验证进行通信。
配对令牌替换join.key
过去在JFrog平台中用于连接服务。这种类型的令牌仅设计用于链接交叉拓扑(即,在本地,而不是在JPD中)。
配对令牌为特定用途的用例提供配对。它们是可撤销的,并且期望最多使用一次(即,在第一次配对后撤销)。这些令牌的默认过期设置是5分钟。
- 令牌的主题与请求配对令牌的主体的主题相同
- 扩展中的基本URL是必须的
- 扩展中的交换URL是强制的(因为令牌是签名的,所以这个URL可以假定为受信任的)
- 配对URL是可选的,在需要建立双向信任时使用
主令牌
配对的结果是主令牌,这是一个访问令牌,它根据给定的用例授予请求服务对发出服务执行的所有操作。主令牌通常是一个强访问令牌,可以用于多个操作,并且通常是一个长寿命令牌。管理员用户可以通过撤销这个令牌来撤销信任。
支持的配对令牌
配对令牌使您能够在以下之间进行连接:
- 在你的JFrog平台部署(JPD) / edge和远程JFrog任务控制服务。令牌的主题与请求配对令牌的主体的主题相同。
- 在两个jpd(两个Artifactory实例)之间,将用于创建JFrog冷存储;在这种情况下,生成的配对令牌将用于API绑定过程。
配对令牌绑定JPD和任务控制微服务
- 在政府Tab,转到用户管理|接入令牌|配对令牌.
- 在生成配对令牌字段中,选择任务控制(适用于JPDs).
- 点击生成生成令牌。
这将显示令牌窗口,其中包括令牌的过期时间(以秒为单位,默认设置为300秒= 5分钟)、令牌ID和实际令牌,您可以通过单击复制令牌复制.
配对令牌来设置冷存储(使用API)
- 在政府Tab,转到用户管理|接入令牌|配对令牌.
- 在生成配对令牌字段中,选择冷藏.
- 点击生成生成令牌。
- 这将显示令牌窗口,其中包括令牌的过期时间(以秒为单位,默认设置为300秒= 5分钟)、令牌ID和实际令牌,您可以通过单击复制令牌复制.
- 接下来,使用上面生成的令牌并按照步骤操作使用api设置冷工件存储.
查看和撤销令牌
创建的任何令牌的到期时间大于revocable-expiry-threshold
参数可以使用撤销令牌的REST API端点或访问令牌页面。注意,您只能撤销发出令牌的实例(或集群)上的令牌,除非该实例是Access Federation设置的一部分(需要Enterprise+许可证)。
从7.21.1开始,访问令牌是有作用域的令牌。默认情况下总是提供对REST API的访问;此外,还可以指定令牌提供的组成员关系。管理员可以设置任何范围,而非管理员用户只能将范围设置为所属组的子集。看到访问令牌结构获取详细信息。
具有指定到期期限的令牌将在达到其到期期限时自动失效。
不可过期的令牌(即,是用它的expires_in
参数设置为0)必须主动撤销以终止其使用。
撤销一个访问令牌。
- 从政府模块,选择用户管理|访问令牌.
- 在列表中选择接入令牌,单击撤销.
信任圈(跨实例认证)
访问令牌通过“信任圈”支持跨实例身份验证,信任圈是通过在所有参与实例之间共享公共证书来建立的。从本质上讲,信任圈意味着服务将对所有受信任的证书验证访问令牌签名,包括由其他服务生成的证书,并将其设置为“受信任的”作为信任圈的一部分。
业务管理员负责确保所有参与的实例都配备了证书。这意味着任何实例都可以生成一个令牌,与信任圈内的任何其他实例一起使用。
为什么我需要一个信任圈?
当您有一系列需要使用一组凭证访问的jpd时,就需要一个信任圈。例如,需要从两个JPD实例上传和下载的单个构建代理。通过创建信任圈,可以确保一个JPD实例信任另一个实例的令牌。这是通过在圈内的所有实例之间共享公共令牌证书来实现的。
受信任的证书可以在服务器运行时加载和删除,不需要重新启动。
如何建立信任圈
为了在JFrog服务之间建立“信任圈”,您需要在服务之间交换公共令牌证书。
信任圈内的服务彼此拥有完全的管理特权。为了交换证书,需要将一个服务的根证书复制到另一个服务的根证书JFROG_HOME美元/ artifactory / var / etc /访问/键/信任
文件夹中。
服务根证书可以通过以下方式获取:
- 发现下
美元JFROG_HOME / artifactory / var / etc /访问/键/ root
(需要物理访问服务器) - 通过调用获取根证书REST API
的crt
将从目标的可信文件夹中消失,并将被放置在Artifactory数据库中。
可以在多个服务之间创建信任:您需要确保信任圈中的所有参与实例都配备了相关的公钥(根证书)。注意,信任可以是单向的,也可以是双向的。该服务监视可信公钥目录,并在需要验证令牌时重新加载密钥
重命名源服务的证书
由于可以在多个服务之间创建信任,因此应该使用有意义的名称重命名每个源服务的证书。例如,如果一个名为“us-east”的服务应该被另一个名为“us-west”的服务信任,那么美元JFROG_HOME / artifactory / var / etc /访问/键/ root
从美国东部
,应抄送至JFROG_HOME美元/ artifactory / var / etc /访问/键/相信/ us-east.crt
在美国西。
使用相同的Artifactory用户id和groupid
确保你给相同的Artifactory用户标识
而且groupid
到受信任文件夹中的根证书(美元ARTIFACTORY_HOME /访问/ etc /键/相信/ *
),与前一个文件夹中的其他文件(ARTIFACTORY_HOME /访问/ etc /键/美元
).
安全限制
为了使JFrog访问令牌尽可能安全,JFrog使用了一些预先配置的值,以确保令牌得到管理,并且只能用于正确的目的:
- 范围:如果令牌范围是一个用户或组,则必须确保该用户或组存在于信任圈内的所有服务器上。
- 可撤销:出于安全考虑,JFrog平台部署了默认配置,将每个令牌设置为可撤销。然而,可撤销的令牌不在一个信任的圈子里工作.这是因为可撤销令牌是针对Access数据库进行验证的;有了信任圈,每个实例都有自己的数据库。因此,如果在一个实例中创建的令牌不能针对另一个实例的数据库(即,系统将假定令牌已被撤销,身份验证将失败)。
- 令牌类型:信任圈中不支持以下类型的令牌:
- 在信任圈中不支持引用令牌(它们总是要求令牌位于实例的数据库中)。
- ui生成的令牌:通过用户配置文件页面创建的令牌是引用令牌,在信任圈中不受支持。
- 持续时间:由于受支持的令牌必须定义为不可撤销的,因此信任圈令牌的有效期必须小于
revocable-expiry-threshold
参数。access.config.yaml
(您可以在access.config.yaml中看到默认值)。注意,这个阈值有一个特殊值“-1”;设置后,所有有过期的令牌都是不可撤销的。这种设置在信任圈中使用更舒服,但不太安全(因为有效期可能设置为数年)。
限制
默认情况下,只有发出令牌的实例可以刷新令牌。有关跨服务同步令牌,请参见访问联合会.
REST API
访问令牌的所有管理都是通过REST API通过下面描述的端点完成的。
获取根证书
接收服务器的公共根证书。详细信息请参考JFrog Artifactory REST API文档获取根证书
创建令牌
创建访问令牌。详细信息请参考JFrog Artifactory REST API文档创建令牌,其中还包括可以分配给访问令牌的不同类型的作用域(例如,配对令牌等)。
刷新令牌
刷新访问令牌以延长其有效期。如果只提供访问令牌和刷新令牌(不提供其他参数),则使用此对进行身份验证。如果提供了用户名或任何其他参数,则请求必须通过授予管理权限的令牌进行身份验证。详细信息请参考JFrog Artifactory REST API文档刷新令牌.
撤销令牌
根据ID撤销访问令牌。详细信息请参考JFrog Artifactory REST API文档撤销令牌.
获取服务ID
提供Artifactory实例或集群的服务ID。详细信息请参考JFrog Artifactory REST API文档获取服务ID.