所有文档

          私有网络 VPC

          安全组

          初始化

          确认Endpoint

          在确认您使用SDK,需要配置Endpoint时,理解Endpoint相关的概念。 百度智能云目前开放了多区域支持,请参考区域选择说明。 目前支持“华北-北京”、“华南-广州”、"华东-苏州"、"香港"、"金融华中-武汉"和"华北-保定"六个区域。对应Endpoint信息为:

          访问区域 对应Endpoint
          华北-北京 bcc.bj.baidubce.com
          华南-广州 bcc.gz.baidubce.com
          华东-苏州 bcc.su.baidubce.com
          香港 bcc.hkg.baidubce.com
          金融华中-武汉 bcc.fwh.baidubce.com
          华北-保定 bcc.bd.baidubce.com

          获取密钥

          要使用百度智能云安全组,您需要拥有一个有效的 AK(Access Key ID)和SK(Secret Access Key)用来进行签名认证。AK/SK是由系统分配给用户的,均为字符串,用于标识用户,为访问BOS做签名验证。 可以通过如下步骤获得并了解您的AK/SK信息: 注册百度智能云账号 创建AK/SK

          新建BccClient

          BccClient是安全组服务的客户端,为开发者与安全组服务进行交互提供了一系列的方法。

          新建BccClient时,需要先使用Endpoint、AK、SK对BccClientConfiguration类型config实例进行配置,再使用config实例对BccClient进行配置,配置示例如下:

           static final String HOST = "";
           static final String AK = "";
           static final String SK = "";
           BccClientConfiguration config = new BccClientConfiguration();
           config.setCredentials(new DefaultBceCredentials(AK, SK));
           config.setEndpoint(HOST);
           BccClient bccClient = new BccClient(config);

          安全组管理

          • 创建BCC实例时,可以选择默认安全组或者自定义安全组。
          • 每个BCC实例必须选择一个安全组。
          • 每个BCC实例最多只能与10个安全组关联,如果某个BCC实例关联了多个安全组,则此BCC实例生效的规则是已关联安全组所有规则的合集。
          • 用户可以允许所有与此安全组关联的BCC实例彼此之间进行通信,或是与其他安全组关联的实例和与此安全组关联的实例之间进行通信。默认与同一安全组关联的BCC实例彼此间可进行通信。
          • 不支持在安全组维度下关联BCC实例,仅可通过BCC实例加入安全组。
          • 默认安全组不可删除,可以增、删、改规则。仅默认安全组提供一键恢复初始设置按钮。

          默认安全组的规则:

          • 入站:允许访问所有端口,即允许外部所有IP的流量进入关联BCC的所有端口。
          • 出站:允许访问所有端口,即允许关联BCC的所有端口访问外部所有IP的所有端口。

          新建安全组

          可以使用createSecurityGroup函数创建安全组,函数定义如下:

          public CreateSecurityGroupResponse createSecurityGroup(CreateSecurityGroupRequest request) {
          	......
           }

          createSecurityGroup参数如下:

          参数名称 类型 是否必需 描述
          name String 创建的安全组的名字,支持大小写字母、数字、中文以及-_ /.特殊字符,必须以字母开头,长度1-65。
          rules [SecurityGroupRuleModel] 创建安全组时绑定的安全组规则列表
          vpc_id String 创建安全组时指定vpc
          desc String 对所创建的安全组的描述信息
          clientToken String 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性

          参数rules是list类型,可以包含多条安全组规则。安全组规则参数如下:

          参数名称 类型 描述 是否必须
          remark String 备注
          direction String 入站/出站,取值ingress或egress。
          ethertype String 网络类型,取值IPv4或IPv6。值为空时表示默认取值IPv4。
          portRange String 端口范围,可以指定80等单个端口,值为空时默认取值1-65535。
          protocol String 协议类型,tcp、udp或icmp,值为空时默认取值all。
          sourceGroupId String 源安全组ID
          sourceIp String 源IP地址,与sourceGroupId不能同时设定值。
          destGroupId String 目的安全组ID
          destIp String 目的IP地址,与destGroupId不能同时设定值。
          securityGroupId String 安全组ID

          使用示例如下:

          public void createSecurityGroup() {
                      CreateSecurityGroupRequest request = createSecurityGroupRequest();
                      CreateSecurityGroupResponse response = client.createSecurityGroup(request);
                      assertThat(response.getSecurityGroupId(), notNullValue());
                      toJsonPrettyString("createSecurityGroup", response);
                      securityGroupIds.add(response.getSecurityGroupId());
                  }
          
          private CreateSecurityGroupRequest createSecurityGroupRequest() {
                      List<SecurityGroupRuleModel> rules = new                       
                          ArrayList<SecurityGroupRuleModel>();
                      rules.add(new SecurityGroupRuleModel()
                              .withRemark("ingress_remark")
                              .withProtocol("tcp")
                              .withPortRange("1-65535")
                              .withDirection("ingress")
                              .withSourceIp("")
                              .withSourceGroupId(""));
          
                      rules.add(new SecurityGroupRuleModel()
                              .withRemark("egress_remark")
                              .withProtocol("")
                              .withPortRange("")
                              .withDirection("egress")
                              .withDestIp("")
                              .withDestGroupId(""));
                      return new CreateSecurityGroupRequest()
                              .withDesc("sdk_desc").withName("sdk_name" + 
                                  System.currentTimeMillis())
                              .withRules(rules);
                  }

          列举安全组列表

          可以使用listSecurityGroups函数列举安全组列表,函数定义如下:

          public ListSecurityGroupsResponse listSecurityGroups(ListSecurityGroupsRequest request) {
          	......
           }

          listSecurityGroups参数如下:

          参数名称 类型 是否必需 描述
          instanceId String 实例id,可查询实例关联的安全组列表。如需查询所有创建的安全组信息,不填写此参数。
          vpcId String vpc实例id,可查询实例关联的安全组列表。
          marker String 批量获取列表的查询的起始位置,是一个由系统生成的字符串
          maxKeys int 每页包含的最大数量,最大数量通常不超过1000。缺省值为1000

          使用示例如下:

          ListSecurityGroupsResponse response = client.listSecurityGroups(new 
              ListSecurityGroupsRequest());
          assertThat(response.getSecurityGroups(), notNullValue());
          toJsonPrettyString("listSecurityGroup", response);

          删除安全组

          可以使用deleteSecurityGroup函数删除安全组,函数定义如下:

          public void deleteSecurityGroup(DeleteSecurityGroupRequest request) {
          	......
           }

          deleteSecurityGroup参数主要包括securityGroupId,确定要删除的安全组。

          注意: securityGroupId可以通过列举安全组获取。

          使用示例如下:

          if (!securityGroupIds.isEmpty()) {
                          String target = securityGroupIds.get(0);
                          client.deleteSecurityGroup(target);
                          securityGroupIds.remove(target);
                      }

          授权安全组规则

          可以使用authorizeSecurityGroupRule函数在安全组中授权新的安全组规则,函数定义如下:

          public void authorizeSecurityGroupRule(SecurityGroupRuleOperateRequest request) {
          	......
           }

          authorizeSecurityGroupRule参数如下:

          参数名称 类型 是否必需 描述
          securityGroupId String 授权新安全组规则的安全组id
          rule SecurityGroupRuleModel 待授权安全组规则
          clientToken String 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性

          注意: 同一安全组中的规则以remark、protocol、direction、portRange、sourceIp | destIp、sourceGroupId | destGroupId六元组作为唯一性索引,若安全组中已存在相同的规则将报错。

          使用示例如下:

          SecurityGroupRuleOperateRequest request = new 
              SecurityGroupRuleOperateRequest().withSecurityGroupId("g-RrAecfjQ");
          SecurityGroupRuleModel ruleModel = new  
              SecurityGroupRuleModel().withProtocol("tcp").withPortRange("80-
              90").withDirection("ingress");
          request.withRule(ruleModel);
          
          client.authorizeSecurityGroupRule(request);

          撤销安全组规则

          可以使用revokeSecurityGroupRule函数在安全组中撤销安全组规则,函数定义如下:

          public void revokeSecurityGroupRule(SecurityGroupRuleOperateRequest request) {
              ......
           }

          revokeSecurityGroupRule参数如下:

          参数名称 类型 是否必需 描述
          securityGroupId String 待撤销安全组规则的安全组id
          rule SecurityGroupRuleModel 待撤销的安全组规则
          clientToken String 幂等性Token,是一个长度不超过64位的ASCII字符串,详见ClientToken幂等性

          注意: 同一安全组中的规则以remark、protocol、direction、portRange、sourceIp | destIp、sourceGroupId | destGroupId六元组作为唯一性索引,若安全组中已存在相同的规则将报错。

          使用示例如下:

          SecurityGroupRuleOperateRequest request = new 
              SecurityGroupRuleOperateRequest().withSecurityGroupId("g-RrAecfjQ");
          SecurityGroupRuleModel ruleModel = new  
              SecurityGroupRuleModel().withProtocol("tcp")
              .withPortRange("80-90").withDirection("ingress");
          request.withRule(ruleModel);
          
          client.revokeSecurityGroupRule(request);
          上一篇
          子网
          下一篇
          ACL