25.5. 在 Vault 中存储服务 secret
本节介绍管理员如何使用 vault 将服务机密安全地存储在中央位置。服务机密使用服务公钥加密。然后,服务使用其在域中的任何计算机上的私钥来检索机密。只有服务和管理员可以访问该 secret。
本节包括以下步骤:
在流程中:
admin
是管理服务密码的管理员http_password
是管理员创建的私有用户库的名称password.txt
是包含服务密码的文件password_vault
是为服务创建的库http/server.example.com
是正在归档密码的服务service-public.pem
是用于加密password_vault
中存储的密码的服务公钥
25.5.1. 创建用户 Vault 以存储服务密码 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
创建管理员拥有的用户 vault,并使用它来存储服务密码。vault 类型是标准的,它可确保管理员在访问密码库的内容时无需进行身份验证。
- 以管理员身份登录:
kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建标准用户库:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将服务密码归档到密码库中:
ipa vault-archive http_password --in password.txt
$ ipa vault-archive http_password --in password.txt ---------------------------------------- Archived data into vault "http_password" ----------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告将密码归档到密码库后,从系统中删除password.txt
。
25.5.2. 从用户 Vault 置备服务密码到服务实例 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用为服务创建的非对称密码库,将服务密码调配到服务实例。
- 以管理员身份登录:
kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 获取服务实例的公钥。例如,使用
openssl
工具:- 生成
service-private.pem
私钥。openssl genrsa -out service-private.pem 2048
$ openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 根据私钥生成
service-public.pem
公钥。openssl rsa -in service-private.pem -out service-public.pem -pubout
$ openssl rsa -in service-private.pem -out service-public.pem -pubout writing RSA key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 创建非对称 vault 作为服务实例库,并提供公钥:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 归档到密码库的密码将通过 密钥进行保护。 - 从管理员的专用密码库中检索服务密码,然后将其归档到新服务库中:
ipa vault-retrieve http_password --out password.txt
$ ipa vault-retrieve http_password --out password.txt ----------------------------------------- Retrieved data from vault "http_password" -----------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa vault-archive password_vault --service HTTP/server.example.com --in password.txt
$ ipa vault-archive password_vault --service HTTP/server.example.com --in password.txt ----------------------------------- Archived data into vault "password_vault" -----------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将使用服务实例公钥加密密码。警告将密码归档到密码库后,从系统中删除password.txt
。
对需要密码的每个服务实例重复这些步骤。为每个服务实例创建新的非对称密码库。
25.5.3. 为服务实例检索服务密码 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
服务实例可以使用本地存储的服务私钥检索服务 vault 密码。
- 以管理员身份登录:
kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 获取该服务的 Kerberos ticket:
kinit HTTP/server.example.com -k -t /etc/httpd/conf/ipa.keytab
# kinit HTTP/server.example.com -k -t /etc/httpd/conf/ipa.keytab
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 检索服务 vault 密码:
ipa vault-retrieve password_vault --service HTTP/server.example.com --private-key-file service-private.pem --out password.txt
$ ipa vault-retrieve password_vault --service HTTP/server.example.com --private-key-file service-private.pem --out password.txt ------------------------------------ Retrieved data from vault "password_vault" ------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.5.4. 更改服务 Vault 密码 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
如果服务实例遭到破坏,请通过更改服务 vault 密码将它隔离,然后仅将新密码重新调配到非编译服务实例。
- 在管理员的用户库中归档新密码:
ipa vault-archive http_password --in new_password.txt
$ ipa vault-archive http_password --in new_password.txt ---------------------------------------- Archived data into vault "http_password" ----------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会覆盖存储在密码库中的当前密码。 - 将新密码重新调配到除被破坏的实例外的每个服务实例。
- 从管理员的 vault 中检索新密码:
ipa vault-retrieve http_password --out password.txt
$ ipa vault-retrieve http_password --out password.txt ----------------------------------------- Retrieved data from vault "http_password" -----------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将新密码归档到服务实例库中:
ipa vault-archive password_vault --service HTTP/server.example.com --in password.txt
$ ipa vault-archive password_vault --service HTTP/server.example.com --in password.txt ----------------------------------- Archived data into vault "password_vault" -----------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告将密码归档到密码库后,从系统中删除password.txt
。