安全组
更新时间:2025-08-05
创建安全组
创建安全组和节点无关,当创建资源时会根据资源所在节点进行绑定。
- 同一安全组中的规则以protocol、direction、portRange、sourceIp|destIp唯一性索引,重复记录报409错误。
- 安全组规则protocol的取值(tcp|udp|icmp),值为空默认表示所有协议。
Java
1 public void createBecSecurityGroup(BecClient client) {
2 // 创建安全组时绑定的安全组规则列表,非必需
3 List<SecurityGroupRule> rules = new ArrayList<>();
4
5 SecurityGroupRule rule1 = new SecurityGroupRule();
6 // 备注,非必需
7 rule1.setRemark("备注");
8 // 协议类型,tcp、udp或icmp,值为空时默认为所有协议。非必需
9 rule1.setProtocol("tcp");
10 // 端口范围,可以指定80等单个端口,也可以指定范围如80-9000。值为空时默认取值1-65535。非必需
11 rule1.setPortRange("1-65535");
12 // 入站/出站,取值ingress或egress。必需
13 rule1.setDirection("ingress");
14 // 源IP地址。当direction为ingress时适用,非必需
15 rule1.setSourceIp("");
16
17 SecurityGroupRule rule2 = new SecurityGroupRule();
18 // 备注,非必需
19 rule2.setRemark("全部协议");
20 // 协议类型,tcp、udp或icmp,值为空时默认为所有协议。非必需
21 rule2.setProtocol("udp");
22 // 端口范围,可以指定80等单个端口,也可以指定范围如80-9000。值为空时默认取值1-65535。非必需
23 rule2.setPortRange("7355");
24 // 入站/出站,取值ingress或egress。必需
25 rule2.setDirection("egress");
26 // 目的IP地址。当direction为egress时适用,非必需
27 rule2.setDestIp("");
28
29 rules.add(rule1);
30 rules.add(rule2);
31
32 CreateBecSecurityGroupRequest request = new CreateBecSecurityGroupRequest();
33 // 创建的安全组的名字,支持大小写字母、数字、中文以及-_ /.特殊字符,必须以字母开头,长度1-65。必需
34 request.setName("test-security-group");
35 // 对所创建的安全组的描述信息,非必需
36 request.setDesc("create a security group");
37 // 创建安全组时绑定的安全组规则列表,非必需
38 request.setRules(rules);
39 // 当rules参数为空时,withDefaultRules参数表示是否(true/false)默认创建出向全开的规则。 不填缺省值是true。非必需
40 // request.setWithDefaultRules(true);
41
42 CreateBecSecurityGroupResponse response = client.createBecSecurityGroup(request);
43}
修改安全组信息
Java
1public void updateBecSecurityGroup(BecClient client) {
2 UpdateBecSecurityGroupRequest request = new UpdateBecSecurityGroupRequest();
3 // 安全组ID,必需
4 request.setSecurityGroupId("sg-3bpdyh5b");
5 // 创建的安全组的名字,支持大小写字母、数字、中文以及-_ /.特殊字符,必须以字母开头,长度1-65。必需
6 request.setName("name-update");
7 // 对所创建的安全组的描述信息,非必需
8 request.setDesc("更新描述");
9 UpdateBecSecurityGroupResponse response = client.updateBecSecurityGroup(request);
10}
更新安全组规则
Java
1public void updateBecSecurityGroupRule(BecClient client) {
2 UpdateBecSecurityGroupRuleRequest request = new UpdateBecSecurityGroupRuleRequest();
3 // 安全组ID,必需
4 request.setSecurityGroupId("sg-3bpdyh5b");
5 // 安全组规则ID,必需
6 request.setSecurityGroupRuleId("sgr-3bpdyh5b-qiiqk3ks");
7 // 入站/出站,取值ingress或egress。必需
8 request.setDirection("egress");
9 // 备注,非必需
10 request.setRemark("出站规则更新");
11 // 端口范围,可以指定80等单个端口,也可以指定范围如80-9000。值为空时默认取值1-65535。非必需
12 request.setPortRange("7355");
13 // 目的IP地址。当direction为egress时适用,非必需
14 request.setDestIp("0.0.0.0/0");
15 // 协议类型,tcp、udp或icmp,值为空时默认为所有协议。非必需
16 request.setProtocol("tcp");
17 UpdateBecSecurityGroupRuleResponse response = client.updateBecSecurityGroupRule(request);
18}
批量添加安全组规则
- 用于向安全组中添加新的安全组规则
- 同一安全组中的规则以protocol、direction、portRange、sourceIp | destIp六元组作为唯一性索引,若安全组中已存在相同的规则将报409错误。
Java
1public void batchCreateBecSecurityGroupRules(BecClient client) {
2 BatchCreateBecSgRulesRequest request = new BatchCreateBecSgRulesRequest();
3 // 安全组ID,必需
4 request.setSecurityGroupId("sg-3bpdyh5b");
5
6 // 创建安全组时绑定的安全组规则列表,必需
7 List<SecurityGroupRule> rules = new ArrayList<>();
8 SecurityGroupRule rule = new SecurityGroupRule();
9 // 入站/出站,取值ingress或egress。必需
10 rule.setDirection("ingress");
11 // 端口范围,可以指定80等单个端口,也可以指定范围如80-9000。值为空时默认取值1-65535。非必需
12 rule.setPortRange("22");
13 // 协议类型,tcp、udp或icmp,值为空时默认为所有协议。非必需
14 rule.setProtocol("tcp");
15 // 源IP地址。当direction为ingress时适用,非必需
16 rule.setSourceIp("192.168.1.0/24");
17 rules.add(rule);
18 request.setRules(rules);
19 BatchCreateBecSgRulesResponse response = client.batchCreateBecSecurityGroupRules(request);
20}
查询安全组列表
Java
1public void getBecSecurityGroups(BecClient client) {
2 GetBecSecurityGroupsRequest request = new GetBecSecurityGroupsRequest();
3 ListRequest listRequest = new ListRequest();
4 // 页号,缺省值为1
5 listRequest.setPageNo(1);
6 // 每页安全组个数,取值范围为1~100,缺省值为100
7 listRequest.setPageSize(10);
8 // 查询的关键字类型,取值为sgName、sgId、instanceId 分别表示安全组名称、安全组ID、实例ID
9 listRequest.setKeywordType("sgName");
10 // 查询的关键字值
11 listRequest.setKeyword("test");
12 request.setListRequest(listRequest);
13 GetBecSecurityGroupsResponse response = client.getBecSecurityGroups(request);
14}
删除安全组
用于删除指定安全组,该安全组下的规则都会被删除。
- 绑定了虚机的安全组无法被删除。
- 删除安全组时,也会删除虚机模版中的对应引用的安全组。
Java
1public void deleteBecSecurityGroup(BecClient client) {
2 DeleteBecSecurityGroupRequest request = new DeleteBecSecurityGroupRequest();
3 // securityGroupId: 要删除的安全组ID 必需
4 request.setSecurityGroupId("sg-3bpdyh5b");
5 DeleteBecSecurityGroupResponse response = client.deleteBecSecurityGroup(request);
6 }
批量删除安全组规则
Java
1public void batchDeleteBecSecurityGroupRules(BecClient client) {
2 BatchDeleteBecSgRulesRequest request = new BatchDeleteBecSgRulesRequest();
3 // securityGroupId: 目标安全组ID 必需
4 request.setSecurityGroupId("sg-3bpdyh5b");
5 // securityGroupRuleIds: 待添加的安全组规则ID集合 必需
6 request.setSecurityGroupRuleIds(Arrays.asList("sgr-3bpdyh5b-qiiqk3ks", "sgr-3bpdyh5b-0yair8uh"));
7 BatchDeleteBecSgRulesResponse response = client.batchDeleteBecSecurityGroupRules(request);
8 }