2017-01-31 99 views
2

TLTR 如何將pre 0.8 ACL權限遷移到0.7.3?Consul 0.8 ACL遷移 - 如何遷移

當前設置 我目前正在運行啓用了ACL的Consul 0.7.3堆棧。

隨着Consul 0.8 ACL最終還會包含服務和節點,以便節點/服務(Consul)不再向匿名用戶顯示。這正是我需要的。今天,我試圖啓用新的ACL「pre 0.8」,使用https://www.consul.io/docs/agent/options.html#acl_enforce_version_8

這樣做後,我的節點可能不再對主控進行身份驗證(如果身份驗證是問題的話)。

我運行領事網絡八卦啓用,我配置了acl_master_token:

"{acl_master_token":"<token>}" 

,併爲代理商令牌:

"{acl_token":"<token>}" 

所有代理都使用/與配置。

我有這些ACL默認值:

{ 
"acl_datacenter": "stable", 
"acl_default_policy": "deny", 
"acl_down_policy": "deny" 
} 

和我駐配置是這樣的:

{ 
    "datacenter": "stable", 
    "data_dir": "/consul/data", 
    "ui": true, 
    "dns_config": { 
    "allow_stale": false 
    }, 
    "log_level": "INFO", 
    "node_name": "dwconsul", 
    "client_addr" : "0.0.0.0", 
    "server": true, 
    "bootstrap": true, 
    "acl_enforce_version_8": true 
} 

會發生什麼 當我開機,我可以用看不到我的節點/服務我令牌,節點/代理都不能在主設備上註冊,

問題 究竟是什麼需要得到以下幾點:

  • 所有代理都可以看到所有節點和所有的服務和所有版鍵值
  • 匿名什麼也看不到,不KV,服務或節點(那什麼是可能的0.8)

我看着https://www.consul.io/docs/internals/acl.html「ACL Consure in Consul 0.8」,但我無法用頭包住它。我現在應該使用https://www.consul.io/docs/agent/options.html#acl_agent_master_token而不是acl_token嗎?

謝謝你的幫助。我想我不會是唯一一個在這個遷徙路線上和這個特殊興趣的人,很多人都對此感興趣。你幫他們所有人:)

回答

3

它看起來像新的node政策是防止節點正確註冊。這應該可以解決的事情:

  1. 在您領事服務器配置它們與acl_agent_token具有可以寫入任何節點,這樣的政策:node "" { policy = "write" }

  2. 在您的Consul代理上,將它們配置爲與服務器類似,以保持開放,或者可以爲它們指定一個更具體的策略,只允許它們寫入某些允許的前綴。

注意這被設置爲用於內部註冊操作的acl_agent_token。如果Consul服務器出現問題,acl_agent_master_token被用作緊急令牌來使用/ v1 /代理API,但它僅適用於/ v1 /代理API。

對於「所有代理可以看到所有節點和所有的服務和所有版鍵值」你添加節點讀取權限到任何令牌您通過acl_token給予你們的代理,所以你會添加類似政策:

node "" { policy = "read" } 
service "" { policy = "read" } 
key "" { policy = "read" } 

請注意,這允許任何有權訪問代理的客戶端界面的人讀取所有這些內容,因此您要小心所綁定的內容(通常只有環回)。或者根本不要設置acl_token,並使呼叫者在每個請求中傳遞令牌。

+0

非常感謝你!代理商不會被暴露,只有外交官/消費者使用本地工具,所以這是一個完美的匹配。我可以將這些規則以json格式放入/consul/conf.d文件夾嗎? –

+0

不幸的是不是現在 - 你總是必須通過/ v1/acl API創建令牌。 –

+0

有什麼辦法可以跳過這個策略創作,例如通過在客戶端使用'acl_agent_token'? –