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 类型是标准的,它可确保管理员在访问密码库的内容时无需进行身份验证。
  1. 以管理员身份登录:
    $ kinit admin
  2. 创建标准用户库:
    $ ipa vault-add http_password --type standard
    ---------------------------
    Added vault "http_password"
    ---------------------------
      Vault name: http_password
      Type: standard
      Owner users: admin
      Vault user: admin
  3. 将服务密码归档到密码库中:
    $ ipa vault-archive http_password --in password.txt
    ----------------------------------------
    Archived data into vault "http_password"
    ----------------------------------------
    警告
    将密码归档到密码库后,从系统中删除 password.txt

25.5.2. 从用户 Vault 置备服务密码到服务实例

使用为服务创建的非对称密码库,将服务密码调配到服务实例。
  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. 创建非对称 vault 作为服务实例库,并提供公钥:
    $ ipa vault-add password_vault --service HTTP/server.example.com --type asymmetric --public-key-file service-public.pem
    ----------------------------
    Added vault "password_vault"
    ----------------------------
    Vault name: password_vault
    Type: asymmetric
    Public key: LS0tLS1C...S0tLS0tCg==
    Owner users: admin
    Vault service: HTTP/server.example.com@EXAMPLE.COM
    归档到密码库的密码将通过 密钥进行保护。
  4. 从管理员的专用密码库中检索服务密码,然后将其归档到新服务库中:
    $ ipa vault-retrieve http_password --out password.txt
    -----------------------------------------
    Retrieved data from vault "http_password"
    -----------------------------------------
    $ ipa vault-archive password_vault --service HTTP/server.example.com --in password.txt
    -----------------------------------
    Archived data into vault "password_vault"
    -----------------------------------
    这将使用服务实例公钥加密密码。
    警告
    将密码归档到密码库后,从系统中删除 password.txt
对需要密码的每个服务实例重复这些步骤。为每个服务实例创建新的非对称密码库。

25.5.3. 为服务实例检索服务密码

服务实例可以使用本地存储的服务私钥检索服务 vault 密码。
  1. 以管理员身份登录:
    $ kinit admin
  2. 获取该服务的 Kerberos ticket:
    # kinit HTTP/server.example.com -k -t /etc/httpd/conf/ipa.keytab
  3. 检索服务 vault 密码:
    $ 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"
    ------------------------------------
    

25.5.4. 更改服务 Vault 密码

如果服务实例遭到破坏,请通过更改服务 vault 密码将它隔离,然后仅将新密码重新调配到非编译服务实例。
  1. 在管理员的用户库中归档新密码:
    $ ipa vault-archive http_password --in new_password.txt
    ----------------------------------------
    Archived data into vault "http_password"
    ----------------------------------------
    这会覆盖存储在密码库中的当前密码。
  2. 将新密码重新调配到除被破坏的实例外的每个服务实例。
    1. 从管理员的 vault 中检索新密码:
      $ ipa vault-retrieve http_password --out password.txt
      -----------------------------------------
      Retrieved data from vault "http_password"
      -----------------------------------------
    2. 将新密码归档到服务实例库中:
      $ ipa vault-archive password_vault --service HTTP/server.example.com --in password.txt
      -----------------------------------
      Archived data into vault "password_vault"
      -----------------------------------
      警告
      将密码归档到密码库后,从系统中删除 password.txt
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.