如果您需要對的DataArts Studio資源,給企業中的員工設置不同的訪問權限,以達到不同員工之間的權限隔離,您可以使用統一身份認證服務(Identityand Access Management,簡稱IAM)進行精細的權限管理。該服務提供用戶身份認證、權限分配、訪問控制等功能,可以幫助您安全的控制資源的訪問。
通過IAM,您可以在帳號中給員工創建IAM用戶,并授權來控制他們對資源的訪問范圍。例如您的員工中有負責軟件開發的人員,您希望他們擁有DataArts Studio的使用權限,但是不希望他們擁有刪除工作空間等高危操作的權限,那么您可以使用IAM為開發人員創建用戶,通過授予僅能使用DataArts Studio服務,但是不允許刪除工作空間的權限,控制他們對DataArts Studio資源的使用范圍。
DataArts Studio權限
默認情況下,管理員創建的IAM用戶沒有任何權限,需要將其加入用戶組,并給用戶組授予策略或角色,才能使得用戶組中的用戶獲得對應的權限,這一過程稱為授權。授權后,用戶就可以基于被授予的權限對云服務進行操作。
DataArts Studio部署時通過物理區域劃分,為項目級服務。授權時,“作用范圍”需要選擇“區域級項目”,然后在指定區域對應的項目中設置相關權限,并且該權限僅對此項目生效;如果在“所有項目”中設置權限,則該權限在所有區域項目中都生效。訪問DataArts Studio時,需要先切換至授權區域。
DataArts Studio 僅支持基于系統角色的授權,不支持策略授權 。為了實現精細的權限管控,DataArts Studio提供了系統角色 + 工作空間角色授權的能力,由工作空間角色授權具體的操作權限,并支持自定義不同權限點的工作空間角色。
說明IAM提供了以下兩種授權機制。注意,DataArts Studio僅支持其中的IAM角色方式,不支持IAM策略。
IAM角色:IAM最初提供的一種根據用戶的工作職能定義權限的粗粒度授權機制。該機制以服務為粒度,提供有限的服務相關角色用于授權。傳統的IAM角色并不能滿足用戶對精細化授權的要求,無法完全達到企業對權限最小化的安全管控要求。
IAM策略:IAM最新提供的一種細粒度授權的能力,可以精確到具體服務的操作、資源以及請求條件等。基于策略的授權是一種更加靈活的授權方式,能夠滿足企業對權限最小化的安全管控要求。
如圖1-10和表1-1所示,DataArts Studio的IAM系統角色包括DAYU Administrator和DAYU User;工作空間角色是基于IAM角色DAYU User進一步授予的,權限列表列出了DataArts Studio常用操作與工作空間角色的授權關系,您可以參照這些權限列表選擇合適的角色。
圖1-10 權限體系
表1-1 DataArts Studio系統角色
系統角色名稱
描述
類別
DAYU Administrator
實例管理員,擁有對DataArts Studio實例及工作空間的所有管理權限、依賴服務權限,以及所有工作空間內的所有業務操作權限。
說明
Tenant Administrator具有除統一身份認證服務外,其他所有服務的所有執行權限。即Tenant Administrator權限的用戶也擁有對DataArts Studio的所有執行權限。
系統角色
DAYU User
普通用戶,具備DataArts Studio實例及工作空間的查看權限,以及依賴服務權限。普通用戶需要被授予任一工作空間角色后,才能擁有對應角色的業務操作權限。
工作空間有管理員、開發者、部署者、運維者和訪客五種預置角色和自定義角色,每種角色的介紹如下,具體操作權限請參見權限列表。
l? 管理員:工作空間管理員,擁有工作空間內所有的業務操作權限。建議將項目負責人、開發責任人、運維管理員設置為管理員角色。
l? 開發者:開發者擁有工作空間內創建、管理工作項的業務操作權限。建議將任務開發、任務處理的用戶設置為開發者。
l? 運維者:運維者具備工作空間內運維調度等業務的操作權限,但無法更改工作項及配置。建議將運維管理、狀態監控的用戶設置為運維者。
l? 訪客:訪客可以查看工作空間內的數據,但無法操作業務。建議將只查看空間內容、不進行操作的用戶設置為訪客。
l? 部署者:企業模式獨有,具備工作空間內任務包發布的相關操作權限。在企業模式中,開發者提交腳本或作業版本后,系統會對應產生發布任務。開發者確認發包后,需要部署者審批通過,才能將修改后的作業同步到生產環境。
l? 自定義角色:如果預置角色不能滿足您的需求,您也可以創建自定義角色。自定義角色的權限可自由配置,實現業務操作權限最小化。
系統角色
DataArts Studio控制臺功能依賴的角色或策略
DataArts Studio服務各組件功能所需依賴服務的權限如表1-2所示。在實際授權場景中,推薦為開發者用戶配置DataArts Studio服務級別的依賴服務最小權限,開發者用戶的最小依賴服務權限如表1-3所示。
說明在實際授權場景中,DAYU Administrator和DAYU User系統角色已經預置了依賴服務的管理員權限。為了避免普通用戶/用戶組被授予DAYU User系統角色導致其擁有的依賴服務權限過大的風險,您可以在為用戶組授權DAYU User系統角色后,手動刪除用戶組的周邊依賴權限,再為用戶組授予所需依賴服務的最小權限合集。
表1-2 DataArts Studio控制臺依賴服務的角色或策略
控制臺功能
依賴服務
需配置角色/策略
具體功能
管理中心
BSS
bss:coupon:view
bss:renewal:update
bss:discount:view
bss:order:view
bss:order:pay
bss:order:update
創建增量包或DataArts Studio實例
KMS
kms:cmk:get
kms:cmk:list
kms:cmk:create
kms:cmk:decrypt
kms:cmk:encrypt
kms:dek:create
kms:dek:encrypt
kms:dek:decrypt
創建數據連接時,使用KMS加解密
DWS
dws:cluster:list
dws:cluster:getDetail
dws:openAPICluster:getDetail
創建DWS數據連接
MRS
mrs:cluster:get
mrs:cluster:list
創建MRS數據連接
VPC
vpc:publicIps:get
vpc:publicIps:list
vpc:vpcs:get
vpc:port:get
vpc:subnets:get
創建MRS數據連接
RDS
rds:*:get
rds:*:list
創建RDS數據連接
數據集成
VPC
vpc:publicIps:get
vpc:publicIps:list
vpc:vpcs:get
vpc:vpcs:list
vpc:port:get
vpc:subnets:get
vpc:securityGroups:get
vpc:firewalls:list
vpc:routeTables:list
vpc:subNetworkInterfaces:list
創建CDM集群或DataArts Studio實例
ECS
ecs:flavors:get
ecs:cloudServerFlavors:get
ecs:availabilityZones:list
創建CDM集群或DataArts Studio實例
CDM
cdm:cluster:create
創建CDM集群
KMS
kms:cmk:get
kms:cmk:list
kms:cmk:create
kms:cmk:decrypt
kms:cmk:encrypt
kms:dek:create
kms:dek:encrypt
kms:dek:decrypt
創建數據連接時,使用KMS加解密
MRS
mrs:cluster:get
mrs:cluster:list
mrs:job:get
mrs:job:list
創建MRS數據連接
DWS
dws:cluster:list
dws:cluster:getDetail
dws:openAPICluster:getDetail
創建DWS數據連接
CDM
cdm:cluster:get
cdm:cluster:list
cdm:link:operate
cdm:job:operate
通過CDM控制臺操作時,需要CDM服務權限
CES
ces:*:get
ces:*:list
查看CES監控
CSS
css:*:get
css:*:list
創建CSS連接
CloudTable
cloudtable:*:get
cloudtable:*:list
創建CloudTable連接
RDS
rds:*:get
rds:*:list
創建RDS連接
RMS
rms:resources:list
創建CDM集群
數據開發
OBS
obs:object:GetObject
obs:object:PutObject
obs:bucket:GetBucketLocation
obs:bucket:ListAllMyBuckets
obs:bucket:ListBucket
obs:bucket:CreateBucket
運行腳本、運行作業以及備份作業
SMN
smn:topic:publish
smn:topic:list
作業通知
KMS
kms:cmk:get
kms:cmk:list
kms:cmk:create
kms:cmk:decrypt
kms:cmk:encrypt
kms:dek:create
kms:dek:encrypt
kms:dek:decrypt
創建數據連接時,使用KMS加解密
MRS
mrs:cluster:get
mrs:cluster:list
mrs:job:submit
mrs:job:delete
mrs:job:stop
mrs:sql:execute
mrs:sql:cancel
mrs:job:get
mrs:job:list
MRS類型作業節點運行:
MRS Presto SQL、MRS Spark、MRS Spark Python、MRS Flink Job、 MRS MapReduce
MRS Spark SQL、MRS Hive SQL
DLI
dli:queue:submitJob
dli:jobs:create
dli:jobs:update
dli:jobs:get
dli:jobs:list
dli:jobs:listAll
DLI類型作業節點運行:
DLI SQL、DLI Spark
OBS
obs:object:GetObject
obs:object:PutObject
obs:object:DeleteObject
obs:bucket:GetBucketLocation
obs:bucket:ListAllMyBuckets
obs:bucket:ListBucket
obs:bucket:ListBucketVersions
obs:bucket:CreateBucket
obs:bucket:DeleteBucket
OBS類型作業節點運行:
Create OBS、Delete OBS、OBS Manager
DWS
dws:cluster:list
dws:cluster:getDetail
dws:openAPICluster:getDetail
創建DWS數據連接
CDM
cdm:cluster:get
cdm:cluster:list
cdm:job:operate
數據連接需要Agent的相關腳本、作業,以及CDM作業運行:
RDS SQL、DWS SQL、Hive SQL、SPARK SQL、Shell、Python
CES
ces:metricData:list
運維概覽,查詢DLI隊列CPU
GES
ges:graph:access
ges:graph:operate
ges:graph:list
ges:graph:getDetail
ges:metadata:create
ges:metadata:operate
ges:metadata:delete
ges:metadata:list
ges:metadata:getDetail
ges:jobs:list
ges:jobs:getDetail
Import GES作業節點運行
ECS
ecs:servers:list
ecs:servers:get
ecs:servers:stop
ecs:servers:start
ecs:cloudServers:list
Open/Close Resource作業節點運行,創建主機連接
DLI
dli:queue:submitJob
dli:queue:cancelJob
dli:group:useGroup
dli:group:getGroup
dli:group:updateGroup
dli:group:deleteGroup
dli:group:listAllGroup
dli:database:createDatabase
dli:database:dropDatabase
dli:database:displayDatabase
dli:database:displayAllDatabases
dli:database:explain
dli:database:createView
dli:database:createTable
dli:database:displayAllTables
dli:database:createFunction
dli:database:describeFunction
dli:database:showFunctions
dli:database:dropFunction
dli:table:select
dli:table:update
dli:table:delete
dli:table:dropTable
dli:table:describeTable
dli:table:showCreateTable
dli:table:showPartitions
dli:table:showSegments
dli:table:showTableProperties
dli:table:insertOverwriteTable
dli:table:insertIntoTable
dli:table:compaction
dli:table:truncateTable
dli:table:alterView
dli:table:alterTableRename
dli:table:alterTableAddColumns
dli:table:alterTableDropColumns
dli:table:alterTableChangeColumn
dli:table:alterTableSetLocation
dli:table:alterTableAddPartition
dli:table:alterTableRenamePartition
dli:table:alterTableSetProperties
dli:table:alterTableRecoverPartition
dli:table:alterTableDropPartition
dli:column:select
dli:jobs:create
dli:jobs:delete
dli:jobs:start
dli:jobs:stop
dli:jobs:update
dli:jobs:export
dli:jobs:get
dli:jobs:list
dli:jobs:listAll
dli:resource:useResource
dli:resource:updateResource
dli:resource:deleteResource
dli:resource:getResource
dli:resource:listAllResource
dli:variable:update
dli:variable:delete
DLI類型作業/腳本運行
IAM
iam:agencies:listAgencies
獲取作業委托
DIS
DIS Operator
DIS User
DIS類型作業節點運行:
DIS Stream、DIS Dump、DIS Client
SWR
SWR Admin
僅當在數據開發組件作業中使用DLI Spark節點選擇自定義鏡像時,需要容器鏡像服務中的鏡像讀取權限。
推薦通過,添加所需鏡像的讀取權限。不推薦直接為用戶授予SWR Admin系統角色, 可能存在權限過大的風險。
數據目錄
OBS
obs:object:GetObject
obs:bucket:GetBucketStorage
obs:bucket:GetBucketLocation
obs:bucket:ListAllMyBuckets
obs:bucket:ListBucket
OBS元數據采集
DIS
dis:streams:list
dis:transferTasks:list
DIS元數據采集
CSS
css:cluster:list
CSS元數據采集
GES
ges:graph:list
ges:graph:getDetail
ges:metadata:list
ges:metadata:getDetail
GES元數據采集
DLI
dli:database:displayDatabase
dli:database:displayAllDatabases
dli:table:select
dli:table:describeTable
dli:table:showPartitions
dli:table:showTableProperties
dli:jobs:create
dli:jobs:get
DLI元數據采集&數據概要分析
CDM
cdm:cluster:list
CSS元數據采集
數據質量
SMN
smn:topic:publish
smn:topic:list
配置作業通知
OBS
obs:object:GetObject
obs:object:PutObject
obs:bucket:GetBucketLocation
obs:bucket:ListAllMyBuckets
obs:bucket:ListBucket
obs:bucket:CreateBucket
導出質量報告
MRS
mrs:job:submit
mrs:sql:execute
mrs:sql:cancel
mrs:job:get
MRS質量作業運行
DLI
dli:queue:submitJob
dli:jobs:get
dli:jobs:listAll
DLI質量作業運行
數據安全
DLI
dli:queue:submitJob
dli:queue:cancelJob
dli:database:displayDatabase
dli:database:displayAllDatabases
dli:database:displayAllTables
dli:table:describeTable
dli:jobs:create
dli:jobs:stop
dli:jobs:get
dli:resource:deleteResource
dli:resource:getResource
dli:resource:listAllResource
DLI權限管控
DWS
dws:cluster:list
dws:cluster:getDetail
dws:openAPICluster:getDetail
DWS權限管控
MRS
mrs:cluster:list
mrs:job:submit
mrs:job:stop
MRS權限管控
KMS
kms:cmk:list
kms:cmk:encrypt
kms:cmk:decrypt
使用KMS加解密
CDM
任意cdm權限,例如cdm:cluster:get
DWS和MRS權限管控
表1-3 開發者用戶的依賴服務最小權限合集
權限類型
角色與策略權限-系統角色
角色與策略權限-自定義策略
角色與策略權限-自定義策略
是否必配
必配
必配
必配
權限
l? DIS Operator
l? DIS User
l? (可選,不推薦)SWR Admin
說明
僅當在數據開發組件作業中使用DLI Spark節點選擇自定義鏡像時,需要容器鏡像服務中的鏡像讀取權限。
推薦通過,添加所需鏡像的讀取權限。不推薦直接為用戶授予SWR Admin系統角色, 可能存在權限過大的風險。
依賴的全局級(global級)云服務的自定義策略DataArtsStudio_PermissionsOfDependentServices_global:
{
??? "Version": "1.1",
??? "Statement": [
??????? {
??????????? "Effect": "Allow",
??????????? "Action": [
??????????????? "obs:object:GetObject",
??????????????? "obs:object:PutObject",
??????????????? "obs:object:DeleteObject",
??????????????? "obs:bucket:GetBucketStorage",
??????????????? "obs:bucket:GetBucketLocation",
??????????????? "obs:bucket:ListAllMyBuckets",
??????????????? "obs:bucket:ListBucket",
??????????????? "obs:bucket:ListBucketVersions",
??????????????? "obs:bucket:CreateBucket",
??????????????? "obs:bucket:DeleteBucket",
??????????????? "rms:resources:list",
??????????????? "iam:agencies:listAgencies"
??????????? ]
??????? }
??? ]
}依賴的項目級(region級)云服務的自定義策略DataArtsStudio_PermissionsOfDependentServices_region:
{
??? "Version": "1.1",
??? "Statement": [
??????? {
??????????? "Effect": "Allow",
??????????? "Action": [
??????????????? "cdm:cluster:get",
??????????????? "cdm:cluster:list",
??????????????? "cdm:cluster:create",
??????????????? "cdm:link:operate",
??????????????? "cdm:job:operate",
??????????????? "ces:*:get",
??????????????? "ces:*:list",
??????????????? "cloudtable:*:get",
??????????????? "cloudtable:*:list",
??????? "css:*:get",
??????????????? "css:*:list",
??????????????? "dis:streams:list",
??????????????? "dis:transferTasks:list",
??????????????? "dli:queue:submitJob",
??????????????? "dli:queue:cancelJob",
??????????????? "dli:table:insertOverwriteTable",
??????????????? "dli:table:insertIntoTable",
??????????????? "dli:table:alterView",
??????????????? "dli:table:alterTableRename",
??????????????? "dli:table:compaction",
??????????????? "dli:table:truncateTable",
??????????????? "dli:table:alterTableDropColumns",
??????????????? "dli:table:alterTableSetProperties",
??????????????? "dli:table:alterTableChangeColumn",
??????????????? "dli:table:showSegments",
??????????????? "dli:table:alterTableRecoverPartition",
??????????????? "dli:table:dropTable",
??????????????? "dli:table:update",
??????????????? "dli:table:alterTableDropPartition",
??????????????? "dli:table:alterTableAddPartition",
??????????????? "dli:table:alterTableAddColumns",
??????????????? "dli:table:alterTableRenamePartition",
??????????????? "dli:table:delete",
??????????????? "dli:table:alterTableSetLocation",
??????????????? "dli:table:describeTable",
??????????????? "dli:table:showPartitions",
??????????????? "dli:table:showCreateTable",
??????????????? "dli:table:showTableProperties",
??????????????? "dli:table:select",
??????????????? "dli:resource:updateResource",
??????????????? "dli:resource:useResource",
??????????????? "dli:resource:getResource",
??????????????? "dli:resource:listAllResource",
????????????? ??"dli:resource:deleteResource",
??????????????? "dli:database:explain",
??????????????? "dli:database:createDatabase",
??????????????? "dli:database:dropFunction",
??????????????? "dli:database:createFunction",
??????????????? "dli:database:displayAllDatabases",
??????? "dli:database:displayAllTables",
??????????????? "dli:database:displayDatabase",
??????????????? "dli:database:describeFunction",
??????????????? "dli:database:createView",
??????????????? "dli:database:createTable",
??????????????? "dli:database:showFunctions",
??????????????? "dli:database:dropDatabase",
??????????????? "dli:group:useGroup",
??????????????? "dli:group:updateGroup",
??????????????? "dli:group:listAllGroup",
??????????????? "dli:group:getGroup",
??????????????? "dli:group:deleteGroup",
??????????????? "dli:column:select",
??????????????? "dli:jobs:start",
??????????????? "dli:jobs:export",
??????????????? "dli:jobs:update",
??????????????? "dli:jobs:list",
??????????????? "dli:jobs:listAll",
??????????????? "dli:jobs:get",
??????????????? "dli:jobs:delete",
??????????????? "dli:jobs:create",
??????????????? "dli:jobs:stop",
??????? "dli:variable:update",
??????? "dli:variable:delete",
??????????????? "dws:cluster:list",
??????????????? "dws:cluster:getDetail",
??????????????? "dws:openAPICluster:getDetail",
??????????????? "ecs:servers:get",
??????? "ecs:servers:list",??
??????????????? "ecs:servers:stop",
??????????????? "ecs:servers:start",
??????? "ecs:flavors:get",
??????????????? "ecs:cloudServerFlavors:get",
??????????????? "ecs:cloudServers:list",
??????????????? "ecs:availabilityZones:list",?
??????????????? "ges:graph:access",
??????????????? "ges:metadata:create",
??????????????? "ges:jobs:list",
??????????????? "ges:graph:operate",
??????????????? "ges:jobs:getDetail",
??????????????? "ges:graph:getDetail",
??????????????? "ges:graph:list",
??????????????? "ges:metadata:list",
??????????????? "ges:metadata:getDetail",
?????????? ?????"ges:metadata:delete",
??????????????? "ges:metadata:operate",
??????????????? "kms:cmk:get",
??????????????? "kms:cmk:list",
??????????????? "kms:cmk:create",
??????????????? "kms:cmk:decrypt",
??????????????? "kms:cmk:encrypt",
??????????????? "kms:dek:create",
??????????????? "kms:dek:encrypt",
??????????????? "kms:dek:decrypt",
??????????????? "mrs:cluster:get",
??????????????? "mrs:cluster:list",
??????????????? "mrs:job:get",
??????????????? "mrs:job:list",
??????????????? "mrs:job:submit",
??????????????? "mrs:job:stop",
??????????????? "mrs:job:delete",
??????????????? "mrs:sql:execute",
??????????????? "mrs:sql:cancel",
??????????????? "rds:*:get",
??????????????? "rds:*:list",
??????????????? "smn:topic:publish",
??????????????? "smn:topic:list",
??????? "vpc:publicIps:list",
??????????????? "vpc:publicIps:get",
??????????????? "vpc:vpcs:get",
??????????????? "vpc:vpcs:list",
??????????????? "vpc:port:get",
??????????????? "vpc:subnets:get",
??????????????? "vpc:securityGroups:get",
??????????????? "vpc:firewalls:list",
??????????????? "vpc:routeTables:list",
??????????????? "vpc:subNetworkInterfaces:list"
??????????? ]
??????? }
??? ]
}