管理用户和角色
IBM Cloud® Databases for Redis 实例已启用认证,并使用 Redis的内置访问控制。 Redis 5.x 和更低版本仅支持单个 admin
用户。 Redis 6 引入了 访问控制表(ACL)支持。 升级以利用多个用户和认证。
管理Redis用户
管理员用户
在 IBM Cloud中供应新实例时,会自动授予管理员用户访问权。 如果您正在使用 Redis 5.x 及更低版本,那么管理员用户是实例上唯一可用的用户。 如果您正在使用 Redis 6.x 和更高版本,那么您具有管理用户以及创建用户和凭证的能力。
要使用“管理”用户来连接到实例,请首先设置“管理”密码。
在用户界面中设置管理员密码
从 IBM Cloud Dashboard 中的资源列表中选择您的实例,通过用户界面设置管理员密码。 然后,选择 设置。 接下来,选择 更改数据库管理员密码。
在 CLI 中设置管理员密码
使用 Cloud Databases CLI 插件 中的 cdb user-password
命令来设置 admin
密码。
例如,要设置实例的管理员密码,请使用以下命令:
ibmcloud cdb user-password <INSTANCE_NAME_OR_CRN> admin <NEWPASSWORD>
在应用程序接口中设置管理员密码
服务的“概述部署详情”部分中显示的基础端点提供了通过 API 访问此实例的基本URL。 将其与 Set specified user 's password 端点配合使用以设置管理密码。
curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \
default
用户
在 ACL 支持到达 Redis 6之前,default
用户具有广泛的许可权,Cloud Databases 和外部用户在内部使用该用户来管理 Databases for Redis 实例。
对于 Redis 6.x,Databases for Redis 不再在内部使用 default
用户。 相反,Databases for Redis 实例由 Cloud Databases ibm-user
管理。
如果您的实例当前使用 default
用户 (Redis 5.x),那么可以在更高版本 (例如 6.2) 中继续执行此操作。 但是,在升级到 v6.2 之后继续使用 default
用户需要更改密码,这将限制许可权。 这些许可权限制是主要版本升级过程中的预期行为更改。 具体而言,将限制 default
用户的以下许可权,从 Redis v6.2:
config
:default
用户无法查看,添加,更新或删除数据库配置。default
用户也无法创建或管理数据库用户和角色。acl
:default
用户无法创建新用户。
升级到 Redis 6.2 和 default
用户
如果要使用 Redis 5,请直接升级到 Redis 6.2。 升级后,请使用 default
用户彻底测试应用程序,以确保应用程序完全正常工作。 升级到 v6.2 并继续使用 default
用户需要更改密码。
要更新 default
用户密码,请使用类似如下的命令:
ibmcloud cdb deployment-user-password <INSTANCE_NAME_OR_CRN> default <NEW PASSWORD>
有关更多信息,请参阅 升级到新的主要版本。
管理Redis角色
基于角色的访问控制 (RBAC)
基于角色的访问控制 (RBAC) 允许您配置每个用户具有的访问级别。
Databases for Redis 当前支持以下角色:
admin
角色提供对所有管理命令和操作的完全控制和访问权。all
角色提供admin
,read
和write
访问权,使用户能够完全控制所有命令和操作。read
角色允许对命令进行只读访问。 具有此角色的用户可以运行读操作,但无法执行写操作。write
角色允许对命令进行仅写访问。 具有此角色的用户可以执行写操作,但不能执行读操作。
可以在 admin
和 all
中使用管理命令 config get
,config reset
,acl whoami
,acl cat
,acl users
,acl genpass
,acl log
和 acl help
,但所有其他
acl
和 config
命令都不可用。
还可以组合这些角色以配置用户的访问级别。
RBAC 角色组合
+
include 命令
-
排除命令
+@
包含命令类别
-@
排除命令类别
admin
+read
: 完全admin
控制,能够运行read
操作。admin
+write
: 完全admin
控制,能够运行write
操作。admin
+all
: 简化为all
,包括admin
,read
和write
。read
+write
: 同时具有read
和write
角色的用户可以执行read
和write
操作,但他们不会具有管理特权。read
+all
: 简化为all
,包括admin
,read
和write
。write
+all
: 简化为all
,包括admin
,read
和write
。admin
+read
+write
: 完全admin
控制,能够同时运行read
和write
操作。admin
+read
+all
: 简化为all
,其中包括admin
,read
和write
。admin
+write
+all
: 简化为all
,其中包括admin
,read
和write
。read
+write
+all
: 简化为all
,其中包括admin
,read
和write
。
这些组合提供不同级别的访问控制。 选择与特定需求和安全注意事项一致的组合。
通过 API 创建具有 RBAC 角色的用户
要使用 RBAC 角色创建用户,请使用类似如下的命令:
Create User
POST /deployments/{id}/users/{user_type}
{
"user": {
"username": "#{USER}",
"password": "<PASSWORD>",
"role": "<+/-@all> <+/-@read> <+/-@write> <+/-@admin>"
}
}
通过 CLI 创建具有 RBAC 角色的用户
要使用 RBAC 角色创建用户,请使用类似如下的命令:
ibmcloud cdb deployment-user-create <INSTANCE_NAME_OR_CRN> <USERNAME> <PASSWORD> -r "+@read +@write"
对于 -r USER_ROLE
,请使用 <+/-@all>
<+/-@read>
<+/-@write>
<+/-@admin>
的某些组合来授予访问权。
完成任务后,使用 ibmcloud cdb deployment-connections
命令检索新用户的连接字符串。
通过 Terraform 创建具有 RBAC 角色的用户
要使用 RBAC 角色创建用户,请使用如下配置:
resource "ibm_database" "redis" {
name = "example-redis"
plan = "standard"
location = "us-south"
service = "databases-for-redis"
resource_group_id = data.ibm_resource_group.group.id
tags = ["tag1", "tag2"]
version = "6"
users {
name = "<user_name>"
password = "securepassword123"
role = "-@all +@read"
}
}
对于 role
,请使用 <+/-@all>
<+/-@read>
<+/-@write>
<+/-@admin>
的某些组合来授予访问权。
Redis 角色
“管理”用户和实例上的所有其他用户都具有对 Redis 命令集的完全访问权,但子命令 config
和 acl
除外-这包括“管理”用户。config get
,config reset
,acl whoami
,acl cat
,acl users
,acl genpass
,acl log
和 acl help
可用。
在 Redis 6.x 和更高版本中,您创建的任何用户 (无论是通过 服务凭证,CLI,API 还是直接在 Redis中) 都具有相同的访问权。 您不能使用 Redis 本身来创建具有仅限于特定密钥或密钥范围的访问权的用户或角色,因为不会在集群部署中自动传播这些用户或角色。 用于管理用户的所有其他方法都确保在集群中传播。
通过用户界面创建用户
- 导航至您服务的服务仪表板。
- 选择服务证书。
- 选择新凭证。
- 为新证书选择一个描述性名称。
- (可选) 指定新凭证是使用公共端点还是专用端点。 使用 添加内联配置参数 字段中的
{ "service-endpoints": "public" }
/{ "service-endpoints": "private" }
来生成使用指定端点的连接字符串。 未强制使用端点。 它仅控制连接字符串中的主机名。 缺省情况下会生成公共端点。 - 单击 添加 以供应新凭证。 将自动生成用户名,密码和关联用户。
新凭证显示在表中,连接字符串在“查看凭证”下的“单击以复制”字段中以 JSON 形式提供。
从应用程序接口创建用户
服务_概述_中显示的_基础端点_提供了通过 API 访问该实例的基本URL。 要创建和管理用户,请使用带有 用户 端点的基本URL:
curl -X POST https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/{user_type} \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d "{"user": {"username": "user", "password": "v3ry-1-secUre-pAssword-2"}}" \
要检索用户的连接字符串,请使用带有 "/users/{userid}/connections
端点的基本URL。
内部用户 -Redis 6.x及更新版本
您的实例上有四个保留用户。 修改这些用户会导致实例变得不稳定或不可用。
ibm-user
-用于管理实例和公开度量的内部admin
用户。replication-user
-用于复制的用户帐户。sentinel-user
-用于处理监视和故障转移的传感器的用户帐户。admin
-提供用于访问实例的缺省用户。