题图摄于圣安东尼奥
注:微信公众号不按照时间排序,请关注“亨利笔记”,并加星标以置顶,以免错过更新。
(本文作者何威威系Harbor开源项目贡献者,本文节选自《Harbor权威指南》一书。)
《Harbor权威指南》目前京东优惠中,点击下图直接购买。
访问控制是 Harbor 系统数据安全的一个基本组成部分,定义了哪些用户可以访问和使用 Harbor 里的项目(project)、项目成员、Repository 仓库、Artifact 等资源。通过身份认证和授权,访问控制策略可以确保用户身份真实和拥有访问 Harbor 资源的相应权限。在大多数生产环境下,访问控制都是运维中需要关注的问题。
1. 概述
认证与授权
认证(Authentication)确定访问者的身份,目前Harbor支持本地数据库、LDAP、OIDC 等认证模式,可在“系统管理”→“配置管理”→“认证模式”里进行配置。在本地数据库认证模式下,用户信息都被存储在本地数据库中,Harbor 系统管理员可以管理用户的各种信息。在 LDAP 和 OIDC 认证模式下,用户信息和密码都被存储在 Harbor 之外的其他系统中,在用户登录后,Harbor 会在本地数据库中创建一个对应的用户账户,并在用户每次登录后都更新对应用户的账户信息。
授权(Authorization)决定访问者的权限,目前 Harbor 基于 RBAC 模型进行权限控制。Harbor 中的角色有三大类型:系统管理员、项目成员和匿名用户。系统管理员可以访问 Harbor 系统中的所有资源,项目成员按照不同的角色可以访问项目中的不同资源,匿名用户仅可以访问系统中公开项目的某些资源。
资源隔离
Harbor 系统中的资源分为两类:一类是仅系统管理员可以访问和使用的;另一类是基于项目来管理的,供普通用户访问和使用。Harbor 的系统管理员对两类资源均可访问。
仅系统管理员可以访问的资源包括用户、Registry 仓库、复制(Replication)、标签、项目定额、审查服务、垃圾回收和系统配置管理。
基于项目来管理的资源包括项目概要、Artifact仓库、Helm Charts、项目成员、标签、扫描器、Artifact(Tag)保留、不可变Artifact(Tag)、机器人账户、Webhook、日志、项目配置管理。(本文为公众号:亨利笔记 原创文章)
当用户请求访问系统资源时,Harbor 首先使用 Core 组件中的 security 中间件(middleware)获得Sec