您可以通過授予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"
]
}
}
}
]
}