私有网络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是安全组服务的客户端,为开发者与安全组服务进行交互提供了一系列的方法。

    通过AK/SK方式访问BccClient

    1.在新建BccClient之前,需要先创建配置文件对BccClient进行配置,以下将此配置文件命名为sg_sample_conf.py,具体配置信息如下所示:

    #!/usr/bin/env python
    #coding=utf-8
    
    #导入Python标准日志模块
    import logging
    
    #从Python SDK导入Bcc配置管理模块以及安全认证模块
    from baidubce.bce_client_configuration import BceClientConfiguration
    from baidubce.auth.bce_credentials import BceCredentials
    import baidubce
    
    #设置BccClient的Host,Access Key ID和Secret Access Key
    sg_host = ""bj.bcebos.com"
    access_key_id = "AK"
    secret_access_key = "SK"
    
    #设置日志文件的句柄和日志级别
    logger = logging.getLogger('baidubce.http.bce_http_client')
    fh = logging.FileHandler("sample.log")
    fh.setLevel(logging.DEBUG)
    
    #设置日志文件输出的顺序、结构和内容
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fh.setFormatter(formatter)
    logger.setLevel(logging.DEBUG)
    logger.addHandler(fh)
    
    #创建BceClientConfiguration
    config = BceClientConfiguration(credentials=BceCredentials(access_key_id, secret_access_key), endpoint = sg_host)

    注意: 针对日志文件,Logging有如下级别:DEBUG,INFO,WARNING,ERROR,CRITICAL。

    在上面代码中,access_key_id对应控制台中的“Access Key ID”,secret_access_key对应控制台中的“Access Key Secret”,获取方式请参考《操作指南 管理ACCESSKEY》。

    上面的方式用户需要自己指定BOS的服务的域名,可以通过赋值给bos_host变量来指定。不指定时无需传入endpoint参数,默认为北京区域http://bos.bj.bcebos.com。 2.在完成上述配置之后,参考如下代码新建一个BccClient。

    #导入BccClient配置文件
    import sg_sample_conf 
    		
    #导入Bcc相关模块
    from baidubce import exception
    from baidubce.services import bcc
    from baidubce.services.bcc.bcc_client import BccClient
    from baidubce.services.bcc.bcc_model import SecurityGroupRuleModel
    	
    #新建BccClient
    sg_client = BccClient(sg_sample_conf.config)

    安全组管理

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

    默认安全组的规则:

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

    新建安全组

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

    sg_rule_list = SecurityGroupRuleModel(
        remark='备注',
        direction='ingress',
        portRange='1-65535',
        protocol='tcp',
        sourceIp='172.16.0.0/12')
    sg_client = BccClient(sg_sample_conf.config)
    response = sg_client.create_security_group(
        name='test',
        vpc_id='vpc-icc3paqaf5g0',
        rules=[sg_rule_list])
    print (response)

    create_security_group参数如下:

    参数名称 类型 是否必需 描述
    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

    列举安全组列表

    如下代码可以列举实例绑定的所有安全组规则:

    sg_client = BccClient(sg_sample_conf.config)
    response = sg_client.list_security_groups(instance_id='$instance_id')
    print (response)

    list_security_groups参数如下:

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

    注意: 返回信息包含security_groups,security_groups是一个list列表,包含实例绑定的不同安全组以及安全组内的规则。

    删除安全组

    如下代码可以删除安全组:

    sg_client = BccClient(sg_sample_conf.config)
    response = sg_client.delete_security_group(security_group_id='$security_group_id')
    print (response)

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

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

    授权安全组规则

    如下代码可以授权安全组规则:

    sg_client = BccClient(sg_sample_conf.config)
    sg_rule_list = SecurityGroupRuleModel(
        remark='备注',
        direction='egress',
        portRange='1-65535',
    	protocol='udp',
        sourceIp='172.16.0.0/12')
    response = sg_client.authorize_security_group_rule(
        security_group_id='$security_group_id',
        rule=sg_rule_list)
    print (response)

    authorize_security_group_rule用于在安全组中授权新的安全组规则,参数如下:

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

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

    撤销安全组规则

    如下代码可以撤销安全组规则:

    sg_client = BccClient(sg_sample_conf.config)
    sg_rule_list = SecurityGroupRuleModel(
        remark='备注',
        direction='egress',
        portRange='1-65535',
    	protocol='udp',
        sourceIp='172.16.0.0/12')
    response = sg_client.revoke_security_group_rule(
        security_group_id='$security_group_id',
        rule=sg_rule_list)
    print (response)

    revoke_security_group_rule用于撤销安全组中的规则,参数如下:

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

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

    上一篇
    子网
    下一篇
    ACL