| 说明 | 允许访问指定主机 |
| 用法 | sbx policy allow network [--sandbox SANDBOX] RESOURCES [flags] |
描述
允许沙箱访问指定主机。
RESOURCES 是主机名、域名、IP 地址或 CIDR 前缀的逗号分隔列表。规则默认适用于 TCP;使用 --protocol 可选择 UDP 或 两种传输方式。支持精确域名(example.com)、通配符子域名 (.example.com)、多标签通配符(.example.com)、单字符 通配(api?.example.com)、字符类(api[12].example.com、 api[!1].example.com),以及可选的端口后缀(example.com:443)。IPv6 地址的端口要用方括号括起来([2001:db8::1]:443),或者使用 CIDR 前缀 (2001:db8::1/128);不带这些的写法会被拒绝。使用 "" 允许所有主机。单独 ""、转义的通配字符(如 "*"),以及上述形式之外的任何其他模式,都会被拒绝, 而不是被存成一条什么都匹配不到的规则。
该规则默认对所有沙箱全局生效。使用 --sandbox 可改为把 规则添加到限定到单个沙箱的 "local" 策略中。
不使用 --cloud 时,如果同一范围内已经存在针对同一资源、采用相同协议中任一种的 相反决策(对 HTTP 规则而言,指相同的方法、路径和查询约束),该规则会被拒绝, 且不会添加任何内容。请先用 "sbx policy rm network --id RULE_ID" 移除已有规则; 如果该规则限定在沙箱范围内,请加上 --sandbox SANDBOX。不同范围内的规则可以共存, 例如全局允许规则与沙箱范围的拒绝规则,此时拒绝规则优先。你所在组织的策略中的 规则不会触发这种拒绝。使用 --cloud 时,新规则会直接替换同一范围内的相反规则。
使用 --method 可添加 HTTP 规则。--method 接受逗号分隔的 HTTP 方法或 ANY;--path 默认为 /**。重复使用 --query name=value 可要求 查询参数。
HTTP 路径、查询参数名和查询值的匹配不区分 ASCII 字母大小写。 例如 /API/** 匹配 /api/items,Tag=PROD 匹配 tag=prod。
使用 --cloud: 允许云端沙箱访问指定主机。
同一范围内匹配的拒绝条目会被该允许条目替换。
RESOURCES 是网络模式的逗号分隔列表,例如 api.example.com、 *.example.com、10.0.0.0/8 或 api.example.com:443。不支持 HTTP 方法、路径、查询和 传输协议选择器。
规则默认适用于账号。使用 --sandbox 并加上沙箱名称或 ID 可更改单个沙箱的策略。用 "sbx --cloud policy ls" 可列出规则。
选项
| 选项 | 默认值 | 说明 |
|---|---|---|
--method | 把规则限定到指定的 HTTP 方法(逗号分隔);用 ANY 匹配所有方法 | |
--path | 把规则限定到指定的 HTTP 路径通配符(例如 /repos/);默认为 / | |
--protocol | 网络协议:tcp 或 udp;可重复指定或用逗号分隔以同时使用两者 | |
--query | 要求带某个 HTTP 查询参数(name=value 形式);可重复传入 | |
--sandbox | 把规则限定到特定的沙箱(默认:所有沙箱) |
全局选项
| 选项 | 默认值 | 说明 |
|---|---|---|
--cloud | 改为调用 Docker Cloud Sandboxes API,而不是本地 sandboxd(支持的动词正在逐步增加,运行 sbx --cloud --help 查看当前列表) | |
-D, --debug | 启用调试日志 | |
--no-input | 从不提示;需要应答的命令会直接失败,并给出应当运行的命令 |
示例
# 允许访问单个主机(所有沙箱)
sbx policy allow network api.example.com
# 允许访问多个主机
sbx policy allow network "api.example.com,cdn.example.com"
# 只为特定沙箱允许某个主机
sbx policy allow network --sandbox my-sandbox api.example.com
# 允许某个主机的所有子域名
sbx policy allow network "*.npmjs.org"
# 在两种传输协议上允许所有出站流量
sbx policy allow network --protocol tcp,udp "**"
# 允许对某个路径发起 GET 和 HEAD 请求
sbx policy allow network api.example.com --method GET,HEAD --path '/v1/**'
# 在账号策略中允许某个主机
sbx --cloud policy allow network api.example.com
# 为某个沙箱允许一个主机
sbx --cloud policy allow network --sandbox my-sandbox api.example.com参见
sbx policy allow— 为沙箱添加允许规则