Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证

目录

  • 1. Harbor简介
  • 2. Harbor的安装
      • 2.1 安装docker
      • 2.2 创建证书和秘钥
      • 2.3 设置加密
      • 2.4 修改配置文件并更新
      • 2.5 浏览器添加证书,访问主机IP
  • 3. 远程上传镜像到私有仓库
  • 5. 配置镜像加速器
  • 6. Harbor仓库镜像漏洞扫描和信任认证
      • 6.1 Registry
      • 6.2 新建harbor仓库
      • 6.3 镜像漏洞扫描
      • 6.4 镜像信任

1. Harbor简介

Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Register)
       来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。
       
它提供了管理图形界面,基于角色的访问控制(Role Based Access Control),镜像远程复制(同步),AD/LDAP集成、
       以及审计日志等企业用户需求的功能,同时还原生支持中文。
       
基于策略的Docker镜像复制功能,可在不同的数据中心、不同的运行环境之间同步镜像,
       并提供友好的管理界面,大大简化了实际运维中的镜像管理工作
Docker运行中使用的默认仓库是 Docker Hub 公共仓库。
docker hub是docker公司维护的公共仓库,用户可以免费使用,也可以购买私有仓库

2. Harbor的安装

安装之前:
1.安装docker-compose、docker以及python2.7以上还有openssl
rhel7.6操作系统自带了python和openssl
2.首先在https://hub.docker.com/网站注册一个账号
在docker hub上新建一个公共仓库

2.1 安装docker

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第1张图片

  • 启动docker
[root@server1 ~]# systemctl enable --now docker  
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
  • 解压
[root@server1 ~]# tar zxf harbor-offline-installer-v1.10.1.tgz 
[root@server1 ~]# ls
anaconda-ks.cfg  harbor  harbor-offline-installer-v1.10.1.tgz
[root@server1 ~]# cd harbor/
[root@server1 harbor]# ls
common.sh  harbor.v1.10.1.tar.gz  harbor.yml  install.sh  LICENSE  prepare
  • 编辑配置文件
 vim harbor.yml 
5    hostname: reg.westos.org
15   port: 443
17   certificate: /your/certificate/path
18   private_key: /your/private/key/path

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第2张图片

  • 运行docker-compose

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第3张图片

  • 解析
[root@server1 ~]# cat  /etc/hosts  添加解析
172.25.254.5 server1 reg.westos.org 
  • 运行

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第4张图片
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第5张图片

2.2 创建证书和秘钥

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第6张图片

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第7张图片

[root@server1 certs]# ls
westos.org.crt  westos.org.key

2.3 设置加密

  • vim /root/harbor/harbor.ymlHarbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第8张图片

2.4 修改配置文件并更新

[root@server1 harbor]# ls
common  common.sh  docker-compose.yml  harbor.v1.10.1.tar.gz  harbor.yml  install.sh  LICENSE  prepare
[root@server1 harbor]# ./prepare    清除原先配置
prepare base dir is set to /root/harbor
Clearing the configuration file: /config/log/logrotate.conf
Clearing the configuration file: /config/log/rsyslog_docker.conf
Clearing the configuration file: /config/nginx/nginx.conf
Clearing the configuration file: /config/core/env
Clearing the configuration file: /config/core/app.conf
Clearing the configuration file: /config/registry/config.yml
Clearing the configuration file: /config/registry/root.crt
................
[root@server1 harbor]# ./install.sh 再次启动
[root@server2harbor]# netstat -tnpl   443端口已经打开

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第9张图片

2.5 浏览器添加证书,访问主机IP

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第10张图片

3. 远程上传镜像到私有仓库

  • 添加解析
    vim /etc/hosts
    172.25.254.1 server1 reg.westos.org

  • 上传证书到新建的目录,并且重名为ca.crt此路径为默认设置,不需要重启docker服务
    mkdir -p /etc/docker/certs.d/reg.westos.org 创建目录注意域名
    scp westos.org.crt server6:/etc/docker/certs.d/reg.westos.org/ca.crt

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第11张图片
在这里插入图片描述
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第12张图片

  • 注意:
    下载镜像(不需要做认证)
    docker pull reg.westos.org/library/nginx
    Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第13张图片
  • 输入主机IP查看镜像已经上传
    Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第14张图片

5. 配置镜像加速器

从docker hub上下载镜像的速度太慢,需要配置镜像加速器,这里以阿里云为例:(需要提前注册阿里云帐号)
配置docker daemon文件
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第15张图片
systemctl restart docker 重启服务

[root@server5 docker]# docker rmi nginx  删除镜像
Untagged: nginx:latest
[root@server5 docker]# docker rmi reg.westos.org/library/nginx:latest 
[root@server5 docker]# docker images   查看
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@server5 ~]# docker pull nginx  设置完镜像加速器直接拉取镜像不需要指定一长串路径 

在这里插入图片描述

  • 测试镜像加速器
  • 在server1上传game2048镜像

上传镜像需要认证:server1创建证书存放目录

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第16张图片

[root@server1 reg.westos.org]# docker login reg.westos.org  认证登录
[root@server1 ~]# docker load -i game2048.tar   导入镜像
Loaded image: game2048:latest
[root@server1 ~]# docker push reg.westos.org/library/game2048  上传镜像指明仓库路径

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第17张图片
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第18张图片

  • server5拉取game2048
    Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第19张图片
    拉取地址是在私有仓库拉取的

  • 私有仓库没有镜像就要去官网拉取,但是必须联网

6. Harbor仓库镜像漏洞扫描和信任认证

6.1 Registry

index服务主要提供镜像索引以及用户认证的功能。
当下载一个镜像的时候,首先会去index服务上做认证,然后查找镜像所在的registry的地址并放回给docker客户端,docker客户端再从registry下载镜像,
在下载过程中
registry会去index校验客户端token的合法性,不同镜像可以保存在不同的registry服务上,其索引信息都放在index服务上。

Docker Registry有三个角色,分别是index、registry和registry client。
index: 负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。
registry:镜像和图表的仓库它不具有本地数据库以及不提供用户认证,通过Index Auth service的Token的方式进行认证。
Registry Client: Docker充当registry客户端来维护推送和拉取,以及客户端的授权。

6.2 新建harbor仓库

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第20张图片
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第21张图片
开发人员可以上镜像但是不能管理删除
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第22张图片

6.3 镜像漏洞扫描

Harbor与Clair集成,添加漏洞扫描功能。Clair是coreos开源的容器漏洞扫描工具,在容器逐渐普及的今天,容器镜像安全问题日益严重。Clair是目前少数的开源安全扫描。
默认在运行harbor时漏洞扫描和信任认证功能是没有开启的,需要重新开启并添加参数

  • 增加dockhub一些组件Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第23张图片
    Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第24张图片
  • 重新登录
    Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第25张图片
    打开自动扫描器
    Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第26张图片
[root@server1 ~]# mkdir -p /etc/docker/certs.d/reg.westos.org/  创建认证目录
[root@server1 ~]# scp /data/certs/westos.org.crt  /etc/docker/certs.d/reg.westos.org/ca.crt  获取再认证文件

在这里插入图片描述
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第27张图片
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第28张图片

6.4 镜像信任

Notary是Docker镜像的签名工具,用来保证镜像在pull,push和传输过程中的一致性和完整性,避免中间人攻击,避免非法的镜像更新和运行。
镜像信任功能能够保证镜像的安全,只有打了信任标签的镜像才能被拉取
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第29张图片

[root@server1 ~]# docker pull reg.westos.org/library/nginx  不用认证登录 是公开的
Using default tag: latest
Error response from daemon: unknown: The image is not signed in Notary.
图像没有在公证中签名
  • 镜像签名:
    https://goharbor.io/docs/1.10/working-with-projects/workingwith-images/pulling-pushing-images/

  • 部署根证书
    Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第30张图片

  • 启用docker内容信任

 [root@server1 reg.westos.org:4443]#  export DOCKER_CONTENT_TRUST=1
 [root@server1 reg.westos.org:4443]#  export DOCKER_CONTENT_TRUST_SERVER=https://reg.westos.org:4443

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第31张图片
在这里插入图片描述
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第32张图片
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第33张图片
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第34张图片
有签名的镜像不可以随意删除

  • 其他已认证的主机可以拉取有签名的镜像
    在这里插入图片描述
  • 删除签名
docker trust inspect  reg.westos.org/westos/myapp:v1 查看签名信息
docker trust revoke reg.westos.org/westos/myapp:v1   删除签名信息

Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第35张图片
在这里插入图片描述
Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证_第36张图片

你可能感兴趣的:(Harbor仓库 - 安装,远程终端登录,镜像漏洞扫描和信任认证)