IBM Cloud Docs
管理用户和角色

管理用户和角色

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 角色提供 adminreadwrite 访问权,使用户能够完全控制所有命令和操作。
  • read 角色允许对命令进行只读访问。 具有此角色的用户可以运行读操作,但无法执行写操作。
  • write 角色允许对命令进行仅写访问。 具有此角色的用户可以执行写操作,但不能执行读操作。

可以在 adminall 中使用管理命令 config getconfig resetacl whoamiacl catacl usersacl genpassacl logacl help,但所有其他 aclconfig 命令都不可用。

还可以组合这些角色以配置用户的访问级别。

RBAC 角色组合

+ include 命令

- 排除命令

+@ 包含命令类别

-@ 排除命令类别

  • admin + read: 完全 admin 控制,能够运行 read 操作。
  • admin + write: 完全 admin 控制,能够运行 write 操作。
  • admin + all: 简化为 all,包括 adminreadwrite
  • read + write: 同时具有 readwrite 角色的用户可以执行 readwrite 操作,但他们不会具有管理特权。
  • read + all: 简化为 all,包括 adminreadwrite
  • write + all: 简化为 all,包括 adminreadwrite
  • admin + read + write: 完全 admin 控制,能够同时运行 readwrite 操作。
  • admin + read + all: 简化为 all,其中包括 adminreadwrite
  • admin + write + all: 简化为 all,其中包括 adminreadwrite
  • read + write + all: 简化为 all,其中包括 adminreadwrite

这些组合提供不同级别的访问控制。 选择与特定需求和安全注意事项一致的组合。

通过 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 命令集的完全访问权,但子命令 configacl 除外-这包括“管理”用户。config getconfig resetacl whoamiacl catacl usersacl genpassacl logacl help 可用。

在 Redis 6.x 和更高版本中,您创建的任何用户 (无论是通过 服务凭证,CLI,API 还是直接在 Redis中) 都具有相同的访问权。 您不能使用 Redis 本身来创建具有仅限于特定密钥或密钥范围的访问权的用户或角色,因为不会在集群部署中自动传播这些用户或角色。 用于管理用户的所有其他方法都确保在集群中传播。

通过用户界面创建用户

  1. 导航至您服务的服务仪表板。
  2. 选择服务证书
  3. 选择新凭证
  4. 为新证书选择一个描述性名称。
  5. (可选) 指定新凭证是使用公共端点还是专用端点。 使用 添加内联配置参数 字段中的 { "service-endpoints": "public" } / { "service-endpoints": "private" } 来生成使用指定端点的连接字符串。 未强制使用端点。 它仅控制连接字符串中的主机名。 缺省情况下会生成公共端点。
  6. 单击 添加 以供应新凭证。 将自动生成用户名,密码和关联用户。

新凭证显示在表中,连接字符串在“查看凭证”下的“单击以复制”字段中以 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-提供用于访问实例的缺省用户。