如何建立Hashicorp保险库与ARTIFACTORY
注意:对于本文,我们将在与Artifactory相同的机器上安装Vault。我们还将在开发模式下运行服务器。对于生产环境,请参考Vault文档。
通过链接安装Vault在这里.
启动Vault服务器
$ vault server -dev
这将显示密封密钥和根令牌。保存这些值解封密钥:WevOrb1cF....
根令牌:s.CC0yx8lLd…
打开一个新的终端会话
$ export VAULT_ADDR='http://127.0.0.1:8200'
将VAULT_TOKEN env变量设置为上面显示的根Token值。它看起来像这样:
$ export VAULT_TOKEN="<根Token>"
现在运行vault status以查看有关正在运行的服务器的详细信息
$ vault状态
生成GPG密钥
下一步是在保险库中设置秘密。我们需要gpg_pub_key, gpg_priv_key和passphrase。首先,我们将创建GPG密钥。
$ GPG—完全生成密钥
$ gpg—list-secret-keys—keyid-format LONG
> gpg:检查trustdb
Gpg:需要边际值:需要3个完成点:1个信任模型:PGP
Gpg:深度:0 valid: 3 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 3u
/用户/ samr / .gnupg / pubring.kbx
------------------------------
第rsa2048/590EFBF7A1A373CC 2021-06-29 [SC]
$ GPG—输出private。key—armor—export-secret keys 590EFBF7A1A373CC
$ GPG—输出公共。钥匙——装甲——出口590EFBF7A1A373CC
现在我们有两把私钥。密钥和公共。密钥以及密码。我们把它们作为秘密保存在保险库里吧。
- 秘密/ gpg_pub_key
- Value被称为pub_key
- 秘密/ gpg_priv_key,
- Value被称为priv_key
- 秘密/密码
- 值称为pp
导航到密钥所在的文件夹,运行以下命令:
$ vault kv put secret/gpg_pub_key pub_key=@public.key
$ vault kv put secret/gpg_priv_key priv_key=@private.key
$ vault kv put secret/ passsphrase pp=<密码>
确保正确地创建了值。下面的命令应该显示密钥和密码短语:
$ vault kv get secret/gpg_pub_key
$ vault kv get secret/gpg_priv_key
$ vault kv get secret/ passsphrase
配置Approle认证
https://www.vaultproject.io/docs/auth/approle
为Artifactory AppRole创建一个策略
$ tee test-policy。hcl << EOF
路径"secret/*" {
能力= ["create", "read", "update", "delete", "list", "sudo"]
}
EOF$ vault policy test-policy.hcl
查看新政策:
读取test-policy
通过Vault API创建AppRole
点击这里查看教程:https://www.vaultproject.io/docs/auth/approle#via-the-api-1
步骤1:在API中创建一个用于身份验证的令牌
$ vault令牌创建
>关键值
--- -----
令牌s.SjsIRo41P8YSHGHyr4pL7mug
token_accessor rMj2ug7vBN1g6OXIkLZK8rJl
token_duration∞
token_renewable假
token_policies(“根”)
identity_policies []
政策(“根”)
步骤2:启用AppRole认证:
$ curl \
——header "X-Vault-Token: s.SjsIRo41P8YSHGHyr4pL7mug" \
——请求POST \
——data '{"type": " aple "}' \
http://127.0.0.1:8200/v1/sys/auth/approle
步骤3:使用期望的策略(在本例中为' test-policy ')创建一个aple
创建一个名为test-role的AppRole
$ curl \
——header "X-Vault-Token: s.SjsIRo41P8YSHGHyr4pL7mug" \
——请求POST \
——data“{"policies": "test-policy"}”\
http://127.0.0.1:8200/v1/auth/approle/role/test-role
步骤4:获取角色的标识符
*保存此值作为Artifactory连接设置中的RoleID
$ curl \
——header "X-Vault-Token: s.SjsIRo41P8YSHGHyr4pL7mug" \
http://127.0.0.1:8200/v1/auth/approle/role/test-role/role-id
>{“role_id”:“76237 df0 - 463 e - fad3 d1cb eb292e5fed20 "}
步骤5:在角色下创建一个秘密标识符
*保存此值作为Artifactory连接设置中的SecretID
$ curl \
——header "X-Vault-Token: s.SjsIRo41P8YSHGHyr4pL7mug" \
——请求POST \
http://127.0.0.1:8200/v1/auth/approle/role/test-role/secret-id
“数据”:{“secret_id”:“151 b7163 - 8 d49 - 833 - e - 5398 - 52 - d815b7ddfc”、“secret_id_accessor”:“f981c017-d8fb-fac1-a6c0-acf766e594f9”、“secret_id_ttl”:0}
使用下面的API调用验证AppRole具有正确的设置:
$ curl \
——标题"X-Vault-Token:" \
http://127.0.0.1:8200/v1/auth/approle/role/test-role
使用Artifactory进行配置
库设置
Baseurl: http://127.0.0.1:8200
RoleID:上面用红色突出显示的值
SecretID:上面用红色突出显示的值
故障排除步骤
当尝试用上面的设置保存连接时,我得到了这个错误:
TLS错误
(错误)[jffe] [ERROR] [471aeefed3e7deaa] [] [main] - http request failed with message -当Access和平台中未启用TLS时,不允许验证连接配置
(解决方案)同时为Artifactory和Access启用TLS
通过编辑系统启用Artifactory的TLS。Yaml包含以下内容:
安全:
tls:真
通过添加TLS设置(请参见文档):
$ vim /artifactory/var/etc/access/access.config. latest。yml文件
增加如下一行:
安全:
tls:真
然后更改文件名:
$ cp access.config.latest.yml access.config.import.yml
$ service artifactory重启
HTTPS错误
当按下“Save”按钮时,在UI中出现以下错误:
"客户端向HTTPS服务器发送HTTP请求"
【解决方案】为了继续,需要使用https://artifactory:port
环境变量错误
[错误]root@machine:/home/samr# vault auth enable aple .[错误
启用approle auth错误:发布“https://127.0.0.1:8200/v1/sys/auth/approle”:http:服务器给HTTPS客户端http响应
[处理建议]vult_addr和vult_token env变量未设置
