用户在管理员组

时间:2017-12-12 20:07:41

标签: chef

我是一个厨师服务器上的服务器管理员,添加到组织中,我的用户被添加到管理员组 - 我曾经能够在机器上运行一个引导命令,朝向Windows机器ala -

knife bootstrap windows winrm <ip> -x <user> -P <pass> -r <run_list> -N <node_name>

无论我现在做什么 - 我遇到了“成功通过身份验证,但您未获得授权。缺少创建权限”

在有人说你需要手动编辑和提交容器等的acl文件之前,我在过去的4个小时里一直这样做。

我已经验证了我的knife.rb并且没有其他配置存在,并且明确指定它作为命令的一部分。我已在服务器上验证我的用户作为管理员和组织的一部分。我已经验证了管理员组的成员资格,以及属于所有容器的管理员组以及厨师仓库中的对象。

我还创建了一个名为“everything”的新组,我授予了对每个对象的所有访问权限,并将自己添加到该组中。我还尝试添加允许客户端的客户端来编辑这些容器。

通常当我看到此消息时,这是因为我的节点名称不正确,或者我的pem文件的路径不正确。不是这里的情况,我也尝试创建一个新的pem并指向我的knife.rb - 以及创建一个全新的用户,分配管理员,分配组织,并添加到管理员组。但没有运气。

我在bootstrap命令中注意到客户端是创建的(通过刀客户端列表),但节点不是(也通过刀节点列表)。这让我觉得缺少的权限是在节点对象上。可悲的是,一切都在那里检查 - 随着组的添加,用户被添加到这些组中。我还下载了chef-server的当前状态,以确保我没有过时的数据让我感到困惑。

我还在服务器上运行了chef-server-ctl测试(以防万一)并且没有报告任何异常。

我还通过chef-client -l调试进行了追踪,但我没有看到任何问题或错误。

任何权限,代码或群组似乎都没有改变。为什么我不能再引导了?为什么厨师报告我错过了创建权限,即使我是管理员存在的每个对象?

为了完整性:这是日志 https://gist.github.com/marseille/9811672b10bb613aa75e54f9f5e9aa44

2 个答案:

答案 0 :(得分:0)

管理员组默认使用正确的权限,但您可以使用knife-acl手动检查(警告:如果您执行了错误操作,此插件允许您中断Chef服务器)。具体检查clients容器对象,您正在寻找读取和创建权限。

答案 1 :(得分:0)

简短回答

客户端组必须对节点容器具有读取+创建权限

解释

使用验证器正常运行的引导,但使用用户凭据引导却没有。

我知道创建节点存在问题,因为刀节点列表没有列出创建的节点(在引导尝试之后)。在键盘上敲击我的头后,我发现隐藏了一个详细的日志记录选项。 chef-server-ctl tail -

检查这一点,我发现客户端创建的API请求已作为我的用户签名。但是,节点API请求由新创建的节点签名。其中,没有任何权限。即使您添加了客户端+节点组合并分配了适当的权限,在引导程序上使用用户凭据时也会被吹走。

我认为将自己的用户指定为节点名称,或者指定API用户(--user)可能会纠正此问题。它没。在引导程序之前和之后检查acls显示客户端被删除后被所有组和参与者剥离。

因此 - 需要一种用于将全新客户端与创建节点的权限相关联的方法。输入客户端组。 Chef会自动将任何新创建的客户端放在客户端组中 - 将客户端组添加到节点容器的READ + CREATE ACL后,所有权限问题都会消失。

总之,使用验证器进行引导是因为它没有覆盖客户端或节点,因此保留了权限。使用用户凭据进行引导不起作用,因为它替换了客户端和节点。

消息

“错误:您已成功通过https://'chef-server-url'身份验证为”用户“,但您未获得此操作的授权。 回复:缺少创建权限“

非常不准确,因为它从来不是我的用户的问题。实际上客户端有问题。从“缺少创建权限”可以看出。这条消息极具误导性。