Harbor简单使用手册

本章将会介绍一下Harbor的基本使用, 主要包括以下方面的内容:

1. 基于角色的访问控制

2. 用户账户(User Account)

3. Harbor工程管理

4. 管理工程中的用户成员

5. 复制镜像

5.1 创建复制规则

5.2 列出和停止replication jobs

5.3 手动启动replication进程

5.4 删除replication rule

5.5 查询工程及repositories

6. Administrator Options

    ○ 6.1 用户管理

    ○ 6.2 仓库管理(Managing endpoint)

    ○ 6.3 复制管理(Managing replication)

    ○ 6.4 认证管理(Managing authentication)

    ○ 6.5 工程创建管理(Managing project creation)

    ○ 6.6 用户自注册管理(Managing self-registration)

    ○ 6.7 邮箱设置管理

7. 为Harbor添加内容扫描

    ○ 7.1 重新生成配置,开启内容扫描

    ○ 7.2 Web端内容扫描使用与设置

8. 配置Harbor内容签名(该小节内容,没做出来,过程摘抄原文

    ○ 8.1 配置签名

    ○ 8.2 删除签名镜像

1. 基于角色的访问控制

Harbor提供了基于角色的访问控制(Role Based Access Control, RBAC):

docker_harbor_rbac.png

Harbor通过工程(projects)的方式来管理镜像(images)。在添加用户到工程中时,可以是如下三种角色中的一种:

  • Guest: 指定工程(project)中的Guest用户只有只读访问权限

  • Developer: 工程中的Developer用户具有读写访问权限

  • ProjectAdmin: 当创建一个新的工程时,你就会被默认指定为该工程的ProjectAdmin角色。除了具有读写权限之外,ProjectAdmin还有一些管理特权,例如向该工程添加/移除成员、启动一个vulnerability扫描

另外除了这上面这三种角色,还有两个系统层面的角色:

  • SysAdmin: SysAdmin角色的用户具有最高管理权限。除了上面提到的一些权限之外,SysAdmin用户可以列出所有的工程(projects); 将一个普通用户设置为管理员; 删除用户; 针对所有镜像设置vulnerability扫描策略。公有工程library也是由系统管理员所拥有。

  • Anonymous: 当一个用户并没有登录的时候,该用户会被认为是一个匿名用户。一个匿名用户并没有访问私有工程(private project)的权限, 而对于公有工程(public project)拥有只读访问权限。

视频示例: Tencent Video

2. 用户账户(User Account)

Harbor支持两种身份验证方式:

  • Database(db_auth): 这种情况下,所有用户被存放在一个本地数据库

在这种模式下,一个用户可以在Harbor系统中进行注册。如果要禁止自行注册功能,在初始化配置时请参看installation guide; 或者是在Administraor Options中禁止该特性。当self-registration被禁止后,系统管理员可以添加用户到Harbor中。

当注册或添加一个新的用户到Harbor中时,Harbor系统中的用户名、email必须是唯一的。密码至少要有8个字符长度,并且至少要包含一个大写字母(uppercase letter)、一个小写字母(lowercase letter)以及一个数字(numeric character)

当你忘记密码的时候,你可以按如下的步骤来重设密码:

1) 在注册页面点击"Forgot Password" 链接

2) 输入你注册时所用的邮箱地址, 然后Harbor系统会发送一封邮件给你来进行密码重设

3) 在收到邮件之后,单击邮件中给出的链接地址,然后会跳转到一个密码重设的Web页面

4) 输入新的密码并单击"Save"按钮
  • LDAP/Active Directory(ldap_auth): 在这种认证模式下,用户的credentials都被存放在外部的LDAP或AD服务器中,用户在那边完成认证后可以直接登录到Harbor系统。

当一个LDAP/AD用户通过usernamepassword的方式登录进系统时,Harbor会用LDAP Search DNLDAP Search Password绑定LDAP/AD服务器(请参看installation guide)。假如成功的话,Harbor会在LDAP的LDAP Base DN目录及其子目录来查询该用户。通过LDAP UID指定的一些属性(比如: uid、cn)会与username一起共同来匹配一个用户。假如被成功匹配,用户的密码会通过一个发送到LDAP/AD服务器的bind request所验证。假如LDAP/AD服务器使用自签名证书(self-signed certificate)或者不受信任的证书的话,请不要检查LDAP Verify Cert

在LDAP/AD认证模式下,不支持self-registration、删除用户、修改密码、重设密码等功能,这是因为用户是由LDAP/AD系统所管理.

3. Harbor工程管理

Harbor中的一个工程包含了一个应用程序所需要的所有repositories。在工程创建之前,并不允许推送镜像到Harbor中。Harbor对于project采用基于角色的访问控制。在Harbor中projects有两种类型:

  • Public: 所有的用户都具有读取public project的权限, 其主要是为了方便你分享一些repositories

  • Private: 一个私有project只能被特定用户以适当的权限进行访问

在登录之后,你就可以创建一个工程(project)。默认情况下,创建的工程都是私有的,你可以通过在创建时选中Access Level复选框来使创建的工程变为public的:

harbor_create_project.png

在工程被创建完成之后,你可以通过导航标签浏览repositoriesmemberslogs,replication以及configuration:

harbor_browse_project.png

你可以通过单击Logs选项卡来查看所有的日志。你也可以使用usernameoperations以及Advanced Search中的日期来过滤日志信息:

log_search_advanced.png

可以通过单击Configuration选项卡设置工程相关属性:

  • 选中Public复选框,你就可以将该工程下的所有repositories设置为公有访问权限

  • 通过使能Enable content trust复选框来阻止从工程拉取未被登记的镜像

  • 通过选择Prevent vulnerable images from running复选框和改变vulnerabilities的安全级别,以阻止vulnerable镜像被拉取。假如一个镜像的安全级别高于大于等于当前所设置的级别的话,Image将不能够被拉取。

  • 为了激活对push到工程中的新镜像进行vulnerability扫描,可以选中Automatically scan images复选框

harbor_project_config.png

4. 管理工程中的用户成员

1) 添加成员

你可以向一个已存在的工程添加项目成员,并为其指定相应的角色。在LDAP/AD认证模式下,你也可以添加一个LDAP/AD用户使其成为工程中的一员:

new_add_member.png

2) 更新及移除成员

可以批量选中工程中的成员,然后修改他们的角色; 也可以删除某些成员:

harbor_update_member.png

5. 复制镜像

镜像复制被用于从一个Harbor实例向另一个Harbor实例复制repositories。

该功能是面向工程的(project-oriented), 而一旦系统管理员为该工程设置了相应的规则,当触发条件被触发的话该工程下所有匹配相应规则的repositories都会被复制到远程仓库中。 每一个repository都会启动一个job来进行复制。假如该工程在远程镜像仓库中并不存在,则会自动的创建出一个新的工程。但是假如该工程已经存在并且被用户配置为没有写权限的话,则这个同步过程会失败。这里注意:项目成员信息将不会被复制

根据不同的网络状况,这个复制过程可能会有一定的延迟。假若是因为网络的原因导致镜像同步失败,则在几分钟之后Harbor会尝试再进行同步(该同步过程会一直进行,直到网络恢复,同步成功)

注意: Harbor 0.35版本之前和之后的不同实例不能进行相互同步。

    5.1 创建复制规则

可以通过创建规则来配置复制策略。点击Administration->Replications页面的NEW REPLICATION RULE按钮,然后填写一些必须的字段。你可以根据不同的需要选择不同的Image filters和trigger mode。假如当前并没有可用的远程registry,则你需要创建一个远程registry。然后单击SAVE按钮为指定的工程创建复制规则。假如勾选了Replicate existing images immediately复选框,则该工程下已存在的镜像将会马上复制到远程镜像仓库。

Image filter

对镜像我们支持两种不同的image filter:

  • Repository: 复制时会根据镜像名称的repository部分来进行

  • Tag: 复制时会根据镜像名称的标签(tag)部分来进行

在过滤器中支持两种不同的过滤匹配模式:

  • *: 匹配除/之外的任何字符

  • ?: 匹配除/之外的任何单个字符

Trigger mode

  • Manual: 当需要的时候,通过手工方式来触发repositories的复制。 Note: 对镜像的删除操作并不会被复制

  • Immediate: 当有一个新的repository被push到工程中时,其就会被马上复制到远程registry。假如还勾选了Delete remote images when locally deleted复选框,则在本地镜像被删除时也会马上复制到远程registry。

  • Scheduled: 每天或者每周复制repositories。Note: 对镜像的删除操作并不会被复制。

harbor_create_rule.png

    5.2 列出和停止replication jobs

选中一个rule,则属于该规则的所有jobs都会被列出。一个job代表复制repository到远程registry的一个工作进程。可以单击STOP JOBS,则这个rule规则下的所有处于pending and retrying job将会被马上停止, 而处于running工作状态的job会在下一个checkpoint被取消。

list_stop_jobs.png

    5.3 手动启动replication进程

选中一个复制规则,然后点击REPLICATE按钮, 则该工程下匹配相应规则的镜像将会被马上复制到远程registry。假设当前已经有匹配该规则的处于pending/running状态的job,则新的复制将不会被启动。

harbor_start_replicate.png

    5.4 删除replication rule

选中一个replication rule,然后单击DELETE按钮来将其删除。只有那些没有工作任务的rule会被删除(如果一个rule下有处于pending/running/retrying状态的job,则该rule不能被删除)

harbor_delete_rule.png

系统管理员也可以在Projects视图下,选中Replication标签来为来为指定的project设置复制规则。而工程管理员(Project Manager,请参看上面的RBAC)只有只读访问权限:

rule_under_project_view.png

    5.5 查询工程及repositories

在页面顶部输入搜索关键字,然后点击搜索就可以查询出所有匹配的projects以及repositories。这些搜索结果包含你有权限访问的public及private repositories。

harbor_new_search.png

6. Administrator Options

    6.1 用户管理

Administrator可以将一个或多个普通的用户设置为administrator角色。也可以进行用户的删除(注意: 只有在数据库认证模式下,才支持删除用户):

new_set_admin_remove_user.png

    6.2 仓库管理(Managing endpoint)

Administration->Registries项下,你可以列出、添加、修改或者删除远程的endpoint。只有那些没有被任何rules所引用的endpoint才能被删除:

harbor_manage_endpoint.png

    6.3 复制管理(Managing replication)

Administration->Replications项下,你可以添加、删除、或修改replication rules:

harbor_manage_replication.png

    6.4 认证管理(Managing authentication)

在没有添加任何用户之前,你可以修改认证模式(Database模式或者LDAP模式), 当Harbor系统中已经有至少一个用户之后(出admin用户外),将不能够修改认证模式:

harbor_new_auth.png

当使用LDAP模式的时候,用户的自注册功能会被禁止。LDAP服务器的相关参数必须要被填写。更多信息,请参看User account.

harbor_ldap_auth.png

    6.5 工程创建管理(Managing project creation)

可以使用Project Creation下拉菜单来设置哪些用户可以创建工程。选择Everyone的话,则允许所有的用户来创建工程。如果选择Admin Only,则只允许拥有Administrator角色的用户创建工程:

new_proj_create.png

    6.6 用户自注册管理(Managing self-registration)

你可以管理是否允许用户自己注册一个新的账户。该选项在使用LDAP认证的方式下将不可用。

new_self_reg.png

    6.7 邮箱设置管理

你可以改变Harbor的邮箱设置,该邮箱服务器被用于发送响应给重置密码的用户。

new_config_email.png

[参看]

  1. Harbor User Guide

7. 为Harbor添加内容扫描

    7.1 重新生成配置,开启内容扫描

暂停之前的容器,并清理配置文件:

    docker-compose stop
    ./prepare

    加上内容信任,扫描器和helm仓库重新安装:

    ./install.sh --with-notary --with-clair --with-chartmuseum

    (请使用./install.sh --help 查看相关附加参数,我使用的最新版本,clair已经被弃用了!!!)

    image.png

    根据./install.sh --help 查看相关附加参数,新命令应该是:

    # ./install.sh --with-notary --with-trivy --with-chartmuseum

    运行后,会删除旧的容器,生成新的容器。如下图所示:

    image.png

        7.2 Web端内容扫描使用与设置

    刷新网页端可以看到多了一些配置:

    image.png可以看到以前上传的镜像都是没有经过扫描的,可以对已经上传的镜像进行扫描:

    image.png

    勾选docker,点击扫描就可以开始扫描了,扫描之后截图如下:image.png

    如果docker存在漏洞会有提示,如图:image.png

    也可以配置镜像上传的时候自动扫描:

    image.png

    8. 配置Harbor内容签名该小节内容,没做出来,过程摘抄原文

        8.1 配置签名

    签名属于内容信任,没有签名的内容可以选择不部署,从上面图中可以看到刚上传的内容是没有签名的。

    内容信任的服务端口是4443,接下来就进行harbor内容信任的配置:

    勾选相关选项:image.png

    在客户端将证书放在指定位置并打开内容信任功能:

    # mkdir -p tls/192.168.3.71:4443/

    # cd  tls/192.168.3.71\:4443/

    # cp /etc/docker/certs.d/192.168.3.71/192.168.3.71.crt  .

    # export DOCKER_CONTENT_TRUST=1

    # export DOCKER_CONTENT_TRUST_SERVER=https://192.168.3.71:4443

    服务端查看端口状态:(4443端口是否监听)
    image.png

    测试上传
    注意:签名与tag中的v1绑定,上传时必须指定tag中版本,要不然会跳过签名。

    watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjAwNjg4Mg (1).png

    刷新页面可以发现,新上传的镜像既进行了内容扫描又进行了内容签名:

    watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjAwNjg4Mg (3).png

    • 之后上传时每次都需要输入根密钥和仓库密钥,当tag不同时仅需要输入仓库密钥。
      打开项目内容信任功能,则不允许没有签名的镜像上传下载。

        8.2 删除签名镜像

    • 已签名的镜像是不能删除的,直接删除会报错:

    watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjAwNjg4Mg (4).png

    如果需要删除则需要先删除签名:

    ##查看签名

    docker trust inspect

    ##删除签名

    docker trust revoke

    1.png

    删除签名后,可以正常删除镜像:

    watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjAwNjg4Mg (6).png

    参考文献:

    Harbor简单使用:https://blog.csdn.net/weixin_42006882/article/details/107070609

    Harbor使用手册:https://ivanzz1001.github.io/records/post/docker/2018/04/11/docker-harbor-uage

    版权声明:
    作者:WaterBear
    链接:https://l-t.top/2082.html
    来源:雷霆运维
    文章版权归作者所有,未经允许请勿转载。

    THE END
    分享
    二维码
    < <上一篇
    下一篇>>
    文章目录
    关闭
    目 录