使用JFrog Access管理安全实体

双星安全的无名英雄
JFrog访问是管理所有JFrog服务的身份验证和授权的哨兵。Access与JFrog Artifactory一起打包和安装,通过确保只有授权用户才能访问它们来保证二进制文件的安全。然后,那些访问你的二进制文件的,只能做他们权限允许的事情。由于Access没有自己的UI,它是由Artifactory在幕后操作的,因此,它是二进制文件安全的无名英雄。
建立联系
Access要完成它为JFrog服务所做的工作,就需要连接到JFrog服务。在Artifactory的情况下,Access一起安装在同一个Tomcat下,Artifactory通过一个内部REST API与它通信。在JFrog x射线和JFrog任务控制的情况下,当你设置一个Artifactory为时,就会建立连接身份验证提供者.对于JFrog Distribution来说,连接是通过任务控制的身份验证提供者进行的。

基础知识:用户、组和权限
无论您是直接在Artifactory中创建用户和组,还是从外部身份验证服务器(如LDAP、SAML或Crowd)中导入用户和组,Access都是实际执行用户和组之间的关系以及分配给它们的权限的服务。例如,当用户试图登录到其中一个服务时,实际上是JFrog Access(而不是服务)确保用户正确注册。或者,当用户试图访问工件或对工件做一些事情时,access检查用户的权限,无论是显式授予的,还是通过组中的成员身份间接授予的,并确保允许用户执行该操作。
现在它开始变得很酷:访问令牌
访问令牌是另一种身份验证方法,可以用来代替用户和密码。使用访问令牌提供了一系列功能。
Cross-Instance身份验证
想象一下,开发人员Jack需要访问Artifactory的多个实例。例如,一个实例可能在开发期间使用,而另一个实例可能在QA或阶段期间使用。当使用用户/密码进行身份验证时,您需要在两个实例上为Jack创建一个用户,但是,使用访问令牌,身份验证就简化了。通过在一组Artifactory实例之间共享公共证书,您可以建立一个信任圈其中,由圈内任何成员发出的访问令牌,都可以被所有其他成员接受。因此,如果这两个Artifactory实例处于信任圈中,您只需要在其中一个实例上为Jack创建一个访问令牌,他可以使用该令牌访问另一个实例。
但是等等,还有更多。由于Artifactory被用作其他JFrog服务的身份验证提供者,那么Jack也可以使用相同的访问令牌来访问连接到信任圈内任何Artifactory实例的任何x射线、任务控制或分发服务。
非用户身份验证
但杰克不是唯一一个需要进入Artifactory的人。您的CI/CD服务器也是如此。您可以使用一个访问令牌来配置CI/CD服务器,该令牌可用于访问信任范围内的任何Artifactory实例。因此,例如,您的CI/CD服务器可以从一个Artifactory实例中提取依赖项,并将构建上传到另一个Artifactory实例中。

终端用户和CI/CD服务器都可以使用令牌来访问信任圈内的任何Artifactory服务。
基于时间的访问控制
因此,访问令牌是向用户和机器提供访问信任圈子内所有服务的好方法。现在,管理和监视拥有大量用户的组织已经很困难了,但是想象一下,尝试管理可能发给不同用户和机器的所有访问令牌。为了避免维护的噩梦,可以为访问令牌设置有效期,以限制用户或计算机可以使用它的时间。但是,如果希望委派对访问令牌的控制,还可以使其可刷新,这样受信任的用户不必在每次当前令牌过期时都请求新的令牌。
分配组范围
最后,访问令牌不必是“个人的”。您可以将组分配给一个访问令牌,该令牌将为其用户提供组访问特权。
访问联合:简化复杂的全球用户管理
虽然访问令牌非常适合为用户(和构建服务器)提供对不同JFrog服务的访问,但它们不能管理对系统的更改。例如,添加到一个服务上的新用户不能自动访问另一个服务。用户在一个服务上的权限更改不会反映在另一个并行服务上。随着企业规模的扩大和用户数量的增长,管理全球公司服务器上用户、组、访问令牌和权限之间的关系可能成为一项复杂且耗时的工作。访问联合使得管理这些安全实体变得简单且完全自动化。您可以将其视为访问令牌的跨实例身份验证功能,扩展到包括为该公司的全球JFrog服务设置的信任圈内的所有安全实体。从根本上说,Access Federation提供的是使用定义的信任圈自动同步对安全实体的更改。
使用访问YAML配置文件,您可以完全控制哪些安全是同步的,以及在哪个方向,使您能够为不同的用例设置不同的同步拓扑。假设有4个独立的团队在一个项目中工作,每个团队都使用自己的Artifactory服务。为了保持团队的同步,您需要对所有服务器上的所有成员提供平等的访问。您可以将其设置为全网格拓扑,以便对其中一台服务器的任何更改(例如,添加到团队的新用户、权限的更改或新组的形成)自动同步到所有其他服务器,因此每个人对所有服务器的访问保持相同。

另一个例子是维护灾难恢复的Artifactory实例。在下面的图表中,Full mesh 1和2,以及Central Access设置在一个Full mesh拓扑中,与上面描述的相同。但是现在,还有一个DR实例,它只能接收在任何其他服务上所做的更改。如果其他三台服务器中的任何一台宕机,DR实例可以完全投入运行,并且它已经完全配备了其余两个实例的完整且最新的安全配置。

访问联合会支持灾难恢复
保持二进制文件的安全性,确保只有经过身份验证并具有正确权限的用户才能访问它们,这不是在生产系统中开始的事情。这是左移文化的极端,将安全性转移到DevSecOps的核心。JFrog Access为您提供了确保二进制文件安全所需的所有功能,并且只根据您的访问策略公开,从创建它们的那一刻起,直到将它们部署到您的生产系统。
