如何在不修改凭证的前提下通过Harbor数据库启用已过期的Robot账号
注意:操作数据库前请提前全量备份Harbor数据库,避免误操作导致数据丢失
你遇到的unauthorized: unauthorized to access repository: abc-def/pqr报错,是因为Harbor 2.0版本的Robot账号有效期数据采用多表关联存储,仅修改registry.robot表只会同步UI展示结果,核心权限校验、Token生成逻辑读取的其他表字段还是过期状态,你需要同步修改以下3张数据库表:
registryschema下的robot表
你已完成该表修改,将对应Robot账号的expires_at字段设置为-1即可,该表字段是Harbor UI展示有效期的数据源。publicschema下的user表
所有Robot账号都会在该表生成一条类型为机器人的用户记录,找到对应Robot账号的记录,同步将expires_at字段修改为-1,这是权限校验的核心判断字段。publicschema下的project_member表
确认对应Robot账号的entity_id关联的项目成员记录无过期限制,同时核对role_id对应的权限覆盖目标仓库的推拉/部署权限。
生效操作
所有表修改完成后,重启harbor-core服务清理内存缓存即可生效:
docker restart harbor-core
如果重启后仍然报授权错误,可清理Redis内存储的权限缓存:
docker exec -it harbor-redis redis-cli FLUSHALL
操作完成后无需修改原有Robot凭证,即可正常执行镜像登录、推拉、K8S部署等操作。
内容的提问来源于stack exchange,提问作者Jyotin Ranpura
相关产品推荐
相关产品推荐

