第 4 章 管理 IdM 服务 secret:存储和检索 secret
本节论述了如何在身份管理(IdM)中使用服务库安全地将服务 secret 存储在集中式位置。示例中使用的 vault 是非对称的,这意味着要使用它,管理员需要执行以下步骤:
-
使用
openssl
实用程序生成私钥。 - 根据私钥生成公钥。
当管理员将服务 secret 归档到密码库时,会用公钥对其进行加密。之后,托管在域中特定计算机上的服务实例使用私钥检索该 secret。只有服务和管理员可以访问该 secret。
如果该机密泄露,管理员可以在服务 vault 中替换它,然后将它重新分发到尚未遭入侵的服务实例。
先决条件
- 密钥恢复授权中心 (KRA) 证书系统组件已安装在您的 IdM 域中的一个或多个服务器上。详情请参阅在 IdM 中安装密钥恢复授权。
在以下步骤中:
- IdM admin 用户是管理服务密码的管理员。
- private-key-to-an-externally-certificate.pem 是包含服务 secret 的文件,本例中为外部签名证书的私钥。请勿将此私钥与用于从密码库检索机密的私钥混淆。
- secret_vault 是为该服务创建的密码库。
- HTTP/webserver.idm.example.com 是存档 secret 的服务。
- service-public.pem 是用于加密 password_vault 中存储的密码的服务公钥。
- service-private.pem 是用于解密 secret_vault 中存储的密码的服务私钥。
4.1. 将 IdM 服务 secret 存储在非对称的密码库中 复制链接链接已复制到粘贴板!
按照以下流程创建非对称 vault,并使用它来归档服务 secret。
先决条件
- 您知道 IdM 管理员密码。
步骤
以管理员身份登录:
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 存储在密码库中的密码将通过密钥进行保护。
将服务 secret 归档到服务 vault 中:
ipa vault-archive secret_vault --service HTTP/webserver.idm.example.com --in private-key-to-an-externally-signed-certificate.pem
$ 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" -----------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会使用服务实例公钥加密机密。
为每个需要 secret 的服务实例重复这些步骤。为每个服务实例创建一个新的非对称库。