曾经尝试弄清楚如何做到这一点。本质上,Vault的REST调用没有安全选项。我想让这些其余调用尽可能在点a和b之间进行加密。我的想法是:
我目前在Docker容器中有保管箱,所以还要提一下。有没有人遇到过这种情况,您如何处理?
更新:因此,使用Python API(HVAC),出现以下错误:
set.seed(1)
ID<-c(rep("a",36),rep("b",60));Val<-round(rnorm(96,15,4),digits=0)
df<-as.data.frame(cbind(ID,Val))
df$Val<-as.numeric(df$Val)
Yearly<-NULL
df$Yearly<-0
library("zoo")
for(i in unique(df$ID)){
Yearly<-rep(rollapply(df[which(df$ID==i),]$Val, 12, sum, by = 12),
rep(12,nrow(df[which(df$ID==i),])%/%12))
df[which(df$ID==i),]$Yearly<-Yearly
}
library("dplyr")
df<-df %>%
group_by(ID) %>%
mutate(TotalSum= sum(Val),cumulativeSum=cumsum(Val),dif=TotalSum-lag (cumulativeSum))
# View(df)
df$dif_withReplacedNAs<-df$dif
df[which(is.na(df$dif)),]$dif_withReplacedNAs <- df[which(is.na(df$dif)),]$TotalSum
head(df,16)
# ID Val Yearly TotalSum cumulativeSum dif dif_withReplacedNAs
# <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 a 3. 85. 300. 3. NA 300.
#2 a 7. 85. 300. 10. 297. 297.
#3 a 3. 85. 300. 13. 290. 290.
#4 a 12. 85. 300. 25. 287. 287.
#5 a 7. 85. 300. 32. 275. 275.
#6 a 3. 85. 300. 35. 268. 268.
#7 a 8. 85. 300. 43. 265. 265.
#8 a 9. 85. 300. 52. 257. 257.
#9 a 8. 85. 300. 60. 248. 248.
#10 a 5. 85. 300. 65. 240. 240.
#11 a 12. 85. 300. 77. 235. 235.
#12 a 8. 85. 300. 85. 223. 223.
#13 a 4. 111. 300. 89. 215. 215.
#14 a 16. 111. 300. 105. 211. 211.
#15 a 10. 111. 300. 115. 195. 195.
#16 a 6. 111. 300. 121. 185. 185.
使用以下命令:
requests.exceptions.SSLError: HTTPSConnectionPool(host='0.0.0.0',
port=8200): Max retries exceeded with url: /v1/secret (Caused by
SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_record',
'wrong version number')],)",),))
答案 0 :(得分:2)
保险柜有TLS enabled by default,因此您的所有REST调用均已加密。如果您在使用https时遇到麻烦,请查看select format(2.00,2)+0, format(1.5,2)+0, format(1.55,2)+0
和2, 1.5, 1.55
环境变量的文档。
来自Vault的文档。
VAULT_CACERT
本地磁盘上PEM编码的CA证书文件的路径。这个文件 用于验证Vault服务器的SSL证书。这个环境 变量优先于VAULT_CAPATH。
VAULT_CAPATH到PEM编码的CA证书文件目录的路径 在本地磁盘上。这些证书用于验证保险柜 服务器的SSL证书。
您可以使用VAULT_CACERT
或VAULT_CAPATH
之类的工具来确保您的请求确实已加密。
答案 1 :(得分:0)
要详细说明在容器中运行的Vault,您需要为Vault创建一个配置文件,其中包含与此类似的内容(Chef / Ruby代码):
config_content = %(
"storage": {
...
},
"default_lease_ttl": "768h",
"max_lease_ttl": "8766h",
"listener": [
{"tcp": {
"address": "0.0.0.0:8200",
"tls_disable": 0,
"tls_cert_file": "/vault/certs/my-cert-combined.pem",
"tls_key_file": "/vault/certs/my-cert.key"
}}],
"log_level": "info"
)
尤其是侦听器部分。使您的后端存储成为您想使用的任何存储(不是Dev默认的内存!)。
请注意,您还需要在绑定到容器的卷中获得有效的证书及其私钥。
将此配置文件存储在目录中,该目录在容器内绑定到路径/ vault / config。我在主机上使用/ var / vault / config。例如(更多Ruby / Chef):
docker_container 'vault' do
container_name 'vault'
tag 'latest'
port '8200:8200'
cap_add ['IPC_LOCK']
restart_policy 'always'
volumes ['/var/vault:/vault']
command 'vault server -config /vault/config'
action :run_if_missing
end
该命令告诉Vault在/ vault / config中查找,并且应该在其中找到带有.json扩展名的配置文件。请注意,将配置文件侦听器-> tcp->地址设置为0.0.0.0,而不是127.0.0.1,这一点很重要,因为Vault无法正确解析外部访问。
然后,保管箱将对所有事务使用TLS加密启动。定义VAULT_ADDR以使https://your-host.com:8200消失。
答案 2 :(得分:0)
就我而言,我一直在本地环境中对其进行测试。因此,我没有调用安全的 https:https://localhost:8200
,而是调用了常规的 http:http://localhost:8200
。
这解决了错误。