日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

consul之:ACL配置使用

發布時間:2024/4/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 consul之:ACL配置使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

consul自帶ACL控制功能,看了很多遍官方文檔,沒有配置步驟https://www.consul.io/docs/internals/acl.html?主要對各種配置參數解釋,沒有明確的步驟,當時唯一疑惑的是怎樣生成ACL規則。看了很多相關的blog都是相似的內容,都是基礎的安裝測試而已,沒有提到具體配置ACL,估計更多的只是實驗嘗試而已,沒有涉及ACL配置使用。后來有辛搜到了一片文章才恍然大悟,明白ACL配置是怎么回事了,http://qiita.com/yunano/items/931448a590c7f346ed01。我之后是這樣配置的:
1、對數據中心的每個server,添加acl_config.json配置:

{ ??"acl_datacenter":?"datacenter-tag", ??"acl_master_token":?"xxxxxxxxxx9cda01", ??"acl_default_policy":?"deny" }

這3個參數每個server模式的node都必須有。相關參數解釋官方文檔都有,https://www.consul.io/docs/agent/options.html
acl_default_policy默認值值是allow,即能夠執行任何操作,這里需要關閉。
acl_master_token需要在每個server上配置,有management級別的權限,相當于一個種子token。
acl_datacenter區域的標識。
2、通過API接口 /v1/acl/create 創建一個management用戶用于管理token的權限分配,這里生成這個management級別的token需要之前配置文件里面的種子token。

curl -H?"X-Consul-Token: secret" ?-X PUT -d?'{"Name": "datacenter-tag", "Type": "management"}' ?http://127.0.0.1:8500/v1/acl/create?token=xxxxxxxxxx9cda01 {"ID":"xxxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxx"}

3、可以將這個management權限的token配置在ui節目管理的節點上,便于管理ACL、k/v、service等(但是我沒有這么干,不然這個node的權限太大,不便于控制)。

{ ??"acl_datacenter":?"datacenter-tag", ??"acl_master_token":?"xxxxxxxxxxx9cda01", ??"acl_token":?"b9exxxxx-xxxx-xxxx-xxx-xxxxxxxxxx291ba", ??"acl_default_policy":?"deny" }

現在就可以通過ui界面管理token的權限分配了(制訂ACL規則)。

4、合理分配token的權限(制定ACL規則),官方文檔有一例分配說明:

# Default all keys to read-only key?"" { ??policy =?"read" } key?"foo/" { ??policy =?"write" } key?"foo/private/" { ??# Deny access to the dir "foo/private" ??policy =?"deny" } # Default all services to allow registration. Also permits all # services to be discovered. service?"" { ????policy =?"write" } # Deny registration access to services prefixed "secure-". # Discovery of the service is still allowed in read mode. service?"secure-" { ????policy =?"read" } # Allow firing any user event by default. event?"" { ????policy =?"write" } # Deny firing events prefixed with "destroy-". event?"destroy-" { ????policy =?"deny" } # Default prepared queries to read-only. query?"" { ????policy =?"read" } # Read-only mode for the encryption keyring by default (list only) keyring =?"read"

API注冊ACL規則用JSION數據格式:

{ ??"key": { ????"": { ??????"policy":?"read" ????}, ????"foo/": { ??????"policy":?"write" ????}, ????"foo/private": { ??????"policy":?"deny" ????} ??}, ??"service": { ??????"": { ??????????"policy":?"write" ??????}, ??????"secure-": { ??????????"policy":?"read" ??????} ??}, ??"event": { ????"": { ??????"policy":?"write" ????}, ????"destroy-": { ??????"policy":?"deny" ????} ??}, ??"query": { ????"": { ??????"policy":?"read" ????} ??}, ??"keyring":?"read" }

創建好ACL后,將生成的acl_token xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx 配置到每個agent,除了那個ui的server節點,當然這個節點也可以配置這個token,只是權限沒有那么大了,管理不是很便捷。
client節點的acl_config.json配置:

{ ??"acl_datacenter":?"datacenter-tag", ??"acl_token":?"xxxxxx-4bf0-xxxx-2079-xxxxxxxxx" }

server節點的acl_config.json配置(UI的server節點除外):

{ ??"acl_datacenter":?"datacenter-tag", ??"acl_master_token":?"xxxxxxxxxxxxxxxxx", ??"acl_token":?"xxxxxxx-xxxx-xxxx-2079-xxxxxxxxxx", ??"acl_default_policy":?"deny" }

測試ACL是否生效:

[root@xx-xx-xxxx ~]# curl -X PUT -d 'test'?http://127.0.0.1:8500/v1/kv/web/key1 rpc error: Permission denied [root@xx-xx-xxxx ~]# [root@xx-xx-xxxx ~]# curl -X PUT -d 'test'?http://127.0.0.1:8500/v1/kv/foo/key1 true

雖然分享了知識但也得為安全考慮,文章中所有敏感信息均已處理,比如token都是未知或無效的等。

轉載于:https://www.cnblogs.com/duanxz/p/9663582.html

總結

以上是生活随笔為你收集整理的consul之:ACL配置使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。