使用Artifactoryx ?
JFrog Artifactoryx用户指南
有问题吗?想要报告问题?联系JFrog支持
访问服务
从Artifactory 5.4版本开始,访问令牌在一个名为access的新服务下进行管理,该服务在一个单独的WAR文件中实现,access.war
.此更改对访问令牌的使用方式没有影响,但是,Artifactory安装文件结构现在还包括在$ ARTIFACTORY_HOME / webapps
文件夹中。Artifactory通过HTTP与Access服务通信,并假设它使用“Access”的上下文路径运行在同一个Tomcat中.
新实现向后兼容旧令牌,因此您仍然可以使用旧版本生成的令牌在新版本中进行身份验证,但是不能使用新版本生成的令牌在旧版本中进行身份验证。
断变化:注意,该更改不向后兼容,因此从5.4及以上版本创建的令牌不能用于5.4之前版本的身份验证。这可能会影响信任圈,其中一些实例运行5.4以下的版本,而另一些实例运行5.4及以上版本。
访问业务日志
Artifactory访问服务使用Logback框架管理日志。活动根据类型记录在三个不同的日志文件中,这些文件可以在ARTIFACTORY_HOME /访问日志
文件夹中。
日志文件如下:
access.log |
这是包含Access服务器活动数据的主要Access服务日志文件 |
request.log |
传入请求的HTTP流量信息。其中大部分来自Artifactory |
audit.log |
服务执行的操作的审计。目前只记录成功的操作(例如,创建令牌,刷新令牌或撤销令牌) |
由于Access服务运行在与Artifactory相同的Tomcat下,因此它的日志(catalina.out。localhost等)包含Artifactory和Access的条目。
配置日志记录
Access服务的日志记录在美元/ etc / logback.xml ARTIFACTORY_HOME /访问
文件。
Cross-Instance身份验证
访问令牌通过在所有参与实例之间共享公共证书而建立的“信任圈”支持跨实例身份验证。由Artifactory管理员负责确保所有参与的实例都配备了证书。这意味着任何实例都可以生成一个令牌,与信任圈内的任何其他实例一起使用。当Artifactory实例接收到由签名令牌验证的REST API调用时,它将使用包含公钥的根证书来验证其颁发者是否在信任圈中。即使在运行时,Artifactory也能识别添加或删除的任何新证书。
限制
只有过期且可刷新的令牌才能在与创建它的实例不同的实例上用于身份验证。
只有发出令牌的实例才能刷新令牌。
设置私钥和根证书
由Artifactory管理员负责确保所有参与的实例都配备了公钥(根证书)。
Access监视包含受信任公钥的目录nio WatchService并在需要验证令牌时重新加载键。
所要做的就是把钥匙放在下面美元ARTIFACTORY_HOME /访问/ etc /键/信任.
访问主页布局(新条目以粗体显示):
(ACCESS_HOME美元)
|
+,等/
+ -键/
| - - - root
|——private.key
+--信任/
|--[名字].crt
|--[name2] .crt
|--[name3] .crt
+--...
Artifactory哈
对于Artifactory HA安装,根证书应该放在美元ARTIFACTORY_HOME /访问/ etc /键/信任
在集群的每个节点中。
这一过程通常取决于您是引导新实例还是为现有实例设置跨实例身份验证(直到版本5.9.0,在该版本中概述了上述说明)。
下面的部分描述了每种情况的步骤。
新实例
Artifactory Pro或OSS
- 启动信任范围内的第一个Artifactory实例(或HA安装的集群节点)。生成私钥和根证书,并保存在
$ ARTIFACTORY_HOME /访问/ etc /钥匙
. 将私钥和根证书文件复制到文件系统上所有其他实例/节点都可以访问的位置。
在引导之前,为每个其他实例/节点创建美元ARTIFACTORY_HOME / etc /访问文件夹并在其中创建一个名为
access.bootstrap.config
其内容如下:关键= /道路/ /私人。关键的crt = /道路/ / root
- 当每个实例/节点启动时,如果ARTIFACTORY_HOME /访问/ etc /美元
access.bootstrap.config
文件存在,则将私钥和根证书从指定位置复制到下的服务器主目录$ ARTIFACTORY_HOME /访问/ etc /钥匙。
Artifactory哈
对于Artifactory HA安装,可以找到私钥和根证书下$ ARTIFACTORY_HOME /访问/ etc /钥匙
在主节点。
现有的实例
键旋转将使任何发出的访问令牌无效
下面的过程将创建新的密钥对,从而使当前实例发出的任何现有访问令牌无效。
先做这个!
将私钥和根证书文件从您希望当前实例加入其信任圈的Artifactory实例复制到文件系统上当前实例可访问的位置。
在引导实例之前:
对于Artifactory 5.6.0以下版本:
- 删除现有私钥和根证书文件(
private.key
而且crt
)从美元ARTIFACTORY_HOME / etc /访问
文件夹中。 创建ARTIFACTORY_HOME /访问/ etc /美元
access.bootstrap.config
其内容如下:关键= /道路/ /私人。关键的crt = /道路/ / root
添加以下JVM属性(在JAVA_OPTIONS环境变量)到
ARTIFACTORY_HOME美元/bin/artifactory。默认值:
-Djfrog.access.force.replace.existing.root.keys = true
启动实例准备添加到您的信任圈并验证artifact .log文件显示以下条目:
******************************************************************* *** 迫使替代根私钥和证书 *** *******************************************************************
删除添加到的JVM属性ARTIFACTORY_HOME美元/bin/artifactory.default在第三步。
对于5.6.0到5.9.0之间的Artifactory版本:
- 删除现有私钥和根证书文件(
private.key
而且crt
)从美元ARTIFACTORY_HOME / etc /访问
文件夹中。 创建ARTIFACTORY_HOME /访问/ etc /美元
access.bootstrap.config
其内容如下:关键= /道路/ /私人。关键的crt = /道路/ / root
- 保存配置描述符从Artifactory UI或使用常规配置并将其保存在
ARTIFACTORY_HOME / etc /美元artifactory.config.import.xml。
完全移除adminToken标签和它的值从上面保存的配置描述符文件。
验证上面文件的权限设置是否正确重启Artifactory.
验证
美元ARTIFACTORY_HOME /日志/ artifactory.log
或/和$ ARTIFACTORY_HOME / /日志/ access.log访问
文件显示如下条目:**************************************************************** *** 根私人的跳过验证指纹 *** **************************************************************** *** 私钥指纹将会被覆盖掉 **************** ****************************************************************
的$ ARTIFACTORY_HOME / /日志/ access.log访问会显示下面的条目吗:
[ACCESS BOOTSTRAP]启动JFrog ACCESS BOOTSTRAP…[ACCESS BOOTSTRAP]复制BOOTSTRAP配置提供的私钥和根证书文件。[ACCESS BOOTSTRAP]正在更新服务器'5d2f9c44-6bff-4723-80e2-45835965d76c'私钥指纹到:2212e73eeb3b4ee604f80045d0028473293f54ba05851ea6a6cbb34fecad2a2b [ACCESS BOOTSTRAP] JFrog ACCESS BOOTSTRAP完成。
已存在HA集群中的对端传播
对于高可用性集群,私有。键和根。键会自动传播,并根据在集群共享数据库中保存的内容进行更新。
这些步骤应该被设置为主节点,它还将在其节点中打印以下日志条目美元ARTIFACTORY_HOME /日志/ artifactory.log:
成功将更改发布到另一个访问peer [http://: /access]
使用令牌
有几种方法可以使用访问令牌进行身份验证。
基本身份验证
可以使用访问令牌代替密码进行基本身份验证。当您需要一个只支持基本身份验证的客户端(比如某些依赖管理器)来访问Artifactory时,这可能很有用。在这种情况下,使用创建令牌时提供的相同用户名访问Artifactory是很重要的- d“用户名= <用户名>”
).
例如,要使用访问令牌作为ping Artifactory的密码,您可以使用:
curl -u: http://ARTIFACTORY_URL/api/system/ping
授权标头
访问令牌可在授权标头中用作承载令牌。这对于使用Artifactory而不是凭据验证CI服务器特别有用,因为如果在中提供了组,则不需要在Artifactory中定义用户- d”member-of-groups: <集团> "
在该Artifactory实例中配置。因此,不需要为需要访问Artifactory的不同自动化工具管理虚构的用户。
例如,使用一个访问令牌作为承载令牌来ping Artifactory,你可以使用:
curl -H"授权:承载" http://ARTIFACTORY_URL/api/system/ping
支持对不存在的用户进行认证
访问令牌的最大优点之一是,您不必在Artifactory中创建用户来使用它们。在创建令牌时,您可以指定一个不存在的用户名,Artifactory将创建一个临时用户,该用户只在令牌有效时存在。这对于访问不同的工具很有用,比如CI服务器协调构建,而不必管理假用户帐户。这种方法也更安全,因为您可以为外部工具运行的每个“作业”分配一个新的令牌。
仅限Artifactory管理员
注意,此特性仅适用于Artifactory管理员,因为非管理员用户只能以自己作为Subject创建令牌。
生成到期令牌
过期令牌不能撤销
具有指定到期期限的令牌将在达到其到期期限时自动失效。
在生成token时,可以通过设置token的过期时间来限制token的有效期。如果设置了,令牌将一直有效,直到过期时间过去。
您可以通过将有效期设置为零来将令牌设置为不可过期的,在这种情况下,令牌将无限期有效,直到主动撤销为止。
此值通过使用“生成令牌时的&expires_in=
仅限Artifactory管理员
注意,只有Artifactory管理员可以将令牌的有效期更改为任何值。非admin用户只能将令牌有效期设置为等于或小于默认值3600秒。
生成可刷新令牌
如上所述,可以通过设置令牌的过期时间来限制令牌的有效期。为了允许在令牌过期后扩展令牌的访问权限,您可以提供一个刷新令牌,它将生成一个具有与原始令牌相同权限的新令牌。这将令牌管理从其发行者手中解放出来,并将其委托给接收令牌的用户。
谁能刷新?
只有发出可刷新令牌的实例(或HA集群)才能实际刷新令牌。
限制
创建了令牌的外部用户仍然能够刷新令牌,即使他已从外部身份验证服务器中删除。
生成管理令牌
通常,令牌的范围是通过指定令牌所在的组来定义的,但是,Artifactory管理员也可以使用管理权限创建令牌。这对于JFrog Mission Control和JFrog Xray来说很有用,因为这两个互补的应用程序都需要管理权限才能与Artifactory无缝地工作。有了这个功能,当Mission Control或Xray连接到Artifactory实例时,他们可以创建一个管理令牌并使用它进行身份验证,而不是使用带有用户名和密码的基本身份验证。
撤销令牌
任何可刷新的或不可过期的令牌都可以被撤销,但只能由发出令牌的实例(或集群)撤销。具有指定到期期限的令牌将在达到其到期期限时自动失效。不可过期的记号(expires_in
参数设置为0)必须主动撤销以终止其使用。如上所述,要支持跨站点身份验证,令牌必须既可过期又可刷新。注意,这种令牌不能被撤销。终止其使用的唯一方法是撤销其刷新令牌,这样它的使用将在下一次过期时终止。
“撤销”跨实例身份验证令牌
要终止用于跨实例身份验证的令牌的使用,需要撤销其刷新令牌。
REST API
访问令牌的所有管理都是通过REST API通过下面描述的端点完成的。
创建令牌
创建访问令牌。
有关详细信息,请参阅REST API文档创建令牌.
刷新令牌
刷新访问令牌以延长其有效期。如果只提供访问令牌和刷新令牌(不提供其他参数),则使用此对进行身份验证。如果提供了用户名或任何其他参数,则请求必须通过授予管理权限的令牌进行身份验证。
有关详细信息,请参阅REST API文档刷新令牌.
撤销令牌
撤销访问令牌
有关详细信息,请参阅REST API文档撤销令牌.
获取服务ID
提供Artifactory实例或集群的服务ID
有关详细信息,请参阅REST API文档获取服务ID.
用户界面
管理用户可以查看所有已创建的访问令牌的详细信息管理模块下安全|访问令牌.
访问令牌页面允许您查看,撤销,搜索主题和过滤器只查看到期令牌。
额外的功能,如创建新的令牌,是通过REST API.