第 84 章 管理 IdM 服务 secret:存储和检索 secret
本节介绍管理员可以如何使用 ansible-freeipa
vault
模块安全地将服务 secret 存储在集中式位置。示例中使用的 vault 是非对称的,这意味着要使用它,管理员需要执行以下步骤:
-
使用
openssl
实用程序生成私钥。 - 根据私钥生成公钥。
当管理员将服务 secret 归档到密码库时,会用公钥对其进行加密。之后,托管在域中特定计算机上的服务实例使用私钥检索该 secret。只有服务和管理员可以访问该 secret。
如果该机密泄露,管理员可以在服务 vault 中替换它,然后将它重新分发到尚未遭入侵的服务实例。
先决条件
- 密钥恢复授权中心 (KRA) 证书系统组件已安装在您的 IdM 域中的一个或多个服务器上。详情请参阅在 IdM 中安装密钥恢复授权。
本节包括以下步骤
使用的术语
在流程中:
- admin 是管理服务密码的管理员。
- private-key-to-an-externally-certificate.pem 是包含服务 secret 的文件,本例中为外部签名证书的私钥。请勿将此私钥与用于从密码库检索机密的私钥混淆。
- secret_vault 是为服务创建的库。
- HTTP/webserver.idm.example.com 是正在存档其机密的服务。
- service-public.pem 是用于加密 password_vault 中存储的密码的服务公钥。
- service-private.pem 是用于解密 secret_vault 中存储的密码的服务私钥。
84.1. 在非对称库中存储 IdM 服务 secret
按照以下流程创建非对称 vault,并使用它来归档服务 secret。
先决条件
- 您知道 IdM 管理员密码。
流程
以管理员身份登录:
$ kinit admin
获取服务实例的公钥。例如,使用
openssl
工具:生成
service-private.pem
私钥。$ openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)
根据私钥生成
service-public.pem
公钥。$ openssl rsa -in service-private.pem -out service-public.pem -pubout writing RSA key
创建一个非对称密码库作为服务实例库,并提供公钥:
$ ipa vault-add secret_vault --service HTTP/webserver.idm.example.com --type asymmetric --public-key-file service-public.pem ---------------------------- Added vault "secret_vault" ---------------------------- Vault name: secret_vault Type: asymmetric Public key: LS0tLS1C...S0tLS0tCg== Owner users: admin Vault service: HTTP/webserver.idm.example.com@IDM.EXAMPLE.COM
存档到密码库中的密码将通过 密钥进行保护。
将服务 secret 归档到服务库中:
$ ipa vault-archive secret_vault --service HTTP/webserver.idm.example.com --in private-key-to-an-externally-signed-certificate.pem ----------------------------------- Archived data into vault "secret_vault" -----------------------------------
这将使用服务实例公钥加密机密。
对需要机密的每个服务实例重复这些步骤。为每个服务实例创建一个新的非对称库。