注册表访问管理

订阅: 商业版
适用于: 管理员

注册表访问管理(RAM)允许管理员控制开发人员可以通过 Docker Desktop 访问哪些容器注册表。这种 DNS 级别的过滤可确保开发人员只从批准的注册表拉取和推送镜像,从而提高供应链安全性。

RAM 适用于所有注册表类型,包括云服务、本地注册表和注册表镜像。您可以允许任何主机名或域,但必须在白名单中包含重定向域(如某些注册表的 s3.amazonaws.com)。

支持的注册表

注册表访问管理适用于任何容器注册表,包括:

  • Docker Hub(默认允许)
  • 云注册表:Amazon ECR、Google Container Registry、Azure Container Registry
  • 基于 Git 的注册表:GitHub Container Registry、GitLab Container Registry
  • 本地解决方案:Nexus、Artifactory、Harbor
  • 注册表镜像:包括 Docker Hub 镜像

先决条件

在配置注册表访问管理之前,您必须:

  • 强制登录以确保用户使用您的组织凭据进行身份验证
  • 使用个人访问令牌 (PAT) 进行身份验证(不支持组织访问令牌)
  • 拥有 Docker Business 订阅
重要

注册表访问管理仅在用户使用组织凭据登录 Docker Desktop 时生效。

配置注册表权限

配置注册表权限

  1. 登录 Docker Home 并选择您的组织。
  2. 选择 Admin Console,然后选择 Registry access
  3. 使用开关启用注册表访问。默认情况下,Docker Hub 在注册表列表中启用。
  4. 要添加其他注册表,请选择 Add registry 并提供注册表地址注册表昵称
  5. 选择 Create。您最多可以添加 100 个注册表。
  6. 验证您的注册表是否显示在注册表列表中,然后选择 Save changes

更改最多可能需要 24 小时才能生效。要更快地应用更改,请让开发人员退出并重新登录 Docker Desktop。

重要

从 Docker Desktop 4.36 开始,如果开发人员属于具有不同 RAM 策略的多个组织,则仅强制执行配置文件中第一个组织的策略。

提示

RAM 限制也适用于通过 URL 获取内容的 Dockerfile ADD 指令。在使用带有 URL 的 ADD 时,请在白名单中包含受信任的注册表域。

RAM 专为容器注册表设计,而非通用 URL(如包镜像或存储服务)。添加过多域可能会导致错误或达到系统限制。

验证限制是否有效

用户使用其组织凭据登录 Docker Desktop 后,注册表访问管理立即生效。

当用户尝试从被阻止的注册表拉取时:

$ docker pull blocked-registry.com/image:tag
Error response from daemon: registry access to blocked-registry.com is not allowed

允许的注册表访问正常工作

$ docker pull allowed-registry.com/image:tag
# Pull succeeds

注册表限制适用于所有 Docker 操作,包括拉取、推送和引用外部注册表的构建。

注册表限制和平台约束

注册表访问管理具有以下限制和平台特定行为:

  • 最大白名单大小:每个组织 100 个注册表或域
  • 基于 DNS 的过滤:限制在主机名级别工作,而不是 IP 地址
  • 需要重定向域:必须包含注册表重定向到的所有域(CDN 端点、存储服务)
  • Windows 容器:默认情况下,Windows 镜像操作不受限制。在 Docker Desktop 设置中打开使用代理连接 Windows Docker 守护程序以应用限制
  • WSL 2 要求:需要 Linux 内核 5.4 或更高版本,限制适用于所有 WSL 2 发行版

构建和部署限制

以下场景不受注册表访问管理限制:

  • 使用 Kubernetes 驱动程序的 Docker buildx
  • 使用自定义 docker-container 驱动程序的 Docker buildx
  • 某些 Docker Debug 和 Kubernetes 镜像拉取(即使 Docker Hub 被阻止)
  • 如果源注册表受限制,以前由注册表镜像缓存的镜像仍可能被阻止

安全绕过注意事项

用户可能会通过以下方式绕过注册表访问管理:

  • 本地代理或 DNS 操纵
  • 退出 Docker Desktop(除非强制登录)
  • Docker Desktop 无法控制的网络级修改

为了最大限度地提高安全有效性:

  • 强制登录以防止通过退出绕过
  • 实施额外的网络级控制以获得全面保护
  • 将注册表访问管理作为更广泛安全策略的一部分

注册表白名单最佳实践

  • 包含所有注册表域:一些注册表会重定向到多个域。对于 AWS ECR,请包含:

    your-account.dkr.ecr.us-west-2.amazonaws.com
    amazonaws.com
    s3.amazonaws.com
  • 定期维护白名单

    • 定期移除未使用的注册表
    • 根据需要添加新批准的注册表
    • 更新可能已更改的域名
    • 通过 Docker Desktop 分析监控注册表使用情况
  • 测试配置更改

    • 在更新白名单后验证注册表访问
    • 检查是否包含所有必要的重定向域
    • 确保开发工作流程不受干扰
    • 增强容器隔离结合使用,以获得全面保护
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.