如果系统权限策略不能满足您的要求,您可以创建自定义权限策略实现最小授权。使用自定义权限策略有助于实现权限的精细化管控,是提升资源访问安全的有效手段。本文介绍DataWorks使用自定义权限策略的场景和策略示例。
什么是自定义权限策略
在基于RAM的访问控制体系中,自定义权限策略是指在系统权限策略之外,您可以自主创建、更新和删除的权限策略。自定义权限策略的版本更新需由您来维护。
创建自定义权限策略后,需为RAM用户、用户组或RAM角色绑定权限策略,这些RAM身份才能获得权限策略中指定的访问权限。
已创建的权限策略支持删除,但删除前需确保该策略未被引用。如果该权限策略已被引用,您需要在该权限策略的引用记录中移除授权。
自定义权限策略支持版本控制,您可以按照RAM规定的版本管理机制来管理您创建的自定义权限策略版本。
操作文档
常见自定义权限策略场景及示例
产品级管控权限策略
策略一:禁止RAM用户执行所有操作
管理员可授权禁止RAM用户执行所有操作的RAM Policy给某用户,授权后该用户将无法使用DataWorks的所用功能。例如,操作管理控制台、使用DataWorks各模块界面功能、调用OpenAPI。
授权脚本如下。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": "dataworks:*",
"Resource": "*"
}
]
}
策略二:禁止RAM用户调用OpenAPI
管理员可授权禁止RAM用户调用OpenAPI的RAM Policy给某用户,授权后该用户将无法调用DataWorks的OpenAPI。
授权脚本如下。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": "dataworks:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"dataworks:Scope": "OpenAPI"
}
}
}
]
}
策略三:禁止RAM用户进入DataWorks各模块界面
管理员可授权禁止RAM用户进入DataWorks各模块界面的RAM Policy给某用户,授权后该用户将无法进入DataWorks产品内各模块界面。
该策略仅禁止RAM用户访问模块界面,若该用户拥有相关模块的API调用权限,则可继续正常调用。
授权脚本如下。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": "dataworks:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"dataworks:Scope": "Page"
}
}
}
]
}
控制台实体对象级权限管控策略
当前针对DataWorks控制台各细节操作的权限管控,DataWorks细分出以下的自定义策略。
Resource说明:
实际自定义策略时,您需要将下表中Resource中占位符
$
表示的内容替换为真实ID值。例如,$regionid
需要替换为真实的地域ID值、$accountid
需要替换为阿里云主账号的UID。*
为通配符,实际使用时您可以替换为具体的参数值,用来做进一步权限管控范围的细化。例如,将workspace/*
替换为workspace/workspaceid
则表明权限策略生效的范围为指定的这个工作空间内。
对象1:工作空间
Action | Resource | Action说明 |
CreateWorkspace | acs:dataworks:$regionid:$accountid:workspace/* | 创建工作空间 |
ModifyWorkspace | acs:dataworks:$regionid:$accountid:workspace/$workspaceName | 修改工作空间 |
DeleteWorkspace | acs:dataworks:$regionid:$accountid:workspace/$workspaceName | 删除工作空间 |
DisableWorkspace | acs:dataworks:$regionid:$accountid:workspace/$workspaceName | 禁用工作空间 |
EnableWorkspace | acs:dataworks:$regionid:$accountid:workspace/$workspaceName | 启用工作空间 |
应用示例:自定义角色,授予角色修改工作空间权限
脚本编辑的权限策略代码如下。
{
"Statement": [
{
"Action": "dataworks:ModifyWorkspace",
"Effect": "Allow",
"Resource": "acs:dataworks:$regionid:$accountid:workspace/$workspaceName"
}
],
"Version": "1"
}
对象2:资源组
Action | Resource | Action说明 | 注意事项 |
ListResourceGroup | acs:dataworks:$regionid:$accountid:exclusive_resource_group/* | 展示独享资源组页签。如果没有此授权,则在控制台中看不到独享资源组的页签。 | ListResourceGroup和ShowResourceGroupDetail通常组合应用于控制用户查看独享资源组页签的权限。
说明 授权ShowResourceGroupDetail前必须先授权ListResourceGroup,仅有ShowResourceGroupDetail权限时无法查看独享资源组详情。 |
ShowResourceGroupDetail | acs:dataworks:$regionid:$accountid:exclusive_resource_group/$resourceGroupName | 根据资源组名称展示资源组详情。 | |
CreateResourceGroup | acs:dataworks:$regionid:$accountid:exclusive_resource_group/* | 创建独享资源组。 | 非购买独享资源组,此处为授权用户可根据已购买的订单在DataWorks的控制台上创建资源组。资源组的购买、扩容、缩容、续费、规格变更等资源购买相关操作需要有AliyunDataWorksFullAccess和AliyunBSSOrderAccess权限。 |
ModifyResourceGroup | acs:dataworks:$regionid:$accountid:exclusive_resource_group/$resourceGroupName | 修改独享资源组。 | - |
应用示例1:自定义角色,授予角色查看并管理某个独享资源组的权限
脚本编辑的权限策略代码如下。
{ "Statement": [ { "Action": "dataworks:ListResourceGroup", "Effect": "Allow", "Resource": "acs:dataworks:*:1111:exclusive_resource_group/*" }, { "Action": "dataworks:ShowResourceGroupDetail", "Effect": "Allow", "Resource": "acs:dataworks:*:11111:exclusive_resource_group/resourceGroupName2" }, { "Action": "dataworks:ModifyResourceGroup", "Effect": "Allow", "Resource": "acs:dataworks:*:111:exclusive_resource_group/resourceGroupName2" } ], "Version": "1" }
应用示例2:自定义角色,授予角色查看所有上海地域资源组、创建及修改独享资源组的权限
说明创建独享资源组权限指选择订单来新建资源组,而非购买独享资源的权限。
脚本编辑的权限策略代码如下。
{ "Statement": [ { "Action": "dataworks:ListResourceGroup", "Effect": "Allow", "Resource": "acs:dataworks:*:$accountid:exclusive_resource_group/*" }, { "Action": "dataworks:ShowResourceGroupDetail", "Effect": "Allow", "Resource": "acs:dataworks:cn-shanghai:$accountid:exclusive_resource_group/*" }, { "Action": "dataworks:CreateResourceGroup", "Effect": "Allow", "Resource": "acs:dataworks:cn-shanghai:$accountid:exclusive_resource_group/*" }, { "Action": "dataworks:ModifyResourceGroup", "Effect": "Allow", "Resource": "acs:dataworks:cn-shanghai:$accountid:exclusive_resource_group/resourceGroupName1" }, { "Action": "dataworks:ModifyResourceGroup", "Effect": "Allow", "Resource": "acs:dataworks:cn-shanghai:$accountid:exclusive_resource_group/resourceGroupName2" } ], "Version": "1" }
对象3:报警信息
Action | Resource | Action说明 |
ListContacts | acs:dataworks:$regionid:$accountid:contacts_ram_user/* | 查看联系人 |
ModifyContacts | acs:dataworks:$regionid:$accountid:contacts_ram_user/* | 修改联系人信息 |
ListAlarmResource | acs:dataworks:$regionid:$accountid:alarm_resource/* | 查看报警资源 |
SetUpperLimits | acs:dataworks:$regionid:$accountid:alarm_resource/* | 设置报警数量上限 |
应用示例:自定义角色,授予角色查看报警资源、设置报警数量上线、查看联系人权限、修改联系人信息
脚本编辑的权限策略代码如下。
{
"Statement": [
{
"Action": "dataworks:ListAlarmResource",
"Effect": "Allow",
"Resource": "*"
},
{
"Action": "dataworks:SetUpperLimits",
"Effect": "Allow",
"Resource": "acs:dataworks:$regionid:$accountid:alarm_resource/*"
},
{
"Action": "dataworks:ListContacts",
"Effect": "Allow",
"Resource": "acs:dataworks:$regionid:$accountid:contacts_ram_user/*"
},
{
"Action": "dataworks:ModifyContacts",
"Effect": "Allow",
"Resource": "acs:dataworks:$regionid:$accountid:contacts_ram_user/*"
}
],
"Version": "1"
}
授权信息参考
使用自定义权限策略,您需要了解业务的权限管控需求,并了解DataWorks的授权信息。详细内容请参见授权信息。