apache / apache/iotdb

[v0.12.4]用户与角色UDF权限赋予问题,非root用户查询返回空值时,报错"Msg: 602: No permissions for this operation UDTF"

オープン
#4,399 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Java
スター
6.4k
フォーク
1.2k
平均マージ
1日 23時間
マージ済み PR(30日)
115

説明

**Describe the bug**
iotdb 0.12.4修复了0.12.2版本中用户与角色UDF权限赋予非root无法正确生效的问题,可参考[Issue-4308](https://github.com/apache/iotdb/issues/4308)。但是当我们使用非root用户进行UDF查询时,如果查询的值不存在,依然报错"Msg: 602: No permissions for this operation UDTF"。这会给用户误导。希望可以在新版本中修复。

**To Reproduce**
Steps to reproduce the behavior:
1. 使用root用户登录sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root
2. 创建非root用户并赋权:
CREATE ROLE udtf_test 'udtf_passwd'
CREATE ROLE udtf_test_role
GRANT ROLE udtf_test_role PRIVILEGES 'SET_STORAGE_GROUP','CREATE_TIMESERIES','INSERT_TIMESERIES','READ_TIMESERIES','DELETE_TIMESERIES','DROP_FUNCTION','CREATE_FUNCTION' ON root.test
GRANT udtf_test_role TO udtf_test

3. 使用root用户查询:
select WTUR_PwrAt_Ra_F32 from root.test.20.123456789 where time >= 2021-01-01 and time<= 2021-01-31 23:59:59
+----+
|Time|
+----+
+----+

4. 使用udtf_test用户查询:Msg: 602: No permissions for this operation UDTF。

5. 执行命令,导入数据:
insert into root.test.20.123456789(time, WTUR_PwrAt_Ra_F32) values(1,1)
6. root用户和用户分别使用相同命令查询,得到相同的结果如下:
select WTUR_PwrAt_Ra_F32 from root.test.20.123456789 where time >= 2021-01-01 and time<= 2021-01-31 23:59:59
+----+-----------------------------------------+
|Time|root.test.20.123456789.WTUR_PwrAt_Ra_F32|
+----+-----------------------------------------+
+----+-----------------------------------------+

**Expected behavior**
非root用户查询空表格时,应正确返回空值,而非报权限错误,这会使用户产生误解。

Desktop (please complete the following information):

OS: Amazon Linux

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

提供されたロール付与とUDFクエリを使用して、sbin/start-cli.shで報告を再現します。まず空のテーブルで実行し、その後データを挿入してから実行します。関連する権限処理についてはIssue-4308を読み、UDFの認可経路を追跡してください。完了条件は、認可された非rootユーザーが誤解を招く権限エラーではなく、空の結果を受け取ることです。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java, sql
領域
authorization, databases, security
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。