如何建立Hashicorp保险库与ARTIFACTORY

山姆Rosenstein
2023-01-22 11:05

注意:对于本文,我们将在与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

现在我们有两把私钥。密钥和公共。密钥以及密码。我们把它们作为秘密保存在保险库里吧。

  1. 秘密/ gpg_pub_key
    • Value被称为pub_key
  2. 秘密/ gpg_priv_key,
    • Value被称为priv_key
  3. 秘密/密码
    • 值称为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变量未设置