火山引擎支持通过主账号或拥有管理权限的用户创建子用户(即 IAM 用户),您可以为不同的子用户授予不同的权限,实现同一账号不同身份用户拥有不同程度的访问权限,便于权限精细化管理。本文介绍如何通过子用户使用缓存数据库 Redis 版云服务。
背景信息 IAM 简介
访问控制(Identity and Access Management,简称 IAM)是火山引擎提供的一套权限管理系统,用于控制不同身份对云资源的访问权限。IAM 提供了多身份管理、精细化权限管理、登录访问或 API 访问与 SSO、安全认证、临时令牌服务、操作审计等一系列功能,满足多样化场景下用户分权及资源统一管理的需求。关于 IAM 的更多详情,请参见 IAM 产品介绍 。
IAM 策略
策略是对权限的一种描述,IAM 用户、用户组或角色均需通过关联策略来赋予权限。策略中可定义操作范围、资源范围和权限生效条件,IAM 支持两种类型的策略:系统预设策略和自定义策略。更多详情,请参见策略概述 。
作用范围
IAM 支持为用户指定策略的作用范围,当前支持如下两种范围:
全局权限 :授权的策略对账号下所有项目(包括未来新增项目)内的资源生效。项目权限 :策略仅对指定项目内的资源生效。常见云服务系统预设策略 说明
除了常见的系统预设策略,IAM 还支持通过自定义策略进行更精细化的权限管理。关于自定义策略的更多详情,请参见管理自定义策略 。
Redis 云服务 通过子用户使用 Redis 云服务之前,需要先为子用户授权 Redis 云服相关权限,下表列举了 Redis 云服务涉及的系统预设策略供您参考。
涉及的系统预设策略 说明 RedisFullAccess
缓存数据库 Redis 版的全部管理权限。添加了此权限的子用户,会拥有策略作用范围内缓存数据库 Redis 版的读写权限,如创建实例、删除实例、编辑实例。
说明
缓存数据库 Redis 支持与其它云服务(如 VPC、EIP 等)关联使用,因此若子用户需使用其它云服务,还需要为子用户添加对应云服务的管理或只读策略。更多详情,请参见其它常见云服务 。
RedisReadOnlyAccess 缓存数据库 Redis 版的只读访问权限。添加此权限后,用户可以查看策略作用范围内的 Redis 实例。
其它常见云服务 缓存数据库 Redis 版支持与其它云服务(如 VPC、EIP 等)关联使用,下表列举了一些常见云服务的系统预设策略供您参考。
云服务名称 涉及的系统预设策略 说明 私有网络
VPCFullAccess
私有网络(VPC)全部管理权限。添加此权限后,用户会拥有策略作用范围内私有网络的读写权限,如创建私有网络、为 Redis 实例绑定私有网络或子网等。
说明
创建私有网络时可指定项目,但创建子网时不支持指定项目,子网默认与与所属 VPC 在同一项目下。VPC 和子网的项目变更具有独立性,即修改 VPC 所属项目并不会同时修改当前 VPC 下子网的所属项目。更多详情,请参见私有网络项目管理 。 若修改了 VPC 所属项目,您还需要将 VPC 下的子网项目也进行相应变更,保证两者所属项目的一致性。否则非全局权限子用户创建云资源(如缓存数据库 Redis 版)时将无法选择子网或出现异常报错。修改所属项目的具体操作步骤,请参见 项目资源管理 。 VPCReadOnlyAccess 私有网络(VPC)只读访问权限。添加此权限后,用户可以查看策略作用范围内 Redis 实例的私网和子网信息。 公网 IP EIPFullAccess 公网 IP(EIP)全部管理权限。添加此权限后,用户会拥有策略作用范围内公网 IP 的读写权限,如申请公网 IP、为 Redis 实例绑定公网 IP 等。 EIPReadOnlyAccess 公网IP(EIP)只读访问权限。添加此权限后,用户可以查看策略作用范围内 Redis 实例的公网 IP 信息。 云监控 CloudMonitorFullAccess 云监控(CloudMonitor)的全部管理权限。添加此权限后,用户会拥有策略作用范围内 Redis 实例的监控告警的读写权限,如查看实例的监控数据、为实例添加告警策略等。 CloudMonitorReadOnlyAccess
云监控(CloudMonitor)的只读访问权限。添加此权限后,用户可以查看策略作用范围内 Redis 实例的监控数据。
说明
如果子用户需要查看监控信息,需要为子用户在全局 范围内添加该权限。
数据库工作台
DbwFullAccess
数据库工作台(DBW)全部管理权限。添加此权限后,用户会拥有策略作用范围内 DBW 的读写权限,如使用 DBW 登录 Redis 实例并使用数据交互台功能等。
说明
拥有 DBWFullAccess
权限的子用户在授权范围内(项目或者全局)将拥有对 Redis 实例的管理权限,不受 RedisFullAccess 策略约束,请谨慎授权。
费用中心
BillingCenterFullAccess
费用中心全部读写权限,包含费用中心所有页面和相关 OpenAPI 的管理权限。添加此权限后,用户会拥有策略作用范围内费用中心的读写权限,如通过费用中心充值、续费、退订实例等。
说明
如果子用户需要为 Redis 实例进行充值、续费或退订操作,需要为子用户在全局 范围内添加该权限。 若将按量计费的 Redis 实例计费类型转化为了包年包月,即使子用户拥有该实例在对应项目下的 BillingCenterFullAccess
权限,您仍需要为子用户重新在全局 范围内添加 BillingCenterFullAccess
权限,否则子用户在退订或续费该实例时会提示权限不足的报错。
注意事项 由于部分云资源仅支持在全局范围内生效,而不支持在指定项目内生效。因此,当通过子用户使用 Redis 云服务且子用户授予的 RedisFullAccess 或 RedisReadOnlyAccess 策略作用范围为项目权限 时,为保证子用户能正常使用对应 Redis 功能,您还需要为子用户在全局范围内授予下表中的相关权限,否则子用户在使用相关功能时会提示权限不足的报错。
说明
您可以通过自定义策略为子用户授予 Redis 云服务相关功能的全局权限 。关于自定义策略语法的更多详情,请参见策略语法 。
功能分类 涉及的 Action 作用范围 语法示例 白名单
DescribeAllowLists
DescribeAllowListDetail
CreateAllowList
ModifyAllowList
DeleteAllowList
全局
若仅需为子用户授予白名单的只读访问权限,那么仅需允许(Allow)子用户拥有 DescribeAllowLists 和 DescribeAllowListDetail 操作权限即可。
语法示例如下。{
"Statement": [
{
"Effect": "Allow",
"Action": [
"Redis:*DescribeAllowLists*",
"Redis:*DescribeAllowListDetail*"
],
"Resource": [
"*"
]
}
]
}
若需为子用户授予白名单的全部管理权限,那么需允许(Allow)子用户拥有白名单的全部操作权限。
语法示例如下。{
"Statement": [
{
"Effect": "Allow",
"Action": [
"Redis:*DescribeAllowLists*",
"Redis:*DescribeAllowListDetail*",
"Redis:*CreateAllowList*",
"Redis:*ModifyAllowList*",
"Redis:*DeleteAllowList*"
],
"Resource": [
"*"
]
}
]
}
操作日志
DescribeEventLogs
全局
若子用户需要查看 Redis 的操作日志,则需允许(Allow)子用户拥有 DescribeEventLogs 操作权限。
语法示例如下。
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"Redis:*DescribeEventLogs*"
],
"Resource": [
"*"
]
}
]
}
参数模板
DescribeParameterGroups
DescribeParameterGroupDetail
DescribeApplyParameterGroup
DescribeSupportParameters
CreateParameterGroup
ModifyParameterGroup
DeleteParameterGroup
全局
若仅需为子用户授予参数模板的只读访问权限,那么仅需允许(Allow)子用户拥有 DescribeParameterGroups 和 DescribeParameterGroupDetail 操作权限即可。
语法示例如下。{
"Statement": [
{
"Effect": "Allow",
"Action": [
"Redis:*DescribeParameterGroups*",
"Redis:*DescribeParameterGroupDetail*"
],
"Resource": [
"*"
]
}
]
}
若需为子用户授予参数模板的全部管理权限,那么需允许(Allow)子用户拥有参数模板的全部操作权限。
语法示例如下。{
"Statement": [
{
"Effect": "Allow",
"Action": [
"Redis:*DescribeParameterGroups*",
"Redis:*DescribeParameterGroupDetail*",
"Redis:*DescribeApplyParameterGroup*",
"Redis:*DescribeSupportParameters*",
"Redis:*CreateParameterGroup*",
"Redis:*ModifyParameterGroup*",
"Redis:*DeleteParameterGroup*"
],
"Resource": [
"*"
]
}
]
}
事件中心
DescribePlannedEvents ModifyPlannedEventExecuteTime 全局
若仅需为子用户授予事件中心的只读访问权限,那么仅需允许(Allow)子用户拥有 DescribePlannedEvents 操作权限即可。
语法示例如下。{
"Statement": [
{
"Effect": "Allow",
"Action": [
"Redis:*DescribePlannedEvents*"
],
"Resource": [
"*"
]
}
]
}
若需为子用户授予事件中心的全部管理权限,那么需允许(Allow)子用户拥有事件中心的全部操作权限。
语法示例如下。{
"Statement": [
{
"Effect": "Allow",
"Action": [
"Redis:*DescribePlannedEvents*",
"Redis:*ModifyPlannedEventExecuteTime*"
],
"Resource": [
"*"
]
}
]
}
操作步骤 创建子用户 。
说明
您需要使用主账号或拥有管理员权限的用户登录 IAM 控制台 创建子用户。 您可以在创建子用户时,直接为新建用户添加 Redis 及其它关联服务的系统预设策略,并指定策略作用范围。 为子用户添加权限 。
说明
若您为子用户授予的 RedisFullAccess 或 RedisReadOnlyAccess 策略作用范围为项目权限 时,为保证子用户能正常使用对应 Redis 功能,您还需要为子用户创建自定义策略 ,并将这些策略的作用范围设置为全局权限 ,来满足子用户使用对应的 Redis 功能。关于相关功能及对应的自定义语法示例详情,请参见注意事项 。
使用子用户登录 Redis 控制台 并使用 Redis 服务。
说明
为保障云资源的安全性,降低主账号 AK/SK 的泄露风险,建议您以为子用户创建单独的 AK/SK 来调用 Redis 相关的 API 接口。关于创建 AK/SK 的详细信息,请参见 API 访问密钥管理 。