Docker Registry和Basic Auth

时间:2015-09-19 09:46:14

标签: security authentication docker authorization docker-registry

我在远程虚拟机上运行了一个简单的http://www.yiiframework.com/news/72/yii-1-1-14-release-candidate-is-available/,并为基本身份验证设置了身份验证。在我开始运行注册表之前,我发出了以下命令(我只是无耻地从这些文档中复制和粘贴):

//only for 1.1.14
$builder = Yii::app()->db->schema->commandBuilder;
$command=$builder->createMultipleInsertCommand('tbl_post', array(
  array('title' => 'record 1', 'text' => 'text1'),
  array('title' => 'record 2', 'text' => 'text2'),
));
$command->execute();

这会生成一个docker run --entrypoint htpasswd registry:2 -Bbn myuser 12345passwd > auth/htpasswd 文件,其中包含auth/htpasswd条目以及我在上面提供的密码的某种加密/编码签名。因此,这显然是注册管理机构用于验证用户身份的文件。

一些担忧:

  • 如何向此文件添加新用户?我是否必须重新启动注册表容器才能使更改生效(我希望不会!)?
  • 如何撤消此文件中的用户,只需简单的文字编辑?同样,要使更改生效需要做些什么?
  • 有没有办法在这里强制执行授权/角色(读/写访问)?我希望注册表允许不仅仅是一个通用的“你有肆无忌惮的访问”角色!理想情况下,我希望对用户具有哪些容器/存储库的读/写访问权限进行细粒度访问控制。

1 个答案:

答案 0 :(得分:0)

您可以参考Apache htpasswd command(例如htpasswd -D <username>会删除帐户)

您执行的docker run是执行该命令(使用--entrypoint覆盖注册表图像的默认命令),并添加,更新或删除用户。

注意docker distribution(产生docker registry 2.0)讨论了基于角色的访问(如issues 635):

  

请注意,注册表2.1将使用本机基本身份验证发布,这可能就足够了。但是,不提供基于角色的访问控制。通过一些仔细的思考和PR,添加ACL支持是切合实际的。