【问题标题】:Can't restrict API access by positional args via external_auth SaltStack无法通过 external_auth SaltStack 通过位置参数限制 API 访问
【发布时间】:2021-04-09 12:08:58
【问题描述】:

我正在尝试通过 pam 模块限制对特定 SLS 文件的调用 state.apply

external_auth:
  pam:
    myuser:
      - '@runner':
        - jobs.list_job
      - '*':
        - test.ping
        - 'state.apply':
          args:
           - 'path/to/sls'

当我通过 CherryPy API 调用 API 时,我得到 401。

curl http://sat_master/run -H 'content-type: application/json' \
-d [{"tgt":"target","arg":["path/to/sls"],"kwarg":{"pillar":{"foo1":"bar1","foo2":"bar2"}},"client":"local_async","fun":"state.apply","username":"myuser","password":"<passwrod>","eauth":"pam"}]

我也尝试过:

external_auth:
  pam:
    myuser:
      - '@runner':
        - jobs.list_job
      - '*':
        - test.ping
        - 'state.apply':
          args:
           - '.*'

external_auth:
  pam:
    myuser:
      - '@runner':
        - jobs.list_job
      - '*':
        - test.ping
        - 'state.apply':
          args:
           - '.*'
          kwargs:
           '.*' : '.*'

如果我不指定 args 它会起作用:

external_auth:
  pam:
    myuser:
      - '@runner':
        - jobs.list_job
      - '*':
        - test.ping
        - state.apply

如何正确做?

【问题讨论】:

    标签: cherrypy salt-stack


    【解决方案1】:

    args 字段应该是函数对象的字段。 IE。 :

    错误

    '*':
      - state.apply:
        args:
         - 'path/to/sls'
    

    JSON 等价物

    {
      "*": [
        {
          "state.apply": null,
          "args": [
            "path/to/sls"
          ]
        }
      ]
    }
    

    正确

    '*':
      - state.apply:
          args:
            - 'path/to/sls'
    

    JSON 等价物

    {
      "*": [
        {
          "state.apply": {
            "args": [
              "path/to/sls"
            ]
          }
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-06
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      • 2021-09-03
      • 2019-07-22
      相关资源
      最近更新 更多