You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2022/12/13 04:44:05 UTC
[dubbo-website] branch master updated: update(qos): anonymous access permission check doc. (#1716)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git
The following commit(s) were added to refs/heads/master by this push:
new ea2ac57db5b update(qos): anonymous access permission check doc. (#1716)
ea2ac57db5b is described below
commit ea2ac57db5bc0adb361ce40ff437cfcc99e4b524
Author: Koy Zhuang <ko...@ko8e24.top>
AuthorDate: Tue Dec 13 12:43:58 2022 +0800
update(qos): anonymous access permission check doc. (#1716)
---
.../java-sdk/reference-manual/qos/overview.md | 55 ++++++++++++++++---
.../spi/description/qos-permission.md | 62 ++++++++++++++++++++++
2 files changed, 111 insertions(+), 6 deletions(-)
diff --git a/content/zh/docs3-v2/java-sdk/reference-manual/qos/overview.md b/content/zh/docs3-v2/java-sdk/reference-manual/qos/overview.md
index 6846ed64f7b..997529ca399 100644
--- a/content/zh/docs3-v2/java-sdk/reference-manual/qos/overview.md
+++ b/content/zh/docs3-v2/java-sdk/reference-manual/qos/overview.md
@@ -9,12 +9,13 @@ description: dubbo 2.5.8 新版本增加了 QOS 模块,提供了新的 telnet
## 相关参数说明
QoS 提供了一些启动参数,来对启动进行配置,他们主要包括:
-| 参数 | 说明 | 默认值 |
-|---------------------------------|----------------|-------|
-| qos-enable | 是否启动QoS | true |
-| qos-port | 启动QoS绑定的端口 | 22222 |
-| qos-accept-foreign-ip | 是否允许远程访问 | false |
-| qos-accept-foreign-ip-whitelist | 支持的远端主机ip地址(段) | (无) |
+| 参数 | 说明 | 默认值 |
+|---------------------------------|----------------|-----------|
+| qos-enable | 是否启动QoS | true |
+| qos-port | 启动QoS绑定的端口 | 22222 |
+| qos-accept-foreign-ip | 是否允许远程访问 | false |
+| qos-accept-foreign-ip-whitelist | 支持的远端主机ip地址(段) | (无) |
+| qos-anonymous-access-permission-level | 支持的匿名访问的权限级别 | PUBLIC(1) |
> 注意,从2.6.4/2.7.0开始,qos-accept-foreign-ip默认配置改为false,如果qos-accept-foreign-ip设置为true,有可能带来安全风险,请仔细评估后再打开。
@@ -66,6 +67,44 @@ dubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13, 132.12.10.13/24
-Ddubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13,132.12.10.13/24
```
+## 权限
+为了对生命周期探针的默认支持,QoS 提供了匿名访问的能力以及对权限级别的设置,目前支持的权限级别有:
+- PUBLIC(1)
+ 默认支持匿名访问的命令权限级别,目前只支持生命周期探针相关的命令
+- PROTECTED(2)
+ 命令默认的权限级别
+- PRIVATE(3)
+ 保留的最高权限级别,目前未支持
+- NONE
+ 最低权限级别,即不支持匿名访问
+
+> 权限级别 `PRIVATE`> `PROTECTED`> `PUBLIC`> `NONE`, 高级别权限可访问同级别和低级别权限命令。
+当前以下命令权限为`PUBLIC`, 其它命令默认权限别为`PROTECTED`。
+
+| 命令 | 权限等级 |
+|---------------------------------------|-------------------|
+| Live | PUBLIC (1) |
+| Startup | PUBLIC (1) |
+| Ready | PUBLIC (1) |
+| Quit | PUBLIC (1)|
+
+默认情况下,dubbo 允许匿名主机发起匿名访问,只有`PUBLIC`权限级别的命令可以执行,其他更高权限的命令会被拒绝。
+
+**关闭匿名访问**
+可以通过设置`qos-anonymous-access-permission-level=NONE`来关闭匿名访问。
+
+**设置权限级别**
+可以通过配置文件`dubbo.properties` 修改:
+```
+dubbo.application.qos-anonymous-access-permission-level=PROTECTED
+```
+或者
+可以通过设置 JVM 参数:
+```
+-Ddubbo.application.qos-anonymous-access-permission-level=PROTECTED
+```
+来允许匿名访问更高级别的权限的命令。
+
## 协议
### telnet 与 http 协议
@@ -124,6 +163,7 @@ As Consumer side:
-Ddubbo.application.qos-port=33333
-Ddubbo.application.qos-accept-foreign-ip=false
-Ddubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13,132.12.10.13/24
+-Ddubbo.application.qos-anonymous-access-permission-level=PUBLIC
```
### 使用 dubbo.properties 文件配置
@@ -133,6 +173,7 @@ dubbo.application.qos-enable=true
dubbo.application.qos-port=33333
dubbo.application.qos-accept-foreign-ip=false
dubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13, 132.12.10.13/24
+dubbo.application.qos-anonymous-access-permission-level=PUBLIC
```
### 使用XML方法配置
@@ -149,6 +190,7 @@ dubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13, 132.12.10.13/24
<dubbo:parameter key="qos-enable" value="true"/>
<dubbo:parameter key="qos-accept-foreign-ip" value="false"/>
<dubbo:parameter key="qos-accept-foreign-ip-whitelist" value="123.12.10.13,132.12.10.13/24"/>
+ <dubbo:parameter key="qos-anonymous-access-permission-level" value="NONE"/>
<dubbo:parameter key="qos-port" value="33333"/>
</dubbo:application>
<dubbo:registry address="multicast://224.5.6.7:1234"/>
@@ -166,4 +208,5 @@ dubbo.application.qos-enable=true
dubbo.application.qos-port=33333
dubbo.application.qos-accept-foreign-ip=false
dubbo.application.qos-accept-foreign-ip-whitelist=123.12.10.13, 132.12.10.13/24
+dubbo.application.qos-anonymous-access-permission-level=NONE
```
diff --git a/content/zh/docs3-v2/java-sdk/reference-manual/spi/description/qos-permission.md b/content/zh/docs3-v2/java-sdk/reference-manual/spi/description/qos-permission.md
new file mode 100644
index 00000000000..02bb73e0950
--- /dev/null
+++ b/content/zh/docs3-v2/java-sdk/reference-manual/spi/description/qos-permission.md
@@ -0,0 +1,62 @@
+---
+type: docs
+title: "QoS匿名访问权限验证扩展"
+linkTitle: "QoS匿名访问权限验证扩展"
+weight: 27
+---
+
+## 扩展说明
+
+QoS匿名访问权限验证扩展点。
+
+## 扩展接口
+
+`org.apache.dubbo.qos.permission.PermissionChecker`
+
+## 扩展配置
+
+
+Dubbo QoS `dubbo.application.qos-anonymous-access-permission-level` 匿名访问权限校验。
+
+## 默认实现
+
+`org.apache.dubbo.qos.permission.DefaultAnonymousAccessPermissionChecker`
+
+## 扩展示例
+
+Maven 项目结构:
+
+```
+src
+ |-main
+ |-java
+ |-com
+ |-xxx
+ |-XxxPermissionChecker.java (实现PermissionChecker接口)
+ |-resources
+ |-META-INF
+ |-dubbo
+ |-org.apache.dubbo.qos.permission.PermissionChecker` (纯文本文件,内容为:qosPermissionChecker=com.xxx.XxxPermissionChecker)
+```
+
+XxxPermissionChecker.java:
+
+```java
+package com.xxx.qos.permission;
+
+import org.apache.dubbo.qos.permission.PermissionChecker;
+
+public class XxxAnonymousAccessPermissionChecker implements PermissionChecker {
+
+ @Override
+ public boolean access(CommandContext commandContext, PermissionLevel defaultCmdRequiredPermissionLevel) {
+ // ...
+ }
+}
+```
+
+META-INF/dubbo/org.apache.dubbo.qos.permission.PermissionChecker:
+
+```properties
+qosPermissionChecker=com.xxx.XxxPermissionChecker
+```