管理用户和角色

IBM Cloud® Databases for Redis 实例已启用身份验证,并使用 Redis 的内置访问 control.They 通过 访问控制列表(ACL)支持多用户和身份验证。

管理Redis用户

管理员用户

在 IBM Cloud中供应新实例时,会自动授予管理员用户访问权。 您还可以为实例创建其他用户和凭证。

要使用“管理”用户来连接到实例,请首先设置“管理”密码。

在用户界面中设置管理员密码

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 用户

Databases for Redis 内部不再使用 default 用户。 相反,Databases for Redis 实例由 Cloud Databases ibm-user 管理。

如果您的实例目前使用 default 用户,则可以继续使用。 不过,继续使用 default 用户需要更改密码,预计这将限制权限。 这些许可权限制是主要版本升级过程中的预期行为更改。 具体来说,default 用户的以下权限受到限制:

  • config: default 用户无法查看,添加,更新或删除数据库配置。 default 用户也无法创建或管理数据库用户和角色。
  • acl: default 用户无法创建新用户。

如果打算继续使用默认用户,请确保在更新密码后彻底测试应用程序的兼容性。 有关在 Redis 中配置访问和权限的更多信息,请参阅 Redis 中的 ACL 支持

要更新 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:同时拥有“read”和“write”角色的用户可以执行 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
    • read- write:用户仅拥有“read”角色,且仅能执行 read 操作。

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

通过 API 创建具有 RBAC 角色的用户

要使用 RBAC 角色创建用户,请使用以下命令:

curl -X POST "https://{region}.databases.cloud.ibm.com/v5/ibm/deployments/{deployment_id}/users/database" \
     -H "Authorization: Bearer {iam_token}" \
     -H "Content-Type: application/json" \
     -d '{
           "user": {
             "username": "example-user",
             "password": "YourPassword123!"
           }
         }'

要创建具有默认角色的用户,请使用以下命令:

curl -X POST "https://{region}.databases.cloud.ibm.com/v5/ibm/deployments/{deployment_id}/users/database" \
     -H "Authorization: Bearer {iam_token}" \
     -H "Content-Type: application/json" \
     -d '{
           "user": {
             "username": "example-user",
             "password": "YourPassword123!"
           }
         }'

要更改或更新角色,请使用以下命令:

curl -X PATCH "https://{region}.databases.cloud.ibm.com/v5/ibm/deployments/{deployment_id}/users/database/{username}" \
     -H "Authorization: Bearer {iam_token}" \
     -H "Content-Type: application/json" \
     -d '{
           "user": {
             "role": "+@read +@admin"
           }
         }'

要更改角色密码,请使用以下命令:

curl -X PATCH "https://{region}.databases.cloud.ibm.com/v5/ibm/deployments/{deployment_id}/users/database/{username}" \
     -H "Authorization: Bearer {iam_token}" \
     -H "Content-Type: application/json" \
     -d '{
           "user": {
             "password": "NewSecurePassword456!"
           }
         }'

要删除用户,请使用以下命令:

curl -X DELETE "https://{region}.databases.cloud.ibm.com/v5/ibm/deployments/{deployment_id}/users/database/{username}" \
     -H "Authorization: Bearer {iam_token}" \
     -H "Accept: application/json"

通过 CLI 创建具有 RBAC 角色的用户

要使用 RBAC 角色创建用户,请使用以下命令:

ibmcloud cdb user-create <CRN> <USERNAME> <PASSWORD> -r "<ROLE_STRING>"

对于 -r USER_ROLE,请使用 <+/-@all> <+/-@read> <+/-@write> <+/-@admin> 的某些组合来授予访问权。

示例:

ibmcloud cdb user-create \
  crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45:: \
  ibm_cloud_35ea37ad_119b_462d_bfd4_a4f001387cdf \
  Password1234567890 \
  -r "+@read +@write"

样本输出:

Key                   Value
ID                    crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45:task:49ec86e6-a2ac-4eb2-9c6b-48039c554f7e
Deployment ID         crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45::
Description           Creating user
Created At            2025-04-18T07:26:31Z
Status                running
Progress Percentage   0
...
Progress Percentage   66
...
Status                completed
Progress Percentage   100
Location              https://api.dev-yp-03.us-south.databases.cloud.ibm.com/v5/ibm/deployments/crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a%2F40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45::
OK

要创建具有默认角色的用户,请使用以下命令:

ibmcloud cdb user-create <CRN> <USERNAME> <PASSWORD>

示例:

ibmcloud cdb user-create \
  crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45:: \
  ibm_cloud_user_default_role \
  Password1234567890

样本输出:

Key                   Value
ID                    crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45:task:f225e6a3-3f4e-449d-bfce-a5e171719074
Deployment ID         crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45::
Description           Creating user
Created At            2025-04-18T07:47:27Z
Status                running
Progress Percentage   0
Status                completed
Progress Percentage   100
Location              https://api.dev-yp-03.us-south.databases.cloud.ibm.com/v5/ibm/deployments/crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a%2F40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45::
OK

要更改或更新角色,请使用以下命令:

ibmcloud cdb redis user-set <CRN> <USERNAME> <ROLE_STRING>

示例:

ibmcloud cdb redis user-set \
  crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45:: \
  ibm_cloud_35ea37ad_119b_462d_bfd4_a4f001387cdf \
  "+@all"

样本输出:

Key                   Value
ID                    crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45:task:3a30ebc4-20d8-4004-8514-47c615276f81
Deployment ID         crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45::
Description           Updating user
Created At            2025-04-18T07:32:40Z
Status                running
Progress Percentage   0
Status                completed
Progress Percentage   100
Location              https://api.dev-yp-03.us-south.databases.cloud.ibm.com/v5/ibm/deployments/crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a%2F40ddc34a953a8c02f10987b59085b60e:7065adf2-cc4f-433a-9a97-aa69d03f6f45::
OK

要更改角色密码,请使用以下命令:

ibmcloud cdb user-password <CRN> <USERNAME> <NEW_PASSWORD>

示例:

ibmcloud cdb user-password \
  crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:3b20b985-1c89-441e-8e00-2d394d441a02:: \
  ibm_cloud_35ea37ad_119b_462d_bfd4_a4f001387cdf \
  Password1234567890123

样本输出:

Key                   Value
ID                    crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:3b20b985-1c89-441e-8e00-2d394d441a02:task:c254ccef-9e9c-4375-ae0f-4c78173f6278
Deployment ID         crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:3b20b985-1c89-441e-8e00-2d394d441a02::
Description           Updating user
Created At            2025-04-18T07:41:32Z
Status                running
Progress Percentage   0
Progress Percentage   66
Status                completed
Progress Percentage   100
Location              https://api.dev-yp-03.us-south.databases.cloud.ibm.com/v5/ibm/deployments/crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a%2F40ddc34a953a8c02f10987b59085b60e:3b20b985-1c89-441e-8e00-2d394d441a02::
OK

要删除一个角色,请使用以下命令:

ibmcloud cdb user-delete <CRN> <USERNAME>

示例:

ibmcloud cdb user-delete \
  crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:3b20b985-1c89-441e-8e00-2d394d441a02:: \
  ibm_cloud_35ea37ad_119b_462d_bfd4_a4f001387cdf

样本输出:

Key                   Value
ID                    crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:3b20b985-1c89-441e-8e00-2d394d441a02:task:cc7effad-4fb2-4ae6-bd94-2d432b471e39
Deployment ID         crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a/40ddc34a953a8c02f10987b59085b60e:3b20b985-1c89-441e-8e00-2d394d441a02::
Description           Deleting user
Created At            2025-04-18T07:44:10Z
Status                running
Progress Percentage   0
Status                completed
Progress Percentage   100
Location              https://api.dev-yp-03.us-south.databases.cloud.ibm.com/v5/ibm/deployments/crn:v1:bluemix:public:databases-for-redis-dev-yp-03:us-south:a%2F40ddc34a953a8c02f10987b59085b60e:3b20b985-1c89-441e-8e00-2d394d441a02::
OK

通过 Terraform 创建具有 RBAC 角色的用户

要使用 RBAC 角色为用户创建队列,请使用以下命令:

resource "ibm_database" "redis" {
  name              = "Databases for Redis-jt-DO-NOT-DELETE"
  plan              = "standard"
  location          = var.region
  service           = "databases-for-redis"
  version           = "7.2"
  service_endpoints = "public-and-private"
  resource_group_id = data.ibm_resource_group.group.id
  tags              = ["redis", "user-mgmt"]
#   ##################################################
#   # 1. Create user with custom ACL role
#   ##################################################
  users {
    name     = "reader-user-with-role"
    password = "secureReadPass123456789"
    role     = "-@all +@read"
  }

对于 role,请使用 <+/-@all> <+/-@read> <+/-@write> <+/-@admin> 的某些组合来授予访问权。

使用以下命令创建具有默认角色的队列:

resource "ibm_database" "redis" {
  name              = "Databases for Redis-jt-DO-NOT-DELETE"
  plan              = "standard"
  location          = var.region
  service           = "databases-for-redis"
  version           = "7.2"
  service_endpoints = "public-and-private"
  resource_group_id = data.ibm_resource_group.group.id
  tags              = ["redis", "user-mgmt"]
  ##################################################
  # 2. Create user with default role
  ##################################################
  users {
    name     = "default-user-role"
    password = "defaultPass123456789"
    # no `role` field → default ACL applies
  }

用户可在初始 Terraform 配置过程中配置默认或自定义角色。 配置后,不支持创建、删除、更新密码或更改角色等操作,以保持一致性和安全性。

Redis 角色

“管理”用户和实例上的所有其他用户都具有对 Redis 命令集的完全访问权,但子命令 configacl 除外-这包括“管理”用户。config getconfig resetacl whoamiacl catacl usersacl genpassacl logacl help 可用。

在 Redis 中,您通过服务凭证、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。

内部用户

您的实例上有四个保留用户。 修改这些用户会导致实例变得不稳定或不可用。

  • ibm-user-用于管理实例和公开度量的内部 admin 用户。
  • replication-user-用于复制的用户帐户。
  • sentinel-user-用于处理监视和故障转移的传感器的用户帐户。
  • admin-提供用于访问实例的缺省用户。