如果系統權限原則不能滿足您的要求,您可以建立自訂權限原則實現最小授權。使用自訂權限原則有助於實現許可權的精細化管控,是提升資源訪問安全的有效手段。本文介紹微服務引擎MSE使用自訂權限原則的情境和策略樣本。
什麼是自訂權限原則
在基於RAM的存取控制體系中,自訂權限原則是指在系統權限原則之外,您可以自主建立、更新和刪除的權限原則。自訂權限原則的版本更新需由您來維護。
建立自訂權限原則後,需為RAM使用者、使用者組或RAM角色綁定權限原則,這些RAM身份才能獲得權限原則中指定的存取權限。
已建立的權限原則支援刪除,但刪除前需確保該策略未被引用。如果該權限原則已被引用,您需要在該權限原則的引用記錄中移除授權。
自訂權限原則支援版本控制,您可以按照RAM規定的版本管理機制來管理您建立的自訂權限原則版本。
操作文檔
通過可視化編輯模式建立自訂權限原則
使用Resource Access Management員登入RAM控制台。
在左側導覽列,選擇。
在權限原則頁面,單擊建立權限原則。
在建立權限原則頁面,單擊可視化編輯頁簽。
配置權限原則,如下。
在效果地區,選擇允許或拒絕。
在服務地區,選擇雲端服務。
說明支援可視化編輯模式的雲端服務以控制台介面顯示為準。
在操作地區,選擇全部操作或指定操作。
系統會根據您上一步選擇的雲端服務,自動篩選出可以配置的操作。如果您選擇了指定操作,您需要繼續選擇具體的操作。
在資源地區,選擇全部資源或指定資源。
系統會根據您上一步選擇的操作,自動篩選出可以配置的資源類型。如果您選擇了指定資源,您需要繼續單擊添加資源,配置具體的資源ARN。您可以使用匹配全部功能,快速選擇對應配置項的全部資源。
說明為了權限原則的正常生效,對操作關聯的必要資源ARN標識了必要,強烈建議您配置該資源ARN。
在條件地區,單擊添加條件,配置條件。
條件包括阿里雲通用條件和服務級條件,系統會根據您前面配置的雲端服務和操作,自動篩選出可以配置的條件列表。您只需要選擇對應條件鍵配置具體內容。
單擊添加語句,重複上述步驟,配置多條權限原則語句。
檢查並最佳化權限原則內容。
基礎權限原則最佳化
系統會對您添加的權限原則語句自動進行基礎最佳化。基礎權限原則最佳化會完成以下任務:
刪除不必要的條件。
刪除不必要的數組。
可選:進階權限原則最佳化
您可以將滑鼠懸浮在可選:進階策略最佳化上,單擊執行,對權限原則內容進行進階最佳化。進階權限原則最佳化功能會完成以下任務:
拆分不相容操作的資源或條件。
收縮資源到更小範圍。
去重或合并語句。
輸入權限原則名稱和備忘。
單擊確定。
配置註冊中心常用自訂授權範例
授予使用者某些執行個體的唯讀服務的許可權。
{ "Version": "1", "Statement": [ { "Action": [ "mse:QueryNacosNaming" ], "Resource": [ "acs:mse:*:*:instance/${instanceId1}", "acs:mse:*:*:instance/${instanceId2}" ], "Effect": "Allow" } ] }授予使用者某些執行個體讀取和修改服務的許可權。
{ "Version": "1", "Statement": [ { "Action": [ "mse:QueryNacosNaming", "mse:UpdateNacosNaming" ], "Resource": [ "acs:mse:*:*:instance/${instanceId1}", "acs:mse:*:*:instance/${instanceId2}" ], "Effect": "Allow" } ] }說明${instanceId1}和${instanceId2}代表的是註冊中心執行個體ID。
授予使用者只能讀取某個執行個體中的某個命名空間服務的許可權。
{ "Statement": [ { "Effect": "Allow", "Action": "mse:QueryNacosNaming", "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}" } ], "Version": "1" }授予使用者能讀取和修改某個執行個體中某個命名空間下的${group}服務的許可權。
{ "Statement": [ { "Effect": "Allow", "Action": [ "mse:QueryNacosNaming", "mse:UpdateNacosNaming" ], "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}" } ], "Version": "1" }授予使用者只能讀取某個${group}下的${serviceName}服務的許可權。
{ "Statement": [ { "Effect": "Allow", "Action": "mse:QueryNacosNaming", "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/naming/${serviceName}" } ], "Version": "1" }授予使用者讀取和修改某個${group}下的${serviceName}服務的許可權。
{ "Statement": [ { "Effect": "Allow", "Action": [ "mse:QueryNacosNaming", "mse:UpdateNacosNaming" ], "Resource": "acs:mse:*:*:instance/${instance_id}/${namespaceId}/${group}/naming/${serviceName}" } ], "Version": "1" }
微服務治理常用自訂授權範例
所有應用的唯讀許可權
為了方便企業內同學查看應用的關鍵資訊,可以考慮授權所有應用的唯讀許可權。
例如,使用阿里雲帳號授予RAM使用者具備當前阿里雲帳號下的所有微服務治理應用的唯讀許可權。
對應權限原則如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"mse:QueryNamespace",
"mse:GetApplicationListWithMetircs",
"mse:ListNamespaces",
"mse:GetEventFilterOptions",
"mse:ListEventRecords",
"mse:GetEventDetail",
"mse:FetchLogConfig",
"mse:QueryBusinessLocations",
"mse:GetApplicationInstanceList",
"mse:listGrayTag",
"mse:QueryServiceDetailWithMetrics",
"mse:GetEventDetail",
"mse:ListEventsPage",
"mse:ListEventsByType",
"mse:GetApplicationTagList"
],
"Resource": "acs:mse:*:*:*"
},
{
"Effect": "Allow",
"Action": "mse:GetApplicationList",
"Resource": "acs:mse:*:*:namespace/${ns}"
}
]
}某個應用的全部操作許可權
作為企業內部某個應用的負責人,您將獲得對該應用的所有操作許可權,同時您的許可權將嚴格限定在您管理的應用範圍內。
例如,使用阿里雲帳號授予RAM使用者以下許可權:
RAM使用者具備當前阿里雲帳號下的所有微服務治理應用的唯讀許可權。
RAM使用者具備指定的微服務治理應用的唯讀許可權。
對應權限原則如下:
{
"Version": "1",
"Statement": [
// 對特定微服務治理應用具有所有許可權
{
"Effect": "Allow",
"Action": "mse:*",
"Resource": "acs:mse:*:*:namespace/${ns}/application/${appName}"
},
// 下面為對所有微服務治理應用的唯讀許可權
{
"Effect": "Allow",
"Action": [
"mse:QueryNamespace",
"mse:GetApplicationListWithMetircs",
"mse:ListNamespaces",
"mse:GetEventFilterOptions",
"mse:ListEventRecords",
"mse:GetEventDetail",
"mse:FetchLogConfig",
"mse:QueryBusinessLocations",
"mse:GetApplicationInstanceList",
"mse:listGrayTag",
"mse:QueryServiceDetailWithMetrics",
"mse:GetEventDetail",
"mse:ListEventsPage",
"mse:ListEventsByType",
"mse:GetApplicationTagList"
],
"Resource": "acs:mse:*:*:*"
},
{
"Effect": "Allow",
"Action": "mse:GetApplicationList",
"Resource": "acs:mse:*:*:namespace/${ns}"
}
]
某個命名空間下的全部操作許可權
作為企業內部的測試人員,您將獲得對測試環境(測試命名空間)所有應用的操作許可權,同時您的許可權將嚴格限定在測試環境(測試命名空間)內。
例如,使用阿里雲帳號授予RAM使用者以下許可權:
RAM使用者具備當前阿里雲帳號下的所有微服務治理應用的唯讀許可權。
RAM使用者具備指定的微服務治理命名空間的讀寫權限。
對應權限原則如下:
{
"Version": "1",
"Statement": [
// 對特定微服務治理命名空間具有所有許可權
{
"Effect": "Allow",
"Action": "mse:*",
"Resource": "acs:mse:*:*:namespace/${ns}/application/*"
},
// 下面為對所有微服務治理應用的唯讀許可權
{
"Effect": "Allow",
"Action": [
"mse:QueryNamespace",
"mse:GetApplicationListWithMetircs",
"mse:ListNamespaces",
"mse:GetEventFilterOptions",
"mse:ListEventRecords",
"mse:GetEventDetail",
"mse:FetchLogConfig",
"mse:QueryBusinessLocations",
"mse:GetApplicationInstanceList",
"mse:listGrayTag",
"mse:QueryServiceDetailWithMetrics",
"mse:GetEventDetail",
"mse:ListEventsPage",
"mse:ListEventsByType",
"mse:GetApplicationTagList",
"mse:QueryAllSwimmingLaneGroup",
"mse:QueryAllSwimmingLane",
"mse:ListAppBySwimmingLaneGroupTags",
"mse:ListAppBySwimmingLaneGroupTag",
"mse:QuerySwimmingLaneById",
"mse:GetTagsBySwimmingLaneGroupId",
"mse:ListSwimmingLaneGateway",
"mse:ListSwimmingLaneGatewayRoute",
"mse:ListAuthPolicy",
"mse:GetServiceList",
"mse:GetServiceListPage"
],
"Resource": "acs:mse:*:*:*"
},
// 對特定微服務治理命名空間具有所有許可權
{
"Effect": "Allow",
"Action": [
"mse:GetApplicationList",
"mse:CreateOrUpdateSwimmingLaneGroup",
"mse:CreateOrUpdateSwimmingLane",
"mse:DeleteSwimmingLaneGroup",
"mse:DeleteSwimmingLaneGroup",
"mse:DeleteSwimmingLane"
],
"Resource": "acs:mse:*:*:namespace/${ns}"
}
]
}雲原生網關常用自訂授權範例
所有資源
若您需要授權RAM使用者/角色操作帳號下所有的雲原生網關執行個體,可以直接為RAM使用者/角色添加如下系統權限原則:
唯讀:AliyunMSEReadOnlyAccess
讀寫:AliyunMSEFullAccess
指定網關資源
若您要授權RAM使用者/角色操作指定的網關執行個體,可以為RAM使用者/角色添加網關資源級許可權。
樣本一:授予RAM使用者對雲原生網關執行個體gw-8090caa2a3ab447a8bc5fdf3********的唯讀許可權。
{ "Version": "1", "Statement": [ { "Action": [ "mse:Query*", "mse:List*", "mse:Get*", "mse:Select*", "mse:Pull*", "mse:GatewayBlackWhite*", "mse:GatewayHealthCheckList", "mse:GatewayQueryMonitor", "mse:UploadWasmFile" ], "Resource": "acs:mse:*:*:instance/gw-8090caa2a3ab447a8bc5fdf3********", "Effect": "Allow" }, { "Action": [ "mse:QueryDefaultAlertStatus", "mse:ListGatewayZone", "mse:ListUpgradableGatewayVersions", "mse:ListTagResources", "mse:ListGatewayIngressMigrateTask", "mse:ListEventRecords", "mse:GetEventFilterOptions", "mse:GetEventDetail", "mse:GetGatewaySelection", "mse:GetGatewayAlarms", "mse:GetGatewayMigrateNamespacedServices", "mse:GetGatewayIngressMigrateTaskDetail", "mse:GetPluginGuide", "mse:GetRegExpCheck", "mse:GetRegExpTest", "mse:CheckPluginLua" ], "Resource": "acs:mse:*:*:*", "Effect": "Allow" }, { "Action": [ "log:DescribeService", "log:ListProject", "log:GetProductDataCollection" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "arms:SearchContactGroup" ], "Resource": "*", "Effect": "Allow" } ] }樣本二:授予RAM使用者對雲原生網關執行個體gw-8090caa2a3ab447a8bc5fdf3********的讀寫權限。
{ "Version": "1", "Statement": [ { "Action": [ "mse:*" ], "Resource": "acs:mse:*:*:instance/gw-8090caa2a3ab447a8bc5fdf3********", "Effect": "Allow" }, { "Action": [ "mse:QueryDefaultAlertStatus", "mse:CreateDefaultAlert", "mse:ListGatewayZone", "mse:ListUpgradableGatewayVersions", "mse:ListEventRecords", "mse:GetEventFilterOptions", "mse:GetEventDetail", "mse:GetGatewaySelection", "mse:GetGatewayAlarms", "mse:GetGatewayMigrateNamespacedServices", "mse:GetPluginGuide", "mse:GetRegExpCheck", "mse:GetRegExpTest", "mse:CheckPluginLua", "mse:*TagResources", "mse:*CustomPlugin", "mse:*GatewayIngressMigrateTask*" ], "Resource": "acs:mse:*:*:*", "Effect": "Allow" }, { "Action": [ "log:DescribeService", "log:ListProject", "log:GetProductDataCollection", "log:OpenProductDataCollection" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "arms:SearchContactGroup" ], "Resource": "*", "Effect": "Allow" } ] }
注意
以上許可權只包含了在MSE雲原生網關控制台操作的必要許可權。雲原生網關的部分能力依賴於其他雲產品,您可以根據其他雲產品的許可權配置文檔按需為您的RAM子帳號/角色配置許可權,從而使其可以完整地使用雲原生網關的所有功能。雲原生網關依賴的其他雲產品和對應的模組如下:
雲產品 | 雲原生網關模組 | 自訂許可權配置參考文檔 |
SLS |
| |
ARMS |
|