Serverless 應用引擎 SAE(Serverless App Engine)的權限管理通過阿里云的訪問控制RAM(Resource Access Management)實現,避免多用戶共享阿里云賬號密碼或訪問密鑰(AccessKey ID和AccessKey Secret),從而降低安全風險。本文介紹如何基于RAM在SAE中創建權限策略以及進行授權配置。
前提條件
RAM權限策略
權限指在某種條件下允許或拒絕對某些資源執行某些操作;權限策略是用語法結構描述的一組權限的集合,可以精確地描述被授權的資源集、操作集以及授權條件。權限策略是描述權限集的一種簡單語言規范。
在RAM中,權限策略是一種資源實體。SAE支持以下權限策略。
系統權限策略:統一由阿里云創建,您只能使用不能修改,策略的版本更新由阿里云維護,適用于粗粒度地控制RAM用戶權限。
自定義權限策略:您可以自主創建、更新和刪除,策略的版本更新由您自己維護,適用于細粒度地控制RAM用戶權限。
系統策略
當您首次以RAM用戶的身份登錄SAE控制臺時,SAE會彈出歡迎使用Serverless應用引擎SAE對話框,提示您需要為RAM用戶授權,使RAM用戶可以訪問相應的阿里云資源。
您需要為RAM用戶授予以下系統策略。
權限策略名稱 | 說明 |
AliyunSAEFullAccess | 管理SAE的權限,授權后才能執行應用管理相關的操作。若不需要SAE Full權限,可以通過SAE權限助手進行細粒度定制化權限設置。 |
AliyunSLBReadOnlyAccess | 只讀訪問SLB的權限,授權后才能使用SLB的相關功能。 |
AliyunACMFullAccess | 管理ACM的權限,授權后才能使用SAE內置的分布式配置管理的功能。 |
AliyunECSReadOnlyAccess | 只讀ECS的權限,授權后才能在創建應用時選擇已有的安全組列表。 |
AliyunOOSReadOnlyAccess | 只讀OOS的權限,授權后才能使用SAE的批量定時啟停應用的功能。 |
AliyunBSSReadOnlyAccess | 只讀BSS的權限,授權后才能在SAE概覽頁查看購買的資源包的余量。 |
AliyunARMSReadOnlyAccess | 只讀ARMS的權限,授權后才能使用SAE內置的應用監控管理功能。 |
AliyunRAMReadOnlyAccess | 只讀RAM的權限,授權后才能查詢RAM用戶擁有的權限列表,提示需要配置的權限。 |
AliyunCloudMonitorReadOnlyAccess | 只讀云監控的權限,授權后才能使用SAE內置的基礎監控功能。 |
AliyunContainerRegistryReadOnlyAccess | 只讀容器鏡像服務的權限,授權后才能在SAE應用部署鏡像時,選擇容器鏡像服務企業版。 |
AliyunALBReadOnlyAccess | 只讀訪問應用型負載均衡服務(ALB)的權限。 |
AliyunYundunCertReadOnlyAccess | 只讀訪問云盾證書服務的權限。 |
AliyunEventBridgeReadOnlyAccess | 只讀EB的權限,授權后才能使用創建更新Job的功能。 |
AliyunSAEFullAccess表示擁有對SAE所有資源的所有操作權限。如果您需要限制RAM用戶擁有更細粒度的權限,例如命名空間級別、應用級別和關聯產品等,請參見自定義策略。
自定義策略
如果系統策略無法滿足需求,您可以通過創建自定義策略實現更細粒度的權限管理。
SAE權限助手能夠協助您對SAE的權限進行可視化配置,生成對應的權限語句,無需手動編輯自定義腳本,并通過RAM控制臺創建相應的自定義策略并授權給RAM用戶。
鑒權規則
資源描述如下。
資源類型 | 授權策略中的資源描述 |
application |
|
參數說明如下。
參數 | 說明 |
$regionid | 地域ID,可用 |
$accountid | 云賬號數字ID,可用 |
$namespaceid | 命名空間ID,其中由于默認命名空間ID為空,采用 說明 命名空間ID僅允許輸入小寫英文字母或數字。 |
$appid | 應用ID,可用 |
示例如下。
以華東2(上海)地域為例。
命名空間ID為test,應用ID為0c815215-46a1-46a2-ba1e-0102a740****的資源描述。
acs:sae:cn-shanghai:*:application/test/0c815215-46a1-46a2-ba1e-0102a740****
命名空間(默認)的資源描述。
acs:sae:cn-shanghai:*:application/_default/*
權限策略示例
場景一:命名空間級別的授權配置
場景描述:授權產品讀權限和特定命名空間及所屬應用寫權限。
例如允許使用RAM用戶操作默認命名空間和命名空間ID為test的命名空間及其所屬應用的資源。
Resource
Action
描述
acs:sae:cn-shanghai:*
sae:Query*
名稱以Query開頭的API可以對華東2(上海)地域下所有相關資源進行操作。
sae:List*
名稱以List開頭的API可以對華東2(上海)地域下所有相關資源進行操作。
sae:Describe*
名稱以Describe開頭的API可以對華東2(上海)地域下所有相關資源進行操作。
sae:*Ingress*
名稱中包含Ingress的API可以對華東2(上海)地域下所有相關資源進行操作。
sae:*ChangeOrder*
名稱中包含ChangeOrder的API可以對華東2(上海)地域下所有相關資源進行操作。
sae:*Pipeline*
名稱中包含Pipeline的API可以對華東2(上海)地域下所有相關資源進行操作。
acs:sae:cn-shanghai:*:application/test/*
sae:*
可以對華東2(上海)地域下命名空間ID為test的命名空間與所有應用資源進行操作。
{ "Version": "1", "Statement": [ { "Action": [ "sae:Query*", "sae:List*", "sae:Describe*", "sae:*Ingress*", "sae:*ChangeOrder*", "sae:*Pipeline*" ], "Resource": "acs:sae:cn-shanghai:*:*", "Effect": "Allow" }, { "Action": [ "sae:*" ], "Resource": [ "acs:sae:cn-shanghai:*:application/test/*" ], "Effect": "Allow" } ] }
場景二:應用級別的授權配置
場景描述:授權產品讀權限和特定應用寫權限。
例如允許使用RAM用戶操作如下應用。
應用
命名空間
應用ID
應用1
test
0c815215-46a1-46a2-ba1e-102a740****
應用2
默認
e468a92b-1529-4d20-8ab1-9d1595dc****
Resource
Action
描述
acs:sae:cn-shanghai:*:*
sae:Query*
名稱以Query開頭的API可以對華東2(上海)地域下所有命名空間與應用資源進行操作。
sae:List*
名稱以List開頭的API可以對華東2(上海)地域下所有命名空間與應用資源進行操作。
sae:Describe*
名稱以Describe開頭的API可以對華東2(上海)地域下所有命名空間與應用資源進行操作。
sae:*Ingress*
名稱中包含Ingress的API可以對華東2(上海)地域下所有命名空間與應用資源進行操作。
sae:*ChangeOrder*
名稱中包含ChangeOrder的API可以對華東2(上海)地域下所有命名空間與應用資源進行操作。
sae:*Pipeline*
名稱中包含Pipeline的API可以對華東2(上海)地域下所有命名空間與應用資源進行操作。
acs:sae:cn-shanghai:*:application/test/0c815215-46a1-46a2-ba1e-0102a740****
sae:*
可以對華東2(上海)地域下命名空間ID為test的命名空間與應用1的所有資源進行操作。
acs:sae:cn-shanghai:*:application/_default/e468a92b-1529-4d20-8ab1-9d1595dc****
可以對華東2(上海)地域下默認命名空間與應用2的所有資源進行操作。
{ "Version": "1", "Statement": [ { "Action": [ "sae:Query*", "sae:List*", "sae:Describe*", "sae:*Ingress*", "sae:*ChangeOrder*", "sae:*Pipeline*" ], "Resource": "acs:sae:cn-shanghai:*:*", "Effect": "Allow" }, { "Action": [ "sae:*" ], "Resource": [ "acs:sae:cn-shanghai:*:application/test/0c815215-46a1-46a2-ba1e-0102a740****", "acs:sae:cn-shanghai:*:application/_default/e468a92b-1529-4d20-8ab1-9d1595dc****" ], "Effect": "Allow" } ] }
場景三:與SAE相關聯云產品授權
由于業務需要,應用在SAE運行時會調用類似ECS、SLB、ARMS等其他云產品的業務接口,因此RAM授權時應對相關產品的權限進行配置。例如添加只讀訪問ECS的權限(AliyunECSReadOnlyAccess)、只讀訪問SLB的權限(AliyunSLBReadOnlyAccess)和只讀訪問ARMS的權限(AliyunARMSReadOnlyAccess)。