安全组

查询安全组列表

以下代码可以查询安全组列表:

public static void listSecurityGroup(BccClient bccClient) {
    ListSecurityGroupsRequest listSecurityGroupsRequest = new ListSecurityGroupsRequest();
    // 设置分页标志
    listSecurityGroupsRequest.setMarker(securityGroupId);
    // 设置分页返回数据大小
    listSecurityGroupsRequest.setMaxKeys(maxKey);
    // 设置筛选的实例Bcc实例id
    listSecurityGroupsRequest.setInstanceId(instanceId);
    // 设计筛选的vpcId
    listSecurityGroupsRequest.setVpcId(vpcId);
    // 执行获取安全组列表操作
    ListSecurityGroupsResponse listSecurityGroupsResponse = bccClient.listSecurityGroups(listSecurityGroupsRequest);

    for (SecurityGroupModel securityGroupModel : listSecurityGroupsResponse.getSecurityGroups()) {
        System.out.println(securityGroupModel.getName());
    }
}

创建安全组

以下代码可以创建一个安全组:

public static void createSecurityGroup(BccClient bccClient) {
    CreateSecurityGroupRequest createSecurityGroupRequest = new CreateSecurityGroupRequest();
    // 设置安全组名字
    createSecurityGroupRequest.setName(newName);
    // 设置安全组描述
    createSecurityGroupRequest.setDesc(newDescription);
    List<SecurityGroupRuleModel> rules = new ArrayList<SecurityGroupRuleModel>();
    rules.add(new SecurityGroupRuleModel()
            // 设置备注
            .withRemark(securityGroupRemark)
            // 设置协议类型
            .withProtocol(securityGroupProtocol)
            // 设置端口范围,默认空时为1-65535,可以指定80等单个端口
            .withPortRange(securityGroupPortRange)
            // 设置入站/出站,取值ingress或egress,必选参数
            .withDirection(securityGroupDirection)
            // 设置源IP地址,与sourceGroupId不能同时设定值
            .withSourceIp(securityGroupSourceIp)
            // 设置源安全组ID
            .withSourceGroupId(securityGroupSourceGroupId));

    rules.add(new SecurityGroupRuleModel()
            // 设置备注
            .withRemark(securityGroupRemark)
            // 设置协议类型
            .withProtocol(securityGroupProtocol)
            // 设置端口范围,默认空时为1-65535,可以指定80等单个端口
            .withPortRange(securityGroupPortRange)
            // 设置入站/出站,取值ingress或egress,必选参数
            .withDirection(securityGroupDirection)
            // 设置目的IP地址,与destGroupId不能同时设定值
            .withDestIp(securityGroupDestIp)
            // 设置目的安全组ID
            .withDestGroupId(securityGroupDestGroupId));
    // 设置安全组规则
    createSecurityGroupRequest.setRules(rules);
    // 创建安全组
    System.out.println(bccClient.createSecurityGroup(createSecurityGroupRequest).getSecurityGroupId());
}

同一安全组中的规则以remark、protocol、direction、portRange、sourceIp|destIp、sourceGroupId|destGroupId唯一性索引,重复记录报409错误。
protocol的取值(tcp|udp|icmp),默认值为空,代表all。
具体的创建安全组规则接口描述BCC API 文档创建安全组

删除安全组

以下代码可以删除指定的安全组:

public static void deleteSecurityGroup(BccClient bccClient) {
    // 删除安全组id为securityGroupId的安全组
    bccClient.deleteSecurityGroup(securityGroupId);
}

授权安全组规则

使用以下代码可以在指定安全组中添加授权安全组规则:

public static void authorizeSecurityGroupRule(BccClient bccClient) {
    SecurityGroupRuleOperateRequest securityGroupRuleOperateRequest = new SecurityGroupRuleOperateRequest();

    securityGroupRuleOperateRequest.setSecurityGroupId(securityGroupId);
    SecurityGroupRuleModel securityGroupRuleModel = new SecurityGroupRuleModel()
            // 设置备注
            .withRemark(securityGroupRemark)
            // 设置协议类型
            .withProtocol(securityGroupProtocol)
            // 设置端口范围,默认空时为1-65535,可以指定80等单个端口
            .withPortRange(securityGroupPortRange)
            // 设置入站/出站,取值ingress或egress,必选参数
            .withDirection(securityGroupDirection)
            // 设置源IP地址,与sourceGroupId不能同时设定值
            .withSourceIp(securityGroupSourceIp)
            // 设置源安全组ID
            .withSourceGroupId(securityGroupSourceGroupId);

    // 设置安全组规则
    securityGroupRuleOperateRequest.setRule(securityGroupRuleModel);
    // 执行授权安全组规则
    bccClient.authorizeSecurityGroupRule(securityGroupRuleOperateRequest);
}
  • 同一安全组中的规则以remark、protocol、direction、portRange、sourceIp|destIp、sourceGroupId|destGroupId六元组作为唯一性索引,若安全组中已存在相同的规则将报409错误。
  • 具体的接口描述BCC API 文档授权安全组规则

撤销安全组规则

使用以下代码可以在指定安全组中撤销指定安全组规则授权:

public static void revokeSecurityGroupRule(BccClient bccClient) {
    SecurityGroupRuleOperateRequest securityGroupRuleOperateRequest = new SecurityGroupRuleOperateRequest();
    // 设置安全组规则id
    securityGroupRuleOperateRequest.setSecurityGroupId(securityGroupId);

    SecurityGroupRuleModel securityGroupRuleModel = new SecurityGroupRuleModel()
            // 设置备注
            .withRemark(securityGroupRemark)
            // 设置协议类型
            .withProtocol(securityGroupProtocol)
            // 设置端口范围,默认空时为1-65535,可以指定80等单个端口
            .withPortRange(securityGroupPortRange)
            // 设置入站/出站,取值ingress或egress,必选参数
            .withDirection(securityGroupDirection)
            // 设置源IP地址,与sourceGroupId不能同时设定值
            .withSourceIp(securityGroupSourceIp)
            // 设置源安全组ID
            .withSourceGroupId(securityGroupSourceGroupId);
    // 执行撤销安全组规则
    bccClient.revokeSecurityGroupRule(securityGroupRuleOperateRequest);
}
  • 同一安全组中的规则以remark、protocol、direction、portRange、sourceIp|destIp、sourceGroupId|destGroupId六元组作为唯一性索引,若安全组中不存在对应的规则将报404错误。
  • 具体的接口描述BCC API 文档撤销安全组规则

密钥对

创建密钥对

创建密钥对,单个用户在一个region默认配额500个(创建和导入的密钥对之和)创建后的密钥对可植入实例以实现远程登录虚机:

public static void createKeypair(BccClient bccClient, String keyName, String keyDes) {

    KeypairCreateRequest keypairCreateRequest = new KeypairCreateRequest();

    // 设置密钥名

    keypairCreateRequest.setName(keyName);

    // 设置密钥描述

    keypairCreateRequest.setDescription(keyDes);

    bccClient.createKeypair(keypairCreateRequest);

}

导入密钥对

用于用户自行导入创建密钥对:

public static void importKeypair(BccClient bccClient, String keyName, String keyDes, String publicKey) {

    KeypairImportRequest keypairImportRequest = new KeypairImportRequest();

    // 导入密钥名

    keypairImportRequest.setName(keyName);

    // 添加描述

    keypairImportRequest.setDescription(keyDes);

    // 公钥内容

    keypairImportRequest.setPublicKey(publickey);

    bccClient.importKeypair(keypairImportRequest);

}

查询密钥对详情

用于查询单个密钥对的详细信息:

public static void keypairDetail(BccClient bccClient, String keypairId) {

    KeypairIDetailRequest keypairDetailRequest = new KeypairDetailRequest();

    // 密钥名ID

    keypairDetailRequest.setKeypairId(keypairId);

    KeypairDetailResponse keypairDetailResponse = bccClient.keypairDetail(keypairDetailRequest);

}

绑定密钥对

用于将所选密钥对(限单个)绑定到所选虚机(支持多台)目前一台虚机只能绑定一个密钥对:

public static void attachKeypair(BccClient bccClient, String keypairId, String instanceIds) {

    KeypairAttachRequest keypairAttachRequest = new KeypairAttachRequest();

    // 被绑密钥ID

    keypairAttachRequest.setKeypairId(keypairId);

    // 实例

    keypairAttachRequest.setaddInstance(instanceIds);

    bccClient.attachKeypair(keypairAttachRequest);

}

解绑密钥对

用于将所选虚机与它们各自绑定的密钥对解绑,此操作仅适用于Linux系统的虚机,且所选虚机必须处于运行中或关机状态:

public static void detachKeypair(BccClient bccClient, String keypairId, String instanceIds) {

    KeypairDetachRequest keypairDetachRequest = new KeypairDetachRequest();

    // 被绑密钥ID

    keypairDetachRequest.setKeypairId(keypairId);

    // 实例

    keypairDetachRequest.setaddInstance(instanceIds);

    bccClient.detachKeypair(keypairDetachRequest);

}

删除密钥对

用于删除密钥对,已经绑定虚机的密钥对无法被删除:

public static void deleteKeypair(BccClient bccClient, String keypairId) {

    KeypairDeleteRequest keypairDeleteRequest = new KeypairDeleteRequest();

    // 被删密钥ID

    keypairDeleteRequest.setKeypairId(keypairId);

    bccClient.deleteKeypair(keypairDeleteRequest);

}