ACL
初始化
确认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
新建AclClient
AclClient是ACL服务的客户端,为开发者与ACL服务进行交互提供了一系列的方法。
新建AclClient时,需要先使用Endpoint、AK、SK对AclClientConfiguration类型config实例进行配置,再使用config实例对AclClient进行配置,配置示例如下:
static final String HOST = "";
static final String AK = "";
static final String SK = "";
AclClientConfiguration config = new AclClientConfiguration();
config.setCredentials(new DefaultBceCredentials(AK, SK));
config.setEndpoint(HOST);
AclClient aclClient = new AclClient(config);
ACL管理
访问控制列表ACL(Access Control List)是VPC内的防火墙组件,用于控制子网级别的安全策略,灵活设置一个或多个子网的流量,满足用户不同网络部署的安全需求。 ACL管理前,需要关注下列内容:
条目 | ACL规则 |
---|---|
ACL范围 | ACL隶属于VPC,生效对象为该VPC下的子网 |
控制实例类型 | ACL访问控制策略生效于子网下的所有实例,包括BCC、DCC、BBC、RDS、SCS等实例 |
默认ACL规则 | 系统为每个子网创建了默认的ACL,该ACL中有一条默认规则,允许所有规则。默认规则不可以编辑 |
入站或出站 | 入站、出站的方向是指,站在子网下实例角度看到的方向 |
规则最大限制 | 对于同一个ACL下的规则,每个方向支持最多256个规则 |
规则触发 | 流量一旦匹配了ACL中某条规则,即触发访问控制策略(允许或拒绝),不会继续和其他的规则进行匹配 |
ACL状态 | ACL是无状态的,只对一条数据流的指定方向流量做访问控制,不会自动对该条数据流的返回流量做控制。 |
新建ACL
函数声明
public void createAcl(CreateAclRequest createAclRequest) {
}
参数含义
请参考OpenAPI文档 创建ACL请求参数
返回值
- 操作成功
无返回值
- 操作失败
操作失败返回异常列表参考ACL异常列表
代码示例
具体代码示例参考:ExampleAddAclRule.java
列举ACL
函数声明
public GetAclResponse getAcl(String vpcId) {
}
public GetAclResponse getAcl(GetAclRequest getAclRequest) {
}
参数含义
请参考OpenAPI文档 列举ACL请求参数
返回值
- 操作成功
{
"metadata":"公共返回metadata结构参看附录",
"vpcId": "vpc-0d7urd9fyxxx",
"vpcName": "v11",
"vpcCidr": "192.168.0.0/16",
"aclEntrys": [
{
"subnetId": "sbn-nfqvsskw93zi",
"subnetName": "sbn-22",
"subnetCidr": "192.168.1.0/24",
"aclRules": [
{
"id": "ar-621tcndunsce",
"subnetId": "sbn-nfqvsskw93zi",
"description": "",
"protocol": "tcp",
"sourceIpAddress": "192.168.1.0/24",
"destinationIpAddress": "1.2.3.4/32",
"sourcePort": "0-65535",
"destinationPort": "80",
"position": 100,
"direction": "egress",
"ipVersion": 4,
"action": "deny"
}
]
}
]
}
- 操作失败
操作失败返回异常列表参考ACL异常列表
代码示例
具体代码示例参考:ExampleAclList.java
更新ACL
函数声明
public void modifyAclRuleAttributes(ModifyAclRuleAttributesRequest modifyAclRuleAttributesRequest) {
}
public void modifyAclRuleAttributes(String aclRuleId, AclRule aclRule) {
}
参数含义
请参考OpenAPI文档 更新ACL请求参数
返回值
- 操作成功
无返回值
- 操作失败
操作失败返回异常列表参考ACL异常列表
代码示例
具体代码示例参考:ExampleUpdateAclRule.java
删除ACL
函数声明
public void deleteAcl(String aclRuleId) {
}
public void deleteAcl(DeleteAclRequest deleteAclRequest) {
}
参数含义
请参考OpenAPI文档 删除ACL请求参数
返回值
- 操作成功
无返回值
- 操作失败
操作失败返回异常列表参考ACL异常列表
代码示例
具体代码示例参考:ExampleDeleteAclRule.java
分页查询ACL规则
函数声明
public ListAclResponse listAclRules(ListAclRequest listAclRequest) {
}
参数含义
请参考OpenAPI文档 列举ACL规则请求参数
返回值
- 操作成功
{
"metadata":"公共返回metadata结构参看附录",
"maxKeys": 1000,
"isTruncated": false,
"aclRules": [
{
"id": "ar-jjxp7g3dihfk",
"subnetId": "sbn-0317afqpxw41",
"description": "",
"protocol": "tcp",
"sourceIpAddress": "2400:da00:e003:4c11::/64",
"destinationIpAddress": "1::/64",
"sourcePort": "0-65535",
"destinationPort": "80",
"position": 12,
"direction": "egress",
"ipVersion": 6,
"action": "allow"
}
]
}
- 操作失败
操作失败返回异常列表参考ACL异常列表
代码示例
具体代码示例参考:ExampleMarkerListAcl.java
附录
公共返回信息metadata格式
{
"bceRequestId":"f5f0821d-45fe-439b-bbf4-fc48b639f84a",
"contentLength":28,
"contentType":"application/json;charset=UTF-8",
"date":1701917695000,
"server":"openresty/1.15.8.1"
}