安全组
更新时间:2025-04-29
查询安全组列表
以下代码可以查询安全组列表:
                Go
                
            
            1args := &api.ListSecurityGroupArgs{}
2
3// 设置筛选的实例Bcc实例id
4args.InstanceId = instanceId
5
6// 设置筛选的安全组绑定的VPC实例ID
7args.VpcId = vpcId
8
9result, err := client.ListSecurityGroup(args)
10if err != nil {
11    fmt.Println("list all security group failed:", err)
12} else {
13    fmt.Println("list all security group success: ", result)
14}创建安全组
以下代码可以创建一个安全组:
                Go
                
            
            1args := &api.CreateSecurityGroupArgs{
2    // 设置安全组名称
3	Name: "sdk-create",
4    // 设置安全组规则
5	Rules: []api.SecurityGroupRuleModel{
6		{
7            // 设置安全组规则备注
8			Remark:        "备注",
9            // 设置协议类型
10			Protocol:      "tcp",
11            // 设置端口范围,默认空时为1-65535,可以指定80等单个端口
12			PortRange:     "1-65535",
13            // 设置入站出站,取值ingress/egress
14			Direction:     "ingress",
15            // 设置源IP地址,与sourceGroupId不能同时设置
16			SourceIp:      "",
17		},
18	},
19}
20result, err := client.CreateSecurityGroup(args)
21if err != nil {
22    fmt.Println("create security group failed:", err)
23} else {
24    fmt.Println("create security group success: ", result)
25}同一安全组中的规则以remark、protocol、direction、portRange、sourceIp|destIp、sourceGroupId|destGroupId六元组作为唯一性索引,重复记录会报409错误。 protocol的取值(tcp|udp|icmp),默认值为空,代表all。 具体的创建安全组规则接口描述BCC API 文档创建安全组。
删除安全组
以下代码可以删除指定的安全组:
                Go
                
            
            1err := client.DeleteSecurityGroup(securityGroupId)
2if err != nil {
3    fmt.Println("delete security group failed:", err)
4} else {
5    fmt.Println("delete security group success")
6}授权安全组规则
使用以下代码可以在指定安全组中添加授权安全组规则:
                Go
                
            
            1args := &api.AuthorizeSecurityGroupArgs{
2	Rule: &api.SecurityGroupRuleModel{
3		Remark:    "备注",
4		Protocol:  "udp",
5		PortRange: "1-65535",
6		Direction: "ingress",
7	},
8}
9err := client.AuthorizeSecurityGroupRule(securityGroupId, args)
10if err != nil {
11    fmt.Println("authorize security group new rule failed:", err)
12} else {
13    fmt.Println("authorize security group new rule success")
14}
- 同一安全组中的规则以remark、protocol、direction、portRange、sourceIp|destIp、sourceGroupId|destGroupId六元组作为唯一性索引,重复记录会报409错误。
- 具体的接口描述BCC API 文档授权安全组规则。
撤销安全组规则
使用以下代码可以在指定安全组中撤销指定安全组规则授权:
                Go
                
            
            1args := &api.RevokeSecurityGroupArgs{
2    Rule: &api.SecurityGroupRuleModel{
3	    Remark:        "备注",
4	    Protocol:      "udp",
5	    PortRange:     "1-65535",
6	    Direction:     "ingress",
7	    SourceIp:      "",
8	},
9}
10err := client.RevokeSecurityGroupRule(securityGroupId, args)
11if err != nil {
12    fmt.Println("revoke security group rule failed:", err)
13} else {
14    fmt.Println("revoke security group rule success")
15}
- 同一安全组中的规则以remark、protocol、direction、portRange、sourceIp|destIp、sourceGroupId|destGroupId六元组作为唯一性索引,若安全组中不存在对应的规则将报404错误。
- 具体的接口描述BCC API 文档撤销安全组规则。
更新普通安全组规则
使用以下代码可以在指定普通安全组中更新安全组规则:
                Go
                
            
            1args := &api.UpdateSecurityGroupRuleArgs{
2   SecurityGroupRuleId: SecurityGroupRuleId,
3   Remark:              Remark,
4}
5err := client.UpdateSecurityGroupRule(args)
6if err != nil {
7    fmt.Println("update security group new rule failed:", err)
8} else {
9    fmt.Println("update security group new rule success")
10}删除普通安全组规则
使用以下代码可以在指定普通安全组中删除指定安全组规则:
                Go
                
            
            1args := &api.DeleteSecurityGroupRuleArgs{
2    SecurityGroupRuleId: SecurityGroupRuleId,
3}
4err := client.DeleteSecurityGroupRule(args)
5if err != nil {
6    fmt.Println("delete security group rule failed:", err)
7} else {
8    fmt.Println("delete security group rule success")
9}关联安全组
使用以下代码可以在关联指定安全组:
                Go
                
            
            1args := &api.BindSgV2Req{
2		InstanceIds: []string{
3			"InstanceIds",
4		},
5		SecurityGroupIds: []string{
6			"SecurityGroupIds",
7		},
8		SecurityGroupType: "SecurityGroupType",
9	}
10res, err := BCC_CLIENT.InstanceBindSecurityGroup(args)
11if err != nil {
12    fmt.Println("bind security group failed:", err)
13} else {
14    fmt.Println("bind security group success")
15}解绑安全组
使用以下代码可以解绑指定安全组:
                Go
                
            
            1args := &api.UnbindSgV2Req{
2		InstanceIds: []string{
3			"InstanceIds",
4		},
5		SecurityGroupIds: []string{
6			"SecurityGroupIds",
7		},
8		SecurityGroupType: "SecurityGroupType",
9	}
10	res, err := BCC_CLIENT.InstanceUnbindSecurityGroup(args)
11if err != nil {
12    fmt.Println("unbind security group failed:", err)
13} else {
14    fmt.Println("unbind security group success")
15}替换安全组
使用以下代码可以替换为指定安全组:
                Go
                
            
            1args := &api.ReplaceSgV2Req{
2		InstanceIds: []string{
3			"InstanceIds",
4		},
5		SecurityGroupIds: []string{
6			"SecurityGroupIds",
7		},
8		SecurityGroupType: "enterprise",
9	}
10	res, err := BCC_CLIENT.InstanceReplaceSecurityGroup(args)
11if err != nil {
12    fmt.Println("replace security group failed:", err)
13} else {
14    fmt.Println("replace security group success")
15}