域名黑名单

注意

黑名单功能将在不久的将来重命名并移动到拒绝名单(denylist)。

您可以使用黑名单来阻止用户创建与特定正则表达式匹配的名称的区域。例如,您可以使用黑名单来阻止用户

  • 创建特定的区域。

  • 创建包含特定字符串的区域,

  • 创建某个区域的子区域。

管理黑名单

您可以使用 zone blacklist create 命令,并具有 系统管理员 权限来创建黑名单。例如,要将 example.com. 及其所有子域列入黑名单

$ openstack zone blacklist create --pattern ".*example.com."
+-------------+--------------------------------------+
| Field       | Value                                |
+-------------+--------------------------------------+
| created_at  | 2021-05-27T04:06:42.000000           |
| description | None                                 |
| id          | 7622e241-8c3d-4c03-a692-8747e3cf2658 |
| pattern     | .*example.com.                       |
| updated_at  | None                                 |
+-------------+--------------------------------------+

如果 域或项目角色 尝试创建 foo.example.com.example.com.,他们将遇到错误

$ openstack zone create --email admin@example.com example.com.
Blacklisted zone name
$ openstack zone create --email admin@example.com foo.example.com.
Blacklisted zone name

注意

满足 use_blacklisted_zone 策略的用户可以创建黑名单中的区域名称。默认情况下,只有 系统管理员 具有此覆盖权限。

您可以使用 zone blacklist set 来更新黑名单,以修改其模式或描述;

$ openstack zone blacklist set 81fbfe02-6bf9-4812-a40e-1522ab6862ca --pattern ".*web.example.com"
+-------------+--------------------------------------+
| Field       | Value                                |
+-------------+--------------------------------------+
| created_at  | 2021-05-27T04:14:14.000000           |
| description | None                                 |
| id          | 81fbfe02-6bf9-4812-a40e-1522ab6862ca |
| pattern     | .*web.example.com                    |
| updated_at  | 2021-05-27T04:14:48.000000           |
+-------------+--------------------------------------+

您可以使用 zone blacklist delete 删除黑名单

$ openstack zone blacklist delete 7622e241-8c3d-4c03-a692-8747e3cf2658

当命令成功执行时,不会有任何输出。

使用 REST API

黑名单中使用的正则表达式类似于 Python 正则表达式,但在进行 HTTP 调用时,必须转义某些字符。

例如,此 refex 限制使用 example.com. 及其 ASCII 子域

^([A-Za-z0-9_\\-]+\.)*example\.com\.$

但是,您必须在点 (.) 和 .com 的实例前插入转义字符(反斜杠,)

^([A-Za-z0-9_\\-]+\\.)*example\\.com\\.$

这是 API 调用以及转义了 HTTP 字符的正则表达式

POST /v2/blacklists/ HTTP/1.1
Accept: application/json
Content-Type: application/json

{
  "pattern" : "^([A-Za-z0-9_\\-]+\\.)*example\\.com\\.$",
  "description" : "This blacklists *.example.com."
}

正则表达式

正则表达式可能很难使用。Python 正则表达式文档 可以作为有用的介绍,并且在线正则表达式工具可以在构建和测试用于黑名单 API 的正则表达式时提供帮助。