gpt4 book ai didi

security - 是否可以限制 docker 守护进程仅构建镜像(而不运行容器)?

转载 作者:行者123 更新时间:2023-12-02 19:49:08 25 4
gpt4 key购买 nike

基本原理:

我在 Docker ( dind ) 中使用 Docker 和 --privileged在我的 CI 中标记以从源代码构建图像。我只需要build , tag , pull ,和push命令并希望避免所有其他命令,例如 run (被认为是所有安全问题的根源)。

注意:我只是想限制 Docker 的 remote API而不是守护进程本身!

到目前为止我最好的选择:

当 Docker 客户端与 dind 通信时通过 HTTP(而不是套接字),我想我可以在 dind 之前放置一个代理托管并过滤所有路径(例如 POST /containers/create )以将 API 访问限制为仅构建/推送图像。

我想避免的事情:

永远不会在主机上绑定(bind)安装docker套接字!

<小时/> 更新:

seems API 路由器是硬编码在 Docker 守护进程中的。

更新2:

我选择了迄今为止最好的选择,并配置了一个 nginx 服务器来阻止特定路径(例如 /containers )。这对于构建图像来说效果很好,就像 dind 中所做的那样。图像和我的 API 限制不会破坏构建过程。

但是:这看起来真的很难看!

最佳答案

Docker 本身不提供任何低级别的 API 安全性。它基本上是一个打开或关闭开关。您可以访问整个内容,也可以不访问。

保护 API 端点需要修改 Docker 以包含较低粒度的身份验证和授权,或者按照您的建议,在两者之间添加 API 代理来实现您的安全要求。

您可能想查看的是 Osprey来自 Mulesoft。它可以从简单的RAML生成包括身份验证机制的API中间件。定义。我认为您可以只记录您想要允许通过的组件...

#%RAML 0.8
title: Yan Foto Docker API
version: v1
baseUri: https://dind/{version}

securitySchemes:
- token_auth:
type: x-my-token

securedBy: [token_auth]

/build:
post:
queryParameters:
dockerfile: string
t: string
nocache: string
buildargs: string
/images:
/{name}:
/tag:
post:
queryParameters:
tag: string

Osprey 生成 API 中间件,供您控制一切,然后您将通过中间件到达的任何内容代理到 Docker。

您可以使用OAuth 2.0 scopes如果您想了解权限。

docker 客户端在身份验证方面有点愚蠢,但您可以将自定义 http header 附加到每个请求,其中可能包含 key 。 config.json can configure HttpHeaders .

关于security - 是否可以限制 docker 守护进程仅构建镜像(而不运行容器)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39247191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com