Red Hat Training

A Red Hat training course is available for RHEL 8

第 78 章 管理 IdM 服务 secret:存储和检索 secret

本节介绍管理员可以如何使用 ansible-freeipa vault 模块安全地将服务 secret 存储在集中式位置。示例中使用的 vault 是非对称的,这意味着要使用它,管理员需要执行以下步骤:

  1. 使用 openssl 实用程序生成私钥。
  2. 根据私钥生成公钥。

当管理员将服务 secret 归档到密码库时,会用公钥对其进行加密。之后,托管在域中特定计算机上的服务实例使用私钥检索该 secret。只有服务和管理员可以访问该 secret。

如果该机密泄露,管理员可以在服务 vault 中替换它,然后将它重新分发到尚未遭入侵的服务实例。

先决条件

本节包括以下步骤

使用的术语

在流程中:

  • 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 中存储的密码的服务私钥。

78.1. 在非对称库中存储 IdM 服务 secret

按照以下流程创建非对称 vault,并使用它来归档服务 secret。

先决条件

  • 您知道 IdM 管理员密码。

流程

  1. 以管理员身份登录:

    $ kinit admin
  2. 获取服务实例的公钥。例如,使用 openssl 工具:

    1. 生成 service-private.pem 私钥。

      $ openssl genrsa -out service-private.pem 2048
      Generating RSA private key, 2048 bit long modulus
      .+++
      ...........................................+++
      e is 65537 (0x10001)
    2. 根据私钥生成 service-public.pem 公钥。

      $ openssl rsa -in service-private.pem -out service-public.pem -pubout
      writing RSA key
  3. 创建一个非对称密码库作为服务实例库,并提供公钥:

    $ 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

    存档到密码库中的密码将通过 密钥进行保护。

  4. 将服务 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"
    -----------------------------------

    这将使用服务实例公钥加密机密。

对需要机密的每个服务实例重复这些步骤。为每个服务实例创建一个新的非对称库。