镜像访问管理
目录
镜像访问管理允许管理员控制开发人员可以从 Docker Hub 拉取哪些类型的镜像。这可以防止开发人员意外使用可能对组织造成安全风险的不受信任的社区镜像。
通过镜像访问管理,您可以限制对以下类型的访问:
- Docker 官方镜像:由 Docker 维护的精选镜像
- Docker 验证发布者镜像:来自受信任的商业发布者的镜像
- 组织镜像:您的组织的私有仓库
- 社区镜像:来自个人开发人员的公共镜像
谁应该使用镜像访问管理?
镜像访问管理通过确保开发人员仅使用受信任的容器镜像来帮助防止供应链攻击。例如,正在构建新应用程序的开发人员可能会意外地将恶意社区镜像用作组件。镜像访问管理通过将访问权限限制为仅批准的镜像类型来防止这种情况。
常见的安全场景包括:
- 防止使用未维护或恶意的社区镜像
- 确保开发人员仅使用经过审查的官方基础镜像
- 控制对商业第三方镜像的访问
- 在开发团队中保持一致的安全标准
先决条件
在配置镜像访问管理之前,您必须:
- 强制登录以确保用户使用您的组织凭据进行身份验证
- 使用个人访问令牌 (PAT) 进行身份验证(不支持组织访问令牌)
- 拥有 Docker Business 订阅
重要镜像访问管理仅在用户使用组织凭据登录 Docker Desktop 时生效。
配置镜像访问
配置镜像访问管理
- 登录 Docker Home 并选择您的组织。
- 选择 Admin Console,然后选择 Image access。
- 使用 toggle 启用镜像访问。
- 选择允许的镜像类型
- 组织镜像:来自您组织的镜像(默认始终允许)。这些可以是您的组织成员创建的公共或私有镜像。
- 社区镜像:由各种用户贡献的镜像,可能存在安全风险。此类别包括 Docker 赞助的开源镜像,默认情况下已关闭。
- Docker 验证发布者镜像:来自 Docker Verified Publisher 计划中 Docker 合作伙伴的镜像,符合安全供应链标准。
- Docker 官方镜像:经过精心策划的 Docker 仓库,提供操作系统仓库、Dockerfile 最佳实践、即用型解决方案和及时安全更新。
应用限制后,组织成员可以以只读格式查看权限页面。
注意镜像访问管理默认关闭。组织所有者可以访问所有镜像,无论策略设置如何。
验证访问限制
配置镜像访问管理后,请测试限制是否正常工作。
当开发人员拉取允许的镜像类型时
$ docker pull nginx # Docker Official Image
# Pull succeeds if Docker Official Images are allowed
当开发人员拉取被阻止的镜像类型时
$ docker pull someuser/custom-image # Community image
Error response from daemon: image access denied: community images not allowed
镜像访问限制适用于所有 Docker Hub 操作,包括拉取、使用 `FROM` 指令构建以及 Docker Compose 服务。
安全实施
从最严格的策略开始,并根据合法的业务需求逐步扩展
- 从以下开始:Docker 官方镜像和组织镜像
- 如果需要,添加:用于商业工具的 Docker 验证发布者镜像
- 仔细评估:仅针对特定、经过审查的用例使用社区镜像
其他安全建议包括:
- 监控使用模式:审查开发人员尝试拉取哪些镜像,识别对其他镜像类型的合法请求,定期审核批准的镜像类别以确保持续相关性,并使用 Docker Desktop 分析来监控使用模式。
- 分层安全控制:镜像访问管理与注册表访问管理配合使用效果最佳,以控制开发人员可以访问哪些注册表,增强容器隔离以在运行时保护容器,以及设置管理以控制 Docker Desktop 配置。
范围和绕过注意事项
- 镜像访问管理仅控制对 Docker Hub 镜像的访问。来自其他注册表的镜像不受这些策略的影响。使用注册表访问管理来控制对其他注册表的访问。
- 用户可能通过退出 Docker Desktop(除非强制登录)、使用不受限制的其他注册表中的镜像或使用注册表镜像或代理来绕过镜像访问管理。强制登录并与注册表访问管理结合使用以实现全面控制。
- 镜像限制适用于 Dockerfile `FROM` 指令,使用受限镜像的 Docker Compose 服务将失败,如果中间镜像受限,多阶段构建可能会受到影响,并且使用不同镜像类型的 CI/CD 管道可能会受到影响。