前幾天我們已經使用Vault進行基礎的密鑰管理,今天要來理解在Vault裡一個相當重要的概念 - Policy。
先來看一下官方文件上的這段文字:
Everything in Vault is path-based, and policies are no exception. Policies provide a declarative way to grant or forbid access to certain paths and operations in Vault.
在前幾天的文章中不難看出在 Vault的世界中,Credential 的存放基本上都是以路徑為基礎,而 Policy 則是在 Vault 中,控制著是否有權限去存取特定路徑的Credentials。
而HCL(Hashicorp Configuration Language) 就如同其他的IaaS(Infrastucture as a service) 語言 Ansible等,是用來配置policy的語言。
首先,我們先建立一個HCL腳本:
path "secret/data/myapp" {
capabilities = ["read"]
}
從HCL可以很直觀的看出我們正在對Path進行一些控管。
接著將 Policy 寫入 Vault:
vault policy write myapp-read myapp-read.hcl

成功寫入可以查看目前有哪些Policy存在並讀取:
grantli@xxxx:~$ vault policy list
default
default-ceiling
myapp-read
root
vault policy read myapp-read

在 capabilities 裡 HCL 支援對應的操作如 create、read、update delete、list、sudo 及 deny 操作。
到這裡,權限管理的概念儼然已成型,到這邊,我想你們一定跟我有一樣的疑惑,權限有了,那然後呢?
接下來:
建立token,Assign對應的Policy
vault token create -policy="myapp-read"

沒錯! 我們要做的便是建立對應權限的 token 或是之後會提到的 App Role來進行管理。
這邊只是先提到一些Concept。