為了讓您能夠用統一的管控賬號體系來配置阿里云云產品權限,SOFAStack 接入了阿里云訪問控制 RAM(Resource Access Management)的賬號體系,并且提供默認的平臺級別的 權限策略。為了滿足用戶更加精細的權限配置需求,SOFAStack 運維管理模塊下的單元化應用服務(LHC)、容器應用服務(AKS)以及經典應用服務(CAS) 針對完整的發布鏈路開放了更加細粒度的權限控制能力。
權限細分規則
以下列舉了 LHC、AKS 及 CAS 的 API 和 RAM 中權限策略的對應關系。
Action 與 Resource 相關說明請參見 權限策略基本元素。
表 1:LHC 發布主鏈路的 API 和 Resource 的對應關系
模塊分類 | Description | Action | Resource | 隔離級別 |
應用服務 | 創建容器應用服務 | CreateLDCContainerService | * | App Workspace |
修改容器應用服務 | UpdateLDCContainerService | * | App Workspace | |
ConfigMap | 創建配置項 | CreateLDCFederationConfigmap | * | Workspace |
修改配置項 | UpdateLDCFederationConfigmap | * | Workspace | |
刪除配置項 | DeleteLDCFederationConfigmap | * | Workspace | |
查看配置項 | GetLDCFederationConfigmap | * | Workspace | |
Secret | 創建保密字典 | CreateLDCFederationSecret | * | Workspace |
更新保密字典 | UpdateLDCFederationSecret | * | Workspace | |
刪除保密字典 | DeleteLDCFederationSecret | * | Workspace | |
發布單 | 創建發布單 | CreateLDCContainerserviceDeployment | * | Workspace |
表 2:AKS 發布主鏈路的 API 和 Resource 的對應關系
模塊分類 | Description | Action | Resource |
工作空間 | 創建工作空間 | CreateWorkspace | tenant/$tenantId |
查詢工作空間列表 | ListWorkspace | tenant/$tenantId | |
集群管理 | 創建集群 | CreateCluster | workspace/$workspaceId/cluster/ |
導入集群 | ImportCluster | workspace/$workspaceId/cluster/ | |
釋放集群 | ReleaseCluster | workspace/$workspaceId/cluster/$clusterId/ | |
擴容集群 | ScaleCluster | workspace/$workspaceId/cluster/$clusterId/ | |
集群導入節點 | ImportClusterNodes | workspace/$workspaceId/cluster/$clusterId/ | |
刪除集群節點 | ReleaseClusterNodes | workspace/$workspaceId/cluster/$clusterId/ | |
查詢集群列表 | ListClusters | workspace/$workspaceId/cluster/ | |
查詢集群日志 | DescribeClusterLogs | workspace/$workspaceId/cluster/$clusterId/ | |
應用元數據 | 創建應用 | CreateApp | application/ |
查詢應用 | GetApp | application/$appId | |
查詢應用列表 | QueryApp | application/ | |
應用服務 | 創建容器服務 | CreateAKSContainerServices | application/$appId/workspace/$workspaceId/containerservice |
查詢容器服務列表 | ListAKSContainerservices | application/*/*/containerservice | |
創建/更新容器應用服務版本 | SaveAKSContainerservicesRevisions | application/$appId/workspace/$workspaceId/containerservice | |
查詢容器應用服務版本列表 | ListAKSContainerServicesRevisions | application/$appId/workspace/$workspaceId/containerservice | |
查詢容器應用服務版本 | GetAKSContainerServicesRevisions | application/$appId/workspace/$workspaceId/containerservice | |
查詢service列表 | GetAKSContainerservices | application/$appId/workspace/$workspaceId/containerservice | |
獲取容器服務的描述信息 | ReceiveAKSContainerservices | application/$appId/workspace/$workspaceId/containerservice | |
獲取最新的revison供編輯 | ReceiveAKSContainerservicesRevisions | application/$appId/workspace/$workspaceId/containerservice | |
復制一個容器服務新草稿 | CloneAKSContainerservicesRevisions | application/$appId/workspace/$workspaceId/containerservice | |
創建容器服務版本 | UpdateAKSContainerservicesRevisions | application/$appId/workspace/$workspaceId/containerservice | |
快速更新鏡像 | UpdateAKSContainerservicesImage | application/$appId/workspace/$workspaceId/containerservice | |
快速更新副本 | UpdateAKSContainerservicesReplicas | application/$appId/workspace/$workspaceId/containerservice | |
刪除容器服務 | DeleteAKSContainerservices | application/$appId/workspace/$workspaceId/containerservice | |
刪除容器服務pod | DeleteAKSContainerservicesPods | application/$appId/workspace/$workspaceId/containerservice | |
更新容器服務版本備注 | UpdateAKSContainerservicesRevisionremark | application/$appId/workspace/$workspaceId/containerservice | |
更新容器服務發布包 | UploadAKSContainerservicesPackage | application/*/workspace/*/containerservice | |
下載容器服務發布包 | DownloadAKSContainerservicesPackage | application/*/workspace/*/containerservice | |
刪除容器服務發布包 | DeleteAKSContainerservicesPackage | application/*/workspace/*/containerservice | |
根據path刪除oss存儲資源 | DeleteAKSStorage | application/*/workspace/*/containerservice | |
根據path下載oss資源 | DownloadAKSStorage | application/*/workspace/*/containerservice | |
查詢容器服務事件 | ListAKSEvent | application/*/workspace/*/containerservice | |
發布單 | 回滾發布單 | RollbackAKSOpsContainerService | workspace/$workspaceId/opsplan |
取消回滾 | CancelAKSOpsContainerService | workspace/$workspaceId/opsplan | |
創建發布單 | CreateAKSPlan | workspace/$workspaceId/opsplan | |
執行發布單 | ExecAKSPlan | workspace/$workspaceId/opsplan | |
取消發布單 | CancelAKSPlan | workspace/$workspaceId/opsplan | |
查詢發布單 | GetAKSPlan | workspace/$workspaceId/opsplan |
表 3:CAS 發布主鏈路的 API 和 Resource 的對應關系
工作空間、應用元數據屬于公共模塊, CAS 與 AKS 表 2 中對應的內容相同。
資源相關接口僅列出了 ECS 機器資源,其余資源接口,例如負載均衡 SLB、云數據庫 RDS、云數據庫 Memcache、云數據庫 Redis 等結構類似。
模塊分類 | Description | Action | Resource |
應用服務 | 創建應用服務 | CreateCASAppservice | workspace/$workspaceId/classicservice/ |
查詢應用服務列表 | ListCASAppservices | workspace/$workspaceId/classicservice/ | |
查詢應用服務 | GetCASAppserviceDetail | workspace/$workspaceId/classicservice/$serviceId | |
刪除應用服務 | DeleteCASAppservice | workspace/$workspaceId/classicservice/$serviceId | |
ECS 資源 | 創建機器資源 | CreateCasComputer | workspace/$workspaceId/computer/ |
查詢機器列表 | DescribeCasComputers | workspace/$workspaceId/computer/ | |
釋放機器資源 | ReleaseCasComputer | workspace/$workspaceId/computer/$computerId | |
發布單 | 創建應用部署發布單 | CreateDEPSPlan | workspace/$workspaceId/classicopsplan |
查詢應用部署發布單列表 | QueryDEPSPlan | workspace/$workspaceId/classicopsplan | |
執行部署發布單 | ExecDEPSPlan | workspace/$workspaceId/classicopsplan | |
查詢發布單中應用執行詳情 | GetDEPSPlanProgress | workspace/$workspaceId/classicopsplan | |
創建應用運維發布單 | CreateDEPSPlanOperation | workspace/$workspaceId/classicopsplan | |
查詢應用運維發布單 | CheckDEPSPlanOperation | workspace/$workspaceId/classicopsplan |
系統角色
AKS 和 CAS 默認提供三類角色:管理人員 Admin 、運維開發人員 DevOps、觀察者 Observer。下表將上述 API 進行分類,描述不同 ARN Role 所擁有的 API 權限。
以下權限策略僅作示例,請以控制臺頁面為準。
角色類型 | 角色名稱 | 資源操作權限 (Action) | 權限策略(RAM Policy) |
Admin 管理員 | 擁有對所有資源進行操作的權限 |
| |
DevOps 運維開發人員 |
|
| |
Observer 觀察者 | 擁有只讀權限 |
|
權限策略中的 Resource 的變量
權限策略聲明中 Resource 包含的變量說明如下:
$workspaceId:工作空間 ID,可以在 全局設置 中的工作空間詳情頁中獲取。
$namespace:命名空間名稱,詳情可在 SOFAStack 控制臺左側導航欄選擇 多集群容器引擎 > 集群管理 > 命名空間 的列表頁面獲取。
$clusterId:集群 ID,新版 ACK 集群,可以在集群詳情頁的 概覽 頁簽獲取。
$appId:應用 ID,可以在應用管理的應用列表頁面,基本信息 頁簽下獲取。
$serviceId:經典應用服務 ID,可以在經典應用服務的應用服務實例詳情頁獲取。
$computerId:云服務器 ECS ID,可以在經典應用服務的應用服務實例詳情頁的 云服務器 ECS 頁簽獲取。
LHC 權限策略示例集
示例:通過 workspace ID 限制角色能在某個工作空間下創建應用服務。
{
"Version": "1",
"Statement": [
{
"Action": [
"sofa:CreateLDCContainerService"
],
"Resource": "acs:sofa:*:*:*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"sofa:Workspace": [
"2183736860"
]
}
}
}
]
}
對于其他接口,只需替換 Action
即可。
AKS 權限策略示例集
發布單
示例一:通過 app ID 限制角色不能對某個應用進行發布操作。
// 不能對某個 app 進行發布操作 { "Version": "1", "Statement": [ { "Action": [ "sofa:ExecAKSPlan" ], "Resource": "acs:sofa:*:*:workspace/*/opsplan", "Effect": "Deny", "Condition": { "StringEquals": { "sofa:App": [ "0000000000560002" ] } } } ] }
示例二:通過 workspace ID 限制角色不能對某個工作空間做發布操作。
//不能對某個工作空間做發布操作 { "Version": "1", "Statement": [ { "Action": [ "sofa:ExecAKSPlan" ], "Resource": "acs:sofa:*:*:workspace/*/opsplan", "Effect": "Deny", "Condition": { "StringEquals": { "sofa:Workspace": [ "2183736860" ] } } } ] }
創建自定義策略并授權
如果系統策略無法滿足您的需求,您可以通過創建自定義策略實現精細化權限管理。
前提條件
創建自定義策略前,需先了解權限策略語言的基本結構和語法,請參見 權限策略語法和結構。