您可以通過授予RAM使用者一個或多個包含RAM條件關鍵字的自訂權限原則,從而限制其建立安全性群組或添加安全性群組規則時的操作許可權。例如,禁止添加包含對應IP和協議的安全性群組規則、限制添加的安全性群組規則範圍,或在建立ECS執行個體時禁止使用預設安全性群組,從而提升阿里雲帳號的安全性。本文介紹如何利用RAM條件關鍵字禁止RAM使用者建立高危安全性群組規則。
背景資訊
安全性群組規則是雲上安全隔離的第一道防線和最重要的防線之一。在實際生產實踐中,由於ECS安全性群組規則配置不當,常見的問題包括將敏感連接埠(如22、3389、80、8080、443)開放0.0.0.0/0
,這可能導致雲資源(比如ECS、RDS等)遭遇外部攻擊者的惡意入侵,從而引發安全事件。
在RAM子帳號繁多、許可權各有不同且業務需求互有區別的情況下,如何保證新建立的安全性群組符合自上而下的安全基準和要求,是雲上企業安全治理必備的能力。通過在RAM頁面統一進行賬戶配置,即可限制RAM子賬戶建立和引用存在安全風險的安全性群組,實現安全性群組規則的常態化治理。
阿里雲提供了使用者自訂的RAM權限原則,可以精確地描述被授權的資源集、操作集以及授權條件。對於某些生產帳號或敏感帳號,可以通過配置RAM權限原則授權RAM使用者獲得指定的存取權限。如果您需要攔截某些高危的安全性群組規則,或僅開放部分安全的安全性群組規則,可以通過配置阿里雲帳號的權限原則基本元素(RAM Condition)實現。更多資訊,請參見條件(Condition)。
實現原理
利用RAM條件關鍵字攔截高風險的安全性群組規則主要通過以下兩種方式實現:
攔截包含特定IP和協議的安全性群組規則,或僅開放部分安全的安全性群組規則。
建立ECS執行個體時,不允許使用預設安全性群組。
預設安全性群組包含敏感的安全性群組規則。更多資訊,請參見預設安全性群組。
可選用的RAM條件關鍵字列表如下所示:
條件關鍵字 | 類型 | 描述 |
ecs:SecurityGroupIpProtocols | String | 傳輸層協議。例如:TCP、ICMP。 |
ecs:SecurityGroupSourceCidrIps | String | 源端IPv4 CIDR位址區段。支援CIDR格式和IPv4格式的IP位址範圍。 |
ecs:NotSpecifySecurityGroupId | Boolean | 是否沒有指定安全性群組ID。 |
當條件關鍵字的類型為數組時,一條安全性群組規則匹配到數組中任意一個值即視為條件滿足。
當兩個條件關鍵字疊加使用時,滿足所有RAM條件關鍵字的安全性群組規則視為條件滿足。
操作步驟
建立包含RAM條件關鍵字的自訂權限原則。具體操作,請參見建立自訂權限原則。
本文以樣本二:禁止RAM使用者建立包含0.0.0.0/0的安全性群組規則作為自訂權限原則進行操作示範。
說明有關自訂權限原則樣本資訊,請參見自訂權限原則樣本。
為目標RAM使用者授予已建立的自訂權限原則。具體操作,請參見為RAM使用者授權。
結果驗證
使用對應RAM帳號登入ECS管理主控台。
根據已建立的自訂權限原則,完成以下驗證步驟,以確保自訂權限原則符合預期目標。
自訂權限原則樣本
樣本一:限制RAM使用者添加的安全性群組規則範圍
限制RAM使用者只能添加授權對象(源IP)為
140.205.XX.XX/27
或140.205.XX.XX/28
的安全性群組規則,並禁止建立ECS執行個體時使用預設安全性群組。說明請您根據實際業務需求替換
XX
為指定的IP地址值,以確保權限原則的精確執行。{ "Version": "1", "Statement": [ { "Effect": "Deny", "Action": [ "ecs:AuthorizeSecurityGroup", "ecs:ConfigureSecurityGroupPermissions", "ecs:ModifySecurityGroupRule" ], "Resource": "*", "Condition": { "ForAnyValue:StringNotLike": { "ecs:SecurityGroupSourceCidrIps": [ "140.205.XX.XX/27", "140.205.XX.XX/28" ] } } }, { "Effect": "Deny", "Action": [ "ecs:CreateInstance", "ecs:RunInstances" ], "Resource": "*", "Condition": { "Bool": { "ecs:NotSpecifySecurityGroupId": [ "true" ] } } } ] }
限制RAM使用者只能添加授權對象(源IP)為
140.205.XX.XX/27
且協議類型為TCP
的安全性群組規則,並禁止建立ECS執行個體時使用預設安全性群組。說明請您根據實際業務需求替換
XX
為指定的IP地址值,以確保權限原則的精確執行。{ "Version": "1", "Statement": [ { "Effect": "Deny", "Action": [ "ecs:AuthorizeSecurityGroup", "ecs:ConfigureSecurityGroupPermissions", "ecs:ModifySecurityGroupRule" ], "Resource": "*", "Condition": { "ForAnyValue:StringNotLike": { "ecs:SecurityGroupSourceCidrIps": [ "140.205.XX.XX/27" ] } } }, { "Effect": "Deny", "Action": [ "ecs:AuthorizeSecurityGroup", "ecs:ConfigureSecurityGroupPermissions", "ecs:ModifySecurityGroupRule" ], "Resource": "*", "Condition": { "ForAnyValue:StringNotLike": { "ecs:SecurityGroupIpProtocols": [ "TCP" ] } } }, { "Effect": "Deny", "Action": [ "ecs:CreateInstance", "ecs:RunInstances" ], "Resource": "*", "Condition": { "Bool": { "ecs:NotSpecifySecurityGroupId": [ "true" ] } } } ] }
樣本二:禁止RAM使用者建立包含0.0.0.0/0的安全性群組規則
禁止RAM使用者添加授權對象(源IP)為0.0.0.0/0
的安全性群組規則,並禁止建立ECS執行個體時使用預設安全性群組。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"ecs:AuthorizeSecurityGroup",
"ecs:ConfigureSecurityGroupPermissions",
"ecs:ModifySecurityGroupRule"
],
"Resource": "*",
"Condition": {
"ForAnyValue:StringLike": {
"ecs:SecurityGroupSourceCidrIps": [
"0.0.0.0/0"
]
}
}
},
{
"Effect": "Deny",
"Action": [
"ecs:CreateInstance",
"ecs:RunInstances"
],
"Resource": "*",
"Condition": {
"Bool": {
"ecs:NotSpecifySecurityGroupId": [
"true"
]
}
}
}
]
}