在 Vault 中写入 PostgreSQL 数据库凭据以连接被拒绝而告终
Writing PostgreSQL database credentials in Vault ends up with connection refused
我正在尝试学习如何使用 Docker 和 PostgreSQL 实现 Vault。
目标是使用 PostgreSQL 创建一个 docker 容器并使用 HashiCorp Vault 连接到它。
我设法创建了一个配置为 docker、postgresql 和 vault 的 yml 文件。
version: '3.1'
services:
db:
image: postgres
container_name: postgreSQLCon
restart: always
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: example
ports:
- 5432:5432 #important to configure vault with postgreSQL
adminer:
image: adminer
container_name: adminerCon
restart: always
ports:
- 8080:8080
vault:
image: vault:latest
container_name: vaultCon
depends_on:
- "db"
volumes:
- ./vault/config:/vault/config
- ./vault/policies:/vault/policies
- ./vault/data:/vault/data
- ./vault/logs:/vault/logs
ports:
- 8200:8200
environment:
- VAULT_ADDR=http://127.0.0.1:8200
cap_add:
- IPC_LOCK
command: ['vault', 'server', '-config=/vault/config/vault-config.json']
保险库-config.json
{
"backend": {
"file": {
"path": "vault/data"
}
},
"listener": {
"tcp":{
"address": "0.0.0.0:8200",
"tls_disable": 1
}
},
"ui": true
}
保管库启动后,我将使用 docker exec -it 连接到容器。我设法解封并登录到保险库。当我 运行 以下命令时:
vault write database/config/my-postgresql-database \
plugin_name=postgresql-database-plugin \
allowed_roles="my-role" \
connection_url="postgresql://{{username}}:{{password}}@localhost:5432/?sslmode=disable" \
username="admin" \
password="example"
我收到以下错误:
Error writing data to database/config/my-postgresql-database: Error making API request.
URL: PUT http://127.0.0.1:8200/v1/database/config/my-postgresql-database
Code: 400. Errors:
* error creating database object: error verifying connection: dial tcp 127.0.0.1:5432: connect: connection refused
这里的问题是您需要使用其容器 IP 地址而不是 127.0.0.1
连接到数据库容器。这应该可以使用容器名称 (db
) 发现,因此只需将连接 URL 中的 localhost
替换为 db
:
vault write database/config/my-postgresql-database \
plugin_name=postgresql-database-plugin \
allowed_roles="my-role" \
connection_url="postgresql://{{username}}:{{password}}@db:5432/?sslmode=disable" \
username="admin" \
password="example"
我正在尝试学习如何使用 Docker 和 PostgreSQL 实现 Vault。 目标是使用 PostgreSQL 创建一个 docker 容器并使用 HashiCorp Vault 连接到它。 我设法创建了一个配置为 docker、postgresql 和 vault 的 yml 文件。
version: '3.1'
services:
db:
image: postgres
container_name: postgreSQLCon
restart: always
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: example
ports:
- 5432:5432 #important to configure vault with postgreSQL
adminer:
image: adminer
container_name: adminerCon
restart: always
ports:
- 8080:8080
vault:
image: vault:latest
container_name: vaultCon
depends_on:
- "db"
volumes:
- ./vault/config:/vault/config
- ./vault/policies:/vault/policies
- ./vault/data:/vault/data
- ./vault/logs:/vault/logs
ports:
- 8200:8200
environment:
- VAULT_ADDR=http://127.0.0.1:8200
cap_add:
- IPC_LOCK
command: ['vault', 'server', '-config=/vault/config/vault-config.json']
保险库-config.json
{
"backend": {
"file": {
"path": "vault/data"
}
},
"listener": {
"tcp":{
"address": "0.0.0.0:8200",
"tls_disable": 1
}
},
"ui": true
}
保管库启动后,我将使用 docker exec -it 连接到容器。我设法解封并登录到保险库。当我 运行 以下命令时:
vault write database/config/my-postgresql-database \
plugin_name=postgresql-database-plugin \
allowed_roles="my-role" \
connection_url="postgresql://{{username}}:{{password}}@localhost:5432/?sslmode=disable" \
username="admin" \
password="example"
我收到以下错误:
Error writing data to database/config/my-postgresql-database: Error making API request.
URL: PUT http://127.0.0.1:8200/v1/database/config/my-postgresql-database
Code: 400. Errors:
* error creating database object: error verifying connection: dial tcp 127.0.0.1:5432: connect: connection refused
这里的问题是您需要使用其容器 IP 地址而不是 127.0.0.1
连接到数据库容器。这应该可以使用容器名称 (db
) 发现,因此只需将连接 URL 中的 localhost
替换为 db
:
vault write database/config/my-postgresql-database \
plugin_name=postgresql-database-plugin \
allowed_roles="my-role" \
connection_url="postgresql://{{username}}:{{password}}@db:5432/?sslmode=disable" \
username="admin" \
password="example"