
# 配置API的访问控制
访问控制策略是API网关提供的API安全防护组件之一，主要用来控制访问API的IP地址和账号，您可以通过设置黑白名单来访问API。实例级访问控制策略请参考[表1](https://support.huaweicloud.com/usermanual-apig/apig_03_0038.html#apig_03_0038__table14750184110266)。
- 白名单：支持配置IP/账号名/账号ID的白名单访问，不在白名单列表中的请求将会被拒绝。
- 黑名单：支持配置IP/账号名/账号ID的黑名单，在黑名单列表中的请求将会被API网关拒绝。
#### 操作视频
本视频演示如何在API网关服务上创建一个访问控制策略，设置IP地址黑名单禁止用户通过IP地址访问API。
因产品功能演进，操作界面可能存在差异，相关视频仅供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="object119616611467" class="idp-external-video" src="https://res-static.hc-cdn.cn/cloudbu-site/china/zh-cn/support/apig-video/1721111491232623936.mp4" title="创建访问控制" poster="https://support.huaweicloud.com/usermanual-apig/zh-cn_image_0000002314350198.jpg" height="300.0000" width="600.0000"></video>
#### 约束与限制
- 同一个API在同一个环境中只能绑定一个相同限制类型的访问控制策略，一个访问控制策略可以绑定多个API。
- 2022年12月31日后创建的实例支持限制调用API的**账号ID**，在这之前创建的专享版实例不支持，如需使用，请联系客服。
- 策略和API本身相互独立，只有为API绑定策略后，策略才对API生效。为API绑定策略时需指定发布环境，策略只对指定环境上的API生效。
- API的下线操作不影响策略的绑定关系，再次发布后仍然会带有下线前绑定的策略。
- 如果策略与API有绑定关系，则策略无法执行删除操作。

- NLB实例下，本策略暂不支持设置IPv6类型的源IP。
 
#### 创建访问控制策略
1. 进入[API网关控制台](https://console.huaweicloud.com/apig2/#/overview)页面。
2. 根据实际业务在左侧导航栏上方选择实例。

3. 在左侧导航栏选择"API管理 \> API策略"。
4. 在"策略管理"页面，单击"创建策略"。
5. 在"选择策略类型"弹窗中，选择"传统策略 \> 访问控制"。
6. 在"创建策略"弹窗中，根据下表参数说明，配置策略信息。 
   表1访问控制参数说明 
   | 参数   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|
   | 策略名称 | 访问控制策略的名称。支持中文、英文、数字、下划线，且只能以英文或中文开头，长度为3\~64个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 类型   | 控制访问API的类型。 - IP地址：控制调用API的IP地址。  - 账号ID：仅适用**IAM认证** 类型的API，控制调用API的账号ID。仅支持配置账号ID，对账号ID及账号ID下的IAM用户ID做限制，不支持配置IAM用户ID。 可以配置单账号ID或多账号ID，多账号ID以英文格式下的逗号","隔开。账号ID为英文字母、数字组成的32位字符；多账号ID字符的总长度不超过1024。   - 账号名：仅适用**IAM认证** 类型的API，控制调用API的账号名。仅支持配置账号名，对账号名及账号名下的IAM用户名做限制，不支持配置IAM用户名。 可以配置单账号名或多账号名，多账号名以英文格式下的逗号","隔开，账号名支持除英文格式下","以外的任意ASCII字符，账号名长度限制在1\~64个字符，不支持纯数字。多账号名字符的总长度不超过1024。    说明： - **一个API同时绑定两种类型的访问控制策略** **：**账户维度的账户名类型和账号ID类型。访问API时，如果同时有黑白名单，只校验白名单，校验通过则访问成功；如果只有黑名单或白名单，校验通过的结果为"且"逻辑。  - **一个API同时绑定三种类型的访问控制策略：**IP维度的IP类型、账户维度的账号名类型和账号ID类型。访问API时，IP维度和账户维度为"且"的关系，其中一方校验失败则访问失败。（一个API同时绑定IP类型和账号名/账号ID类型的访问控制策略，这两种类型的判断逻辑与三种类型的判断逻辑相同）。   |
   | 动作   | 包括"允许"和"禁止"。 和"类型"配合使用，允许/禁止指定的IP地址/账号名/账号ID访问API。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | IP地址 | **仅当"类型"为"IP地址"时需要配置。** 输入允许或者禁止访问API的IP地址，或IP地址范围。 - 支持以下IP格式： - 常规IP格式，如：127.0.0.1，::1  - IP加掩码，如：192.145.0.0/16, 2407:c080:17ef:ffff:: 3104:703a/64  - IP段范围，如：127.0.0.1-192.145.0.1, 2407:c080:17ef:ffff:: 3104:703a-2407:c080:17ef:ffff:: 3104: 704a    - 如果使用IPv6地址，请先确认当前实例是否支持IPv6协议。  - 添加多个不同格式的IP地址时，每个IP地址输入完成后，按回车键换行。  - 允许或禁止访问的IP地址条数，分别可以配置最多100条。                                                                                                                                                      |
   | 账号ID | **仅当"类型"为"账号ID"时需要配置。** 输入允许或者禁止访问API的账号ID，多个账号ID之间使用英文逗号","隔开。 您可以单击控制台右上角的用户名，选择"我的凭证"，在"API凭证"页面获取用户的账号ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 账号名  | **仅当"类型"为"账号名"时需要配置。** 输入允许或者禁止访问API的账号名，多个账号名之间使用英文逗号","隔开。 您可以单击控制台右上角的用户名，选择"我的凭证"，在"API凭证"页面获取用户的账号名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
      
   
   
7. 单击"确定"。 
   - 在策略列表中显示已创建的访问控制策略，表示策略创建成功。
   
   - 如果您需要复制已创建的策略，请在已创建策略的"操作"列中单击"克隆"配置参数即可。**克隆策略的名称不能与已创建的策略名称重复。**
   
   
   
   
8. 策略创建后，您还需要[为策略绑定API]，才能使策略对API生效。
   
   **策略的绑定、解绑、更新会实时生效，不需要重新发布API。**
   
   
 
 #### 为策略绑定API
1. 单击策略名称，进入策略详情。
2. 在API列表区域选择环境后，单击"绑定API"。
3. 筛选API分组以及发布环境，勾选所需的API。 
   支持通过API名称或标签筛选API，标签为创建API时定义的标签。
   
   
4. 单击"确定"，绑定完成。 
   - 如果单个API不需要绑定此策略，单击API所在行的"解绑"。
   
   - 如果批量API不需要绑定此策略，则勾选待解绑的API，单击列表上方"解绑"。最多同时解绑1000个API。
   
   
   
   
 
#### 相关文档
如果您希望通过API创建访问控制策略，请参考[创建ACL策略](https://support.huaweicloud.com/api-apig/CreateAclStrategyV2.html)。
