0

列出用户并获取进度数据库的关联表权限的最佳方法是什么?

4

4 回答 4

1

为了审计目的,我最终针对我的 odbc 编写了一个快速的 sql 查询。

SELECT * FROM sysprogress.systabauth ORDER BY grantee, tbl

看起来还有几个存储过程(至少在我们的环境中)可以满足您的需求:

SQL_TABLE_PRIVILEGES
SQL_TABLE_PRIVILEGES2X
于 2012-10-24T15:29:21.883 回答
1

4GL 引擎和 SQL-92 引擎的权限处理方式略有不同。

从 4GL 的角度来看,您希望查看 _User 表来查找用户。IE:

for each _user no-lock:
  display _user.
end.

要查看表权限,请查看表的 CAN-* 字段:

for each _file no-lock where _hidden = no:
  display
    _file-name
    _can-read
    _can-write
    _can-create
    _can-delete
  .
end.

Tim 指出的文档有更多细节。

于 2012-10-24T16:46:39.723 回答
0

用户存储在 _user 表中。您可以通过在此处查阅他们的身份和安全文档来了解有关 Progress 如何进行安全和身份管理的更多信息:http: //communities.progress.com/pcom/docs/DOC-107735

于 2012-10-24T16:00:04.730 回答
0

这将为您提供用户列表以及他们对当前数据库中每个表的权限:

FOR EACH _user
    NO-LOCK:
    DISPLAY
        _User._Userid
        _User._User-name.
    FOR EACH _File
        WHERE _File._Hidden = FALSE
        NO-LOCK:
        DISPLAY
            _File._file-name FORMAT "x(20)"
            CAN-DO(_File._can-read,_User._userid)
                FORMAT "Y/N" COLUMN-LABEL "Read"
            CAN-DO(_File._can-write,_User._userid)
                FORMAT "Y/N" COLUMN-LABEL "Write"
            CAN-DO(_File._can-create,_User._userid)
                FORMAT "Y/N" COLUMN-LABEL "Create"
            CAN-DO(_File._can-delete,_User._userid)
                FORMAT "Y/N" COLUMN-LABEL "Delete"
            .
    END.
END.

此报告将很快变大,具体取决于数据库中的用户和表的数量。

于 2012-11-01T23:18:26.063 回答