如何解决无法通过 external_auth SaltStack 通过位置参数限制 API 访问
我试图通过 pam 模块限制调用 state.apply
仅针对特定的 SLS 文件。
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
如何正确做?
解决方法
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"
]
}
}
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。