Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

25.5. Vault でのサービスシークレットの保存

このセクションでは、管理者が vault を使用してサービスシークレットを一元的にセキュアに保存する方法を説明します。サービスシークレットはサービスの公開鍵で暗号化されます。その後、サービスはドメイン内のマシン上の秘密鍵を使用してシークレットを取得します。シークレットにアクセスできるのは、サービスと管理者のみです。
このセクションでは、以下の手順について説明します。
本手順での以下の用語について説明します。
  • admin は、サービスパスワードを管理する管理者です。
  • http_password は、管理者が作成したプライベートユーザー vault の名前です。
  • password.txt はサービスパスワードが含まれるファイルです。
  • password_vault は、サービス用に作成された vault です。
  • Http/server.example.com は、パスワードがアーカイブされるサービスです。
  • service-public.pem は、password_vault に保存されているパスワードの暗号化に使用するサービスの公開鍵です。

25.5.1. サービスパスワードを保存するユーザー vault の作成

管理者が所有するユーザー vault を作成し、これを使用してサービスパスワードを保存します。Vault タイプは standard で、vault の内容にアクセスする際に管理者が認証する必要がないようにします。
  1. 管理者としてログインします。
    $ kinit admin
  2. 標準ユーザー vault を作成します。
    $ ipa vault-add http_password --type standard
    ---------------------------
    Added vault "http_password"
    ---------------------------
      Vault name: http_password
      Type: standard
      Owner users: admin
      Vault user: admin
  3. サービスパスワードを vault にアーカイブします。
    $ ipa vault-archive http_password --in password.txt
    ----------------------------------------
    Archived data into vault "http_password"
    ----------------------------------------
    警告
    パスワードを vault にアーカイブしたら、システムから password.txt を削除します。

25.5.2. ユーザー vault からサービスインスタンスへのサービスパスワードのプロビジョニング

サービス用に作成された非対称 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 として非対称 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
    vault にアーカイブされたパスワードはこの鍵で保護されます。
  4. 管理者のプライベート vault からサービスパスワードを取得してから、新しいサービス vault にアーカイブします。
    $ 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"
    -----------------------------------
    これにより、サービスインスタンスの公開鍵でパスワードを暗号化します。
    警告
    パスワードを vault にアーカイブしたら、システムから password.txt を削除します。
上記の手順を、パスワードを必要とする全サービスインスタンスで繰り返します。サービスインスタンスごとに新規の非対称 vault を作成します。

25.5.3. サービスインスタンスのサービスパスワードの取得

サービスインスタンスは、ローカルに保存されたサービスの秘密鍵を使用してサービス vault パスワードを取得できます。
  1. 管理者としてログインします。
    $ kinit admin
  2. サービスの Kerberos チケットを取得します。
    # 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. 管理者のユーザー vault に新しいパスワードをアーカイブします。
    $ ipa vault-archive http_password --in new_password.txt
    ----------------------------------------
    Archived data into vault "http_password"
    ----------------------------------------
    これにより、vault に保存されている現在のパスワードが上書きされます。
  2. 不正アクセスされたインスタンスを除く、各サービスインスタンスに新しいパスワードを再プロビジョニングします。
    1. 管理者の vault から新しいパスワードを取得します。
      $ ipa vault-retrieve http_password --out password.txt
      -----------------------------------------
      Retrieved data from vault "http_password"
      -----------------------------------------
    2. 新しいパスワードをサービスインスタンス vault にアーカイブします。
      $ ipa vault-archive password_vault --service HTTP/server.example.com --in password.txt
      -----------------------------------
      Archived data into vault "password_vault"
      -----------------------------------
      警告
      パスワードを vault にアーカイブしたら、システムから password.txt を削除します。