4

sec:role-exists() を呼び出しています。この機能を管理者以外の誰かに付与するために必要なアクセス許可を見つけようとしています。戻ってきたエラーは、http://marklogic.com/xdmp/privileges/get-role特権が必要であることを示しています。

SEC-PRIVDNE: xdmp:security-assert("http://marklogic.com/xdmp/privileges/get-role", "execute") -- Privilege does not exist: action(http://marklogic.com/xdmp/privileges/get-role), kind(execute)

しかし、sec:privilege-add-roles を介して管理者アカウントを使用してこのロールを付与しようとすると、権限が存在しないと表示されます。

[1.0-ml] SEC-PRIVDNE: (err:FOER0000) Privilege does not exist: action(http://marklogic.com/xdmp/privileges/get-role), kind(execute)

何か案は?

これは、私が管理者として実行している付与に使用しているコードのスニペットです。

(: grant the needed privileges to the role :)
let $grant_privs :=
xdmp:invoke-function(
  function() {
    let $required_roles := (
      "http://marklogic.com/xdmp/privileges/create-role",
      "http://marklogic.com/xdmp/privileges/remove-role",
      "http://marklogic.com/xdmp/privileges/get-role-ids",
      "http://marklogic.com/xdmp/privileges/get-role-names",
      "http://marklogic.com/xdmp/privileges/get-role",
      "http://marklogic.com/xdmp/privileges/xdmp-invoke-in",
      "http://marklogic.com/xdmp/privileges/xdmp-invoke"
    )

    return
      for $r in $required_roles
        return
          sec:privilege-add-roles(
            $r,
            "execute",
            "auth-lib"
          )
  },
  <options xmlns="xdmp:eval">
    <database>{ xdmp:security-database() }</database>
    <transaction-mode>update-auto-commit</transaction-mode>
    <isolation>different-transaction</isolation>
  </options>
)
4

1 に答える 1

7

インストール時に特権が作成されなかったのは、実際にはバグです。これは次のリリースで修正される予定ですが、当面はセキュリティ データベースに手動で作成できます。

sec:create-privilege(
  "role-exists",
  "http://marklogic.com/xdmp/privileges/get-role",
  "execute",
  "security")
于 2016-02-17T01:11:28.293 に答える