第5章 Ansible を使用した IdM サービス Vault の管理: シークレットの保存および取得


このセクションでは、管理者が ansible-freeipa vault モジュールを使用してサービスシークレットを一元的にセキュアに保存する方法を説明します。この例で使用されている Vault は非対称です。そのため、これを使用するには、管理者が次の手順を実行する必要があります。

  1. openssl ユーティリティーなどを使用して秘密鍵を生成する。
  2. 秘密鍵をもとに公開鍵を生成する。

サービスシークレットは、管理者が Vault にアーカイブする時に公開鍵を使用して暗号化されます。その後、ドメイン内の特定のマシンでホストされるサービスインスタンスが、秘密鍵を使用してシークレットを取得します。シークレットにアクセスできるのは、サービスと管理者のみです。

シークレットが漏洩した場合には、管理者はサービス Vault でシークレットを置き換えて、漏洩されていないサービスインスタンスに配布しなおすことができます。

前提条件

手順では、以下を前提としています。

  • admin は、サービスパスワードを管理する管理者です。
  • private-key-to-an-externally-signed-certificate.pem は、サービスシークレットを含むファイルです (ここでは外部署名証明書への秘密鍵)。この秘密鍵と、Vault からのシークレットの取得に使用する秘密鍵と混同しないようにしてください。
  • secret_vault は、サービスシークレット保存向けに作成された Vault です。
  • HTTP/webserver1.idm.example.com は Vault の所有者となるサービスです。
  • HTTP/webserver2.idm.example.com および HTTP/webserver3.idm.example.com は Vault メンバーサービスです。
  • service-public.pem は、password_vault に保存されているパスワードの暗号化に使用するサービスの公開鍵です。
  • service-private.pem は、secret_vault に保存されているパスワードの復号化に使用するサービスの秘密鍵です。

5.1. Ansible を使用して IdM に非対称サービス Vault が存在する状態にする

以下の手順に従って、Ansible Playbook を使用して 1 つ以上のプライベート Vault を持つサービス Vault コンテナーを作成し、機密情報を安全に保存します。以下の手順で使用する例では、管理者は secret_vault という名前の非対称 Vault を作成します。こうすることで、Vault メンバーは、Vault のシークレットを取得する際に、秘密鍵を使用して必ず認証することになります。Vault メンバーは、IdM クライアントからファイルを取得できます。

前提条件

  • 次の要件を満たすように Ansible コントロールノードを設定している。

    • Ansible バージョン 2.15 以降を使用している。
    • freeipa.ansible_freeipa コレクションがインストールされている。
    • ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル が作成されている (この例の場合)。
    • secret.yml Ansible vault に ipaadmin_password が保存されており、secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできる (この例の場合)。
  • ターゲットノード (freeipa.ansible_freeipa モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。

手順

  1. ~/MyPlaybooks/ディレクトリーに移動します。

    $ cd ~/MyPlaybooks/
    Copy to Clipboard Toggle word wrap
  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)
      Copy to Clipboard Toggle word wrap
    2. 秘密鍵をもとに service-public.pem 公開鍵を生成します。

      $ openssl rsa -in service-private.pem -out service-public.pem -pubout
      writing RSA key
      Copy to Clipboard Toggle word wrap
  3. 該当するコレクションのディレクトリーから ensure-asymmetric-vault-is-present.yml Ansible Playbook ファイルのコピーを作成します。以下に例を示します。

    $ cp /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/ensure-asymmetric-vault-is-present.yml ensure-asymmetric-service-vault-is-present-copy.yml
    Copy to Clipboard Toggle word wrap
  4. ensure-asymmetric-vault-is-present-copy.yml ファイルを編集のために開きます。
  5. Ansible コントローラーから server.idm.example.com サーバーに service-public.pem の公開鍵をコピーするタスクを追加します。
  6. freeipa.ansible_freeipa.ipavault タスクセクションで次の変数を設定して、ファイルの残りの部分を変更します。

    • ipaadmin_password 変数の値が secret.yml Ansible vault ファイルで定義されていることを示します。
    • secret_vault などの name 変数を使用して Vault の名前を定義します。
    • vault_type 変数は asymmetric に設定します。
    • service 変数は、Vault を所有するサービスのプリンシパル (例: HTTP/webserver1.idm.example.com) に設定します。
    • public_key_file は、公開鍵の場所に設定します。

      以下は、今回の例で使用するように変更した Ansible Playbook ファイルです。

    ---
    - name: Tests
      hosts: ipaserver
      gather_facts: false
      vars_files:
      - /home/user_name/MyPlaybooks/secret.yml
      tasks:
      - name: Copy public key to ipaserver.
        copy:
          src: /path/to/service-public.pem
          dest: /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/service-public.pem
          mode: 0600
      - name: Add data to vault, from a LOCAL file.
        freeipa.ansible_freeipa.ipavault:
          ipaadmin_password: "{{ ipaadmin_password }}"
          name: secret_vault
          vault_type: asymmetric
          service: HTTP/webserver1.idm.example.com
          public_key_file: /usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/vault/service-public.pem
    Copy to Clipboard Toggle word wrap
  7. ファイルを保存します。
  8. Playbook を実行します。

    $ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-asymmetric-service-vault-is-present-copy.yml
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat