无法在不进行身份验证的情况下创建存储桶

时间:2017-06-06 06:44:36

标签: authentication couchbase

我们将Couchbase从4.6社区版更新到5.0.0-2873企业版用于测试目的,我们使用java-client的软件在尝试打开存储桶时开始抛出InvalidPasswordException。

正如我发现的那样,每个新创建的存储桶都有authType =' sasl'以及随机生成的saslPassword。 我尝试使用CLI而不是GUI创建存储桶:

couchbase-cli bucket-create -c localhost:8091 -u Administrator -p password --bucket=general --bucket-ramsize=1300 --bucket-type=couchbase --bucket-password=

我收到以下错误:

ERROR: unrecognized arguments: --bucket-password=password

我也尝试了具有相同结果的bucket-edit功能。

根据documentation,论证应该是有效的。

我也尝试使用REST API来更改存储桶身份验证(以及类似的密码),但即使这并没有抛出任何错误,authType和密码也保持不变。

curl -X POST -u Administrator:password -d 'authType=none' http://<host>:8091/pools/default/buckets/general

同样,根据documentation这应该有用。

如果我查询sasl密码的存储桶信息并为openBucket功能提供,那么连接有效,但我们真的不想在我们的系统中使用此功能。

那么,在我们的5.0EE Couchbase设置中如何删除存储桶认证的任何其他想法?

2 个答案:

答案 0 :(得分:5)

在Couchbase 5.0中,我们不再支持存储桶密码,并且在连接到存储桶时已经转向使用基于角色的访问控制。这意味着在5.0中,连接到存储桶的标准(预生产)方式是使用您在设置群集时创建的管理员用户和密码。如果您不确定管理员用户是什么,它是您首次通过Couchbase设置向导时创建的用户,或者是您在运行couchbase-cli集群时在命令行上指定的用户名和密码-init命令。

需要注意的一点是,使用管理员用户/密码是标准的预生产工作流程。我建议您在投入生产时为应用程序创建单独的用户,这些用户只能访问他们需要在群集中访问的群集资源。您可以通过转到管理控制台中的“用户”选项卡并创建新用户并为其提供“完整存储桶访问”角色来执行此操作,该角色是应用程序应具有的标准角色。

您现在可能会对自己说这一切听起来不错,但是当我使用管理员用户/密码时,我仍然遇到问题。如果是这种情况,原因是因为您有Couchbase 5.0,但您的SDK不够新,无法在5.0中处理新的RBAC身份验证机制。解决方法是在“用户”选项卡中创建一个与存储桶同名的用户,并为该用户提供“完整存储桶访问”角色。然后,您可以使用此用户进行身份验证。

最后要提到的是,在从5.0之前的群集升级到5.0群集期间,Couchbase将自动为每个存储桶创建一个用户。每个用户将与其中一个存储桶具有相同的名称,该用户的密码将与存储桶密码相对应。这主要是为了确保升级期间没有应用程序停机。升级群集后,理想情况下,下一步应该是升级Couchbase客户端库以使其开始使用RBAC身份验证。

答案 1 :(得分:0)

如果您需要使用旧方法并且没有密码,则可以将cochbase-cli与--rbac-username和--rbac-password“”一起使用,但是您需要将密码指定为“”,例如

./couchbase-cli user-manage -c localhost:8091 -u Admin -p password --set --rbac-username <UserForBucket> --roles bucket_full_access[<BucketName>] --rbac-password "" --auth-domain local