RAM Policy是附加在RAM身份(用户、用户组、角色)上的权限策略。管理RAM用户或角色对表格存储资源的访问权限时,可通过RAM Policy定义该身份可以执行的操作和可以访问的资源范围。
工作原理
RAM Policy采用基于身份的授权模式,策略附加在RAM用户、用户组或RAM角色上。策略定义该身份在满足指定条件(Condition)时,可对哪些资源(Resource)执行哪些操作(Action)。
RAM身份发起访问请求时,系统综合评估所有相关策略,按以下顺序判定权限:
显式拒绝优先:任何策略中存在匹配请求的Deny规则,请求立即被拒绝。
寻找显式允许:不存在Deny规则时,若存在匹配的Allow规则,请求被允许。
默认拒绝:既无Deny也无Allow,请求默认被拒绝。
表格存储支持以下两种RAM Policy类型:
系统策略:由阿里云预置,覆盖常用授权场景,仅可使用不可修改。
自定义策略:由用户自行创建和维护,可精细控制资源范围、操作类型和生效条件。
使用系统权限策略授权
系统权限策略由阿里云创建,可在RAM控制台直接为用户身份授权。以下以RAM用户为例。
前往RAM用户列表,单击目标用户操作列的新增授权。
表格存储支持以下三种系统策略,在搜索框中输入目标策略名称并勾选:
AliyunOTSFullAccess:拥有管理表格存储的权限。
AliyunOTSReadOnlyAccess:拥有只读访问表格存储的权限。
AliyunOTSWriteOnlyAccess:拥有只写访问表格存储的权限。
单击确认新增授权,完成权限设置。
使用自定义权限策略授权
自定义策略由用户自主创建和维护,授权分两步:先创建权限策略,再将策略关联到目标用户身份。
步骤一:创建自定义权限策略
前往权限策略列表,单击创建权限策略。
选择脚本编辑,在编辑框内输入JSON格式的权限策略。
示例权限策略:允许对名为
example-instance的实例及该实例下所有数据表的全部操作。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ots:*", "Resource": [ "acs:ots:*:*:instance/example-instance", "acs:ots:*:*:instance/example-instance/table/*" ] } ] }完整的权限策略包含Version(版本号)和Statement(授权语句)。
Version:权限策略版本,固定为
1,不允许修改。Statement:策略主体,包含一条或多条授权或拒绝规则。每条规则包含Effect(授权效力)、Action(授权操作)、Resource(授权资源)和Condition(授权条件)。
策略元素
说明
Effect
策略的效力,可选值为
Allow(允许)或Deny(拒绝)。Action
对资源执行的具体操作,需添加
ots:前缀,支持使用通配符*。Resource
策略作用的资源范围,格式为
acs:ots:[region]:[user_id]:instance/[instance_name]/table/[table_name]。Condition
策略生效的条件。
配置多个条件时,所有条件必须同时满足(AND关系),策略才会生效。
完整的策略元素及语法说明,请参见授权语法与元素。
单击确定,输入策略名称,然后单击确定,完成自定义策略创建。
步骤二:为用户身份进行授权
将上一步创建的策略关联到目标用户身份。以下以RAM用户为例。
前往RAM用户列表,单击目标用户操作列的新增授权。
在搜索框中输入自定义策略名称,勾选目标策略。
单击确认新增授权,完成权限设置。
常见授权场景
以下为RAM Policy在表格存储中的典型授权场景,每个场景提供完整的JSON策略示例。
场景一:组合IP、时间和传输协议条件授权读写权限
允许IP地址在10.10.XX.XX/24网段的用户对online-01和online-02实例及其下所有数据表执行读写操作。访问要求:仅限2028-01-01 00:00:00之前,且必须通过HTTPS访问。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "ots:*",
"Resource": [
"acs:ots:*:*:instance/online-01",
"acs:ots:*:*:instance/online-01/table*",
"acs:ots:*:*:instance/online-02",
"acs:ots:*:*:instance/online-02/table*"
],
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"10.10.XX.XX/24"
]
},
"DateLessThan": {
"acs:CurrentTime": "2028-01-01T00:00:00+08:00"
},
"Bool": {
"acs:SecureTransport": "true"
}
}
}
]
}场景二:拒绝指定IP对特定实例的写入请求
拒绝IP地址为10.10.XX.XX的用户对华北2(北京)地域中名称以online或product开头的实例下所有数据表执行写操作。该规则不限制对实例本身的操作。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ots:Create*",
"ots:Insert*",
"ots:Put*",
"ots:Update*",
"ots:Delete*",
"ots:BatchWrite*"
],
"Resource": [
"acs:ots:cn-beijing:*:instance/online*/table*",
"acs:ots:cn-beijing:*:instance/product*/table*"
],
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"10.10.XX.XX"
]
}
}
}
]
}场景三:限制RAM用户只能管理指定实例
仅允许RAM用户管理指定的实例。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ots:ListInstance",
"ots:ListTagResources"
],
"Resource": "acs:ots:*:*:instance/*"
},
{
"Effect": "Allow",
"Action": "ots:*",
"Resource": [
"acs:ots:*:*:instance/yourInstance",
"acs:ots:*:*:instance/yourInstance/table*"
]
},
{
"Effect": "Allow",
"Action": "cms:Query*",
"Resource": "*"
}
]
}策略中各Statement的作用说明如下。
权限策略 | 说明 |
| 表格存储控制台的概览页面需加载实例列表和标签列表,因此该Statement授予RAM用户对应的查询权限。 说明 RAM用户通过控制台管理实例时必须授予此权限。 |
| 授予RAM用户拥有 |
| 授予RAM用户云监控的权限,允许查看实例和表的监控数据。 |