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