Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

17.4. TLS を使用するエンドポイントの設定

本セクションでは、既存のデプロイメントで TLS によるエンドポイントの暗号化を有効にする方法、さらにエンドポイントが正しく設定されていることを確認する方法について説明します。

TLS everywhere を有効にする場合、ドメインの構造化方法に応じて、さまざまなアップグレードパスを利用することができます。以下の例では、サンプルドメイン名を使用してアップグレードパスを説明します。

  • 既存のパブリックエンドポイント証明書を再利用し、オーバークラウドドメイン (lab.local) が IdM ドメイン (lab.local) と一致する internal および admin エンドポイントのすべての場所で TLS を有効にします。
  • IdM が新しいパブリックエンドポイント証明書を発行できるようにし、オーバークラウドドメイン (lab.local) が IdM ドメイン (lab.local) と一致する internal および admin エンドポイントのすべての場所で TLS を有効にします。
  • 既存のパブリックエンドポイント証明書を再利用し、オーバークラウドドメイン (site1.lab.local) が IdM ドメイン (lab.local) のサブドメインである internal エンドポイントと admin エンドポイントのすべてで TLS を有効にします。
  • IdM が新しいパブリックエンドポイント証明書を発行できるようにし、オーバークラウドドメイン (site1.lab.local) が IdM ドメイン (lab.local) のサブドメインである internal および admin エンドポイントのすべての場所で TLS を有効にします。

本セクションの以降の手順で、上記のさまざまな組み合わせを使用して、この統合を設定する方法について説明します。

17.4.1. IdM と同じドメインを使用するデプロイメントのアンダークラウドインテグレーションの設定

以下の手順では、IdM と同じドメインを使用するデプロイメントのアンダークラウドインテグレーションを設定する方法について説明します。

Red Hat OpenStack Platform では、novajoin を使用して Red Hat Identity Management (IdM) との統合を行い、この IdM が暗号化証明書を発行および管理します。以下の手順では、アンダークラウドを IdM に登録し、トークンを生成し、アンダークラウド設定でトークンを有効にしてから、アンダークラウドおよびオーバークラウドのデプロイメントスクリプトを再実行します。以下に例を示します。

  1. IdM との統合用に python-novajoin をインストールします。

    [stack@undercloud-0 ~]$ sudo yum install python-novajoin
  2. novajoin 設定スクリプトを実行し、IdM デプロイメントの設定情報を指定します。以下に例を示します。

    [stack@undercloud-0 ~]$ sudo novajoin-ipa-setup --principal admin --password ComplexRedactedPassword \
      --server ipa.lab.local --realm lab.local --domain lab.local \
      --hostname undercloud-0.lab.local --precreate
    ...
    0Uvua6NyIWVkfCSTOmwbdAobsqGH2GONRJrW24MoQ4wg

    この出力には、IdM のワンタイムパスワード (OTP) が含まれますが、この値はご自分のデプロイメントとは異なります。

  3. novajoin を使用するようにアンダークラウドを設定し、ワンタイムパスワード (OTP) を追加し、DNS 用の IdM の IP アドレスを使用し、オーバークラウドドメインを記述します。実際のデプロイメントに合わせて、この例を修正する必要があります。

    [stack@undercloud ~]$ vi undercloud.conf
    ...
    enable_novajoin = true
    ipa_otp = 0Uvua6NyIWVkfCSTOmwbdAobsqGH2GONRJrW24MoQ4wg
    undercloud_hostname = undercloud-0.lab.local
    undercloud_nameservers = X.X.X.X
    overcloud_domain_name = lab.local
    ...
  4. アンダークラウドに novajoin サービスをインストールします。

    [stack@undercloud ~]$ openstack undercloud install
  5. オーバークラウドの IP アドレスを DNS に追加します。実際のデプロイメントに合わせて、この例を修正する必要があります。

    注記: オーバークラウドの network-environment.yaml をチェックして、各ネットワークの範囲内の仮想 IP を選択します。

    [root@ipa ~]$ ipa dnsrecord-add lab.local overcloud --a-rec=10.0.0.101
    [root@ipa ~]# ipa dnszone-add ctlplane.lab.local
    [root@ipa ~]# ipa dnsrecord-add ctlplane.lab.local overcloud --a-rec 192.168.24.101
    [root@ipa ~]# ipa dnszone-add internalapi.lab.local
    [root@ipa ~]# ipa dnsrecord-add internalapi.lab.local overcloud --a-rec 172.17.1.101
    [root@ipa ~]# ipa dnszone-add storage.lab.local
    [root@ipa ~]# ipa dnsrecord-add storage.lab.local overcloud --a-rec 172.17.3.101
    [root@ipa ~]# ipa dnszone-add storagemgmt.lab.local
    [root@ipa ~]# ipa dnsrecord-add storagemgmt.lab.local overcloud --a-rec 172.17.4.101
  6. すべてのエンドポイントに public_vip.yaml マッピングを作成します。

    Parameter_defaults:
        PublicVirtualFixedIPs: [{'ip_address':'10.0.0.101'}]
        ControlFixedIPs: [{'ip_address':'192.168.24.101'}]
        InternalApiVirtualFixedIPs: [{'ip_address':'172.17.1.101'}]
        StorageVirtualFixedIPs: [{'ip_address':'172.17.3.101'}]
        StorageMgmtVirtualFixedIPs: [{'ip_address':'172.17.4.101'}]
        RedisVirtualFixedIPs: [{'ip_address':'172.17.1.102'}]

17.4.2. IdM と同じドメインを使用し、既存のパブリックエンドポイント証明書を維持するデプロイメントのオーバークラウドインテグレーションの設定

  1. 以下のパラメーターが openstack overcloud deploy コマンドに (有効な設定で) 存在することを確認してから、デプロイメントコマンドを再実行します。

    • --ntp-server` : まだ設定されていなければ、ご自分の環境に適した NTP サーバーを指定します。IdM サーバーは ntp を実行している必要があります。
    • cloud-names.yaml: 初期デプロイメントコマンドからの FQDN (IP ではなく) が含まれます。
    • enable-tls.yaml: 新しいオーバークラウド証明書が含まれます。https://github.com/openstack/tripleo-heat-templates/blob/master/environments/ssl/enable-tls.yaml で例を確認してください。
    • public_vip.yaml: dns が照合できるように、エンドポイントを特定の ip にマッピングします。
    • enable-internal-tls.yaml: 内部エンドポイント用に TLS を有効にします。
    • tls-everywhere-endpoints-dns.yaml: DNS 名を使用して TLS エンドポイントを設定します。このファイルの内容を確認して、設定の範囲を把握することができます。
    • haproxy-internal-tls-certmonger.yaml: certmonger は haproxy の内部証明書を管理します。
    • inject-trust-anchor.yaml: ルート認証局を追加します。このパラメーターは、証明書が依存する CA チェーンがまだデフォルトで使用される共通セットの一部ではない場合にのみ必要です (たとえば、自己署名の証明書を使用する場合など)。

      以下に例を示します。

      [ stack@undercloud ~]$ openstack overcloud deploy \
      ...
        --ntp-server 10.13.57.78 \
        -e /home/stack/cloud-names.yaml \
        -e /home/stack/enable-tls.yaml \
        -e /home/stack/public_vip.yaml \
        -e <tripleo-heat-templates>/environments/ssl/enable-internal-tls.yaml \
        -e <tripleo-heat-templates>/environments/ssl/tls-everywhere-endpoints-dns.yaml \
        -e <tripleo-heat-templates>/environments/services/haproxy-internal-tls-certmonger.yaml \
        -e /home/stack/inject-trust-anchor.yaml
      ...
      注記

      これらの環境ファイルの例は、https://github.com/openstack/tripleo-heat-templates/tree/master/environments/ssl を参照してください。

17.4.3. IdM と同じドメインを使用し、既存のパブリックエンドポイント証明書を IdM の生成する証明書に置き換えるデプロイメントのオーバークラウドインテグレーションの設定

  1. 以下のパラメーターが openstack overcloud deploy コマンドに (有効な設定で) 存在することを確認してから、デプロイメントコマンドを再実行します。

    • --ntp-server` : まだ設定されていなければ、ご自分の環境に適した NTP サーバーを指定します。IdM サーバーは ntp を実行している必要があります。
    • cloud-names.yaml: 初期デプロイメントコマンドからの FQDN (IP ではなく) が含まれます。
    • enable-tls.yaml: 新しいオーバークラウド証明書が含まれます。https://github.com/openstack/tripleo-heat-templates/blob/master/environments/ssl/enable-tls.yaml で例を確認してください。
    • public_vip.yaml: dns が照合できるように、エンドポイントを特定の ip にマッピングします。
    • enable-internal-tls.yaml: 内部エンドポイント用に TLS を有効にします。
    • tls-everywhere-endpoints-dns.yaml: DNS 名を使用して TLS エンドポイントを設定します。このファイルの内容を確認して、設定の範囲を把握することができます。
    • haproxy-public-tls-certmonger.yaml: certmonger は haproxy の内部証明書およびパブリック証明書を管理します。
    • inject-trust-anchor.yaml: ルート認証局を追加します。このパラメーターは、証明書が依存する CA チェーンがまだデフォルトで使用される共通セットの一部ではない場合にのみ必要です (たとえば、自己署名の証明書を使用する場合など)。

      以下に例を示します。

      [ stack@undercloud ~]$ openstack overcloud deploy \
      ...
        --ntp-server 10.13.57.78 \
        -e /home/stack/cloud-names.yaml \
        -e /home/stack/enable-tls.yaml \
        -e /home/stack/public_vip.yaml \
        -e <tripleo-heat-templates>/environments/ssl/enable-internal-tls.yaml \
        -e <tripleo-heat-templates>/environments/ssl/tls-everywhere-endpoints-dns.yaml \
        -e <tripleo-heat-templates>/environments/services/haproxy-public-tls-certmonger.yaml \
        -e /home/stack/inject-trust-anchor.yaml
      ...
      注記

      これらの環境ファイルの例は、https://github.com/openstack/tripleo-heat-templates/tree/master/environments/ssl を参照してください。

注記

テンプレート enable-internal-tls.j2.yaml は、overcloud deploy コマンドで enable-internal-tls.yaml として参照されます。

さらに、enable-tls.yaml の古いパブリックエンドポイント証明書は、certmonger が haproxy-public-tls-certmonger.yaml に置き換えられますが、このファイルはアップグレードプロセスで参照される必要があります。

17.4.4. IdM サブドメインを使用するデプロイメントのアンダークラウドインテグレーションの設定

以下の手順では、IdM サブドメインを使用するデプロイメントのアンダークラウドインテグレーションを設定する方法について説明します。

Red Hat OpenStack Platform では、novajoin を使用して Red Hat Identity Management (IdM) との統合を行い、この IdM が暗号化証明書を発行および管理します。以下の手順では、アンダークラウドを IdM に登録し、トークンを生成し、アンダークラウド設定でトークンを有効にしてから、アンダークラウドおよびオーバークラウドのデプロイメントスクリプトを再実行します。以下に例を示します。

  1. IdM との統合用に python-novajoin をインストールします。

    [stack@undercloud-0 ~]$
  2. novajoin 設定スクリプトを実行し、IdM デプロイメントの設定情報を指定します。以下に例を示します。

    [stack@undercloud-0 ~]$ sudo novajoin-ipa-setup --principal admin --password ComplexRedactedPassword \
      --server ipa.lab.local --realm lab.local --domain lab.local \
      --hostname undercloud-0.site1.lab.local --precreate
    ...
    0Uvua6NyIWVkfCSTOmwbdAobsqGH2GONRJrW24MoQ4wg

    この出力には、IdM のワンタイムパスワード (OTP) が含まれますが、この値はご自分のデプロイメントとは異なります。

  3. novajoin を使用するようにアンダークラウドを設定し、OTP、DNS および NTP 用の IdM IP アドレス、ならびにオーバークラウドドメインを追加します。

    [stack@undercloud ~]$ vi undercloud.conf
    …
    [DEFAULT]
    undercloud_ntp_servers=X.X.X.X
    hieradata_override = /home/stack/hiera_override.yaml
    enable_novajoin = true
    ipa_otp = 0Uvua6NyIWVkfCSTOmwbdAobsqGH2GONRJrW24MoQ4wg
    undercloud_hostname = undercloud-0.site1.lab.local
    undercloud_nameservers = X.X.X.X
    overcloud_domain_name = site1.lab.local
    ...
  4. novajoin を使用するようにアンダークラウドを設定し、OTP、DNS 用の IdM IP アドレス、およびオーバークラウドドメインを追加します。

    [stack@undercloud-0 ~]$ vi hiera_override.yaml
    nova::metadata::novajoin::api::ipa_domain: site1.lab.local
    ...
  5. アンダークラウドに novajoin サービスをインストールします。

    [stack@undercloud ~]$ openstack undercloud install
  6. オーバークラウドの IP アドレスを DNS に追加します。実際のデプロイメントに合わせて、この例を修正する必要があります。

    注記: オーバークラウドの network-environment.yaml をチェックして、各ネットワークの範囲内の仮想 IP を選択します。

    [root@ipa ~]$ ipa dnsrecord-add site1.lab.local overcloud --a-rec=10.0.0.101
    [root@ipa ~]# ipa dnszone-add site1.ctlplane.lab.local
    [root@ipa ~]# ipa dnsrecord-add site1.ctlplane.lab.local overcloud --a-rec 192.168.24.101
    [root@ipa ~]# ipa dnszone-add site1.internalapi.lab.local
    [root@ipa ~]# ipa dnsrecord-add site1.internalapi.lab.local overcloud --a-rec 172.17.1.101
    [root@ipa ~]# ipa dnszone-add site1.storage.lab.local
    [root@ipa ~]# ipa dnsrecord-add site1.storage.lab.local overcloud --a-rec 172.17.3.101
    [root@ipa ~]# ipa dnszone-add site1.storagemgmt.lab.local
    [root@ipa ~]# ipa dnsrecord-add site1.storagemgmt.lab.local overcloud --a-rec 172.17.4.101
  7. それぞれのエンドポイントについて public_vip.yaml マッピングを作成します。以下に例を示します。

    Parameter_defaults:
        PublicVirtualFixedIPs: [{'ip_address':'10.0.0.101'}]
        ControlFixedIPs: [{'ip_address':'192.168.24.101'}]
        InternalApiVirtualFixedIPs: [{'ip_address':'172.17.1.101'}]
        StorageVirtualFixedIPs: [{'ip_address':'172.17.3.101'}]
        StorageMgmtVirtualFixedIPs: [{'ip_address':'172.17.4.101'}]
        RedisVirtualFixedIPs: [{'ip_address':'172.17.1.102'}]
  8. それぞれのエンドポイントについて extras.yaml マッピングを作成します。以下に例を示します。

    parameter_defaults:
      MakeHomeDir: True
      IdMNoNtpSetup: false
      IdMDomain: redhat.local
      DnsSearchDomains: ["site1.redhat.local","redhat.local"]

17.4.5. IdM サブドメインを使用し、既存のパブリックエンドポイント証明書を維持するデプロイメントのアンダークラウドインテグレーションの設定

以下の手順では、IdM サブドメインを使用し、引き続き既存のパブリックエンドポイント証明書を維持するデプロイメントのアンダークラウドインテグレーションを設定する方法について説明します。

  1. 以下のパラメーターが openstack overcloud deploy コマンドに (有効な設定で) 存在することを確認してから、デプロイメントコマンドを再実行します。

    • --ntp-server` : まだ設定されていなければ、ご自分の環境に適した NTP サーバーを指定します。IdM サーバーは ntp を実行している必要があります。
    • cloud-names.yaml: 初期デプロイメントコマンドからの FQDN (IP ではなく) が含まれます。
    • enable-tls.yaml: 新しいオーバークラウド証明書が含まれます。https://github.com/openstack/tripleo-heat-templates/blob/master/environments/ssl/enable-tls.yaml で例を確認してください。
    • public_vip.yaml: dns が照合できるように、特定の IP にマップするエンドポイントが含まれます。
    • `extras.yaml ` : ログイン時のホームディレクトリー作成、no ntp 設定、ベース IdM ドメイン、および resolv.conf の dns 検索に関する設定を含めます。
    • enable-internal-tls.yaml: 内部エンドポイント用に TLS を有効にします。
    • tls-everywhere-endpoints-dns.yaml: DNS 名を使用して TLS エンドポイントを設定します。このファイルの内容を確認して、設定の範囲を把握することができます。
    • haproxy-internal-tls-certmonger.yaml: certmonger は haproxy の内部証明書を管理します。
    • inject-trust-anchor.yaml: ルート認証局を追加します。このパラメーターは、証明書が依存する CA チェーンがまだデフォルトで使用される共通セットの一部ではない場合にのみ必要です (たとえば、自己署名の証明書を使用する場合など)。

      以下に例を示します。

      [ stack@undercloud ~]$ openstack overcloud deploy \
      ...
        --ntp-server 10.13.57.78 \
        -e /home/stack/cloud-names.yaml \
        -e /home/stack/enable-tls.yaml \
        -e /home/stack/public_vip.yaml \
        -e /home/stack/extras.yaml \
        -e <tripleo-heat-templates>/environments/ssl/enable-internal-tls.yaml \
        -e <tripleo-heat-templates>/environments/ssl/tls-everywhere-endpoints-dns.yaml \
        -e <tripleo-heat-templates>/environments/services/haproxy-internal-tls-certmonger.yaml \
        -e /home/stack/inject-trust-anchor.yaml
      ...
      注記

      これらの環境ファイルの例は、https://github.com/openstack/tripleo-heat-templates/tree/master/environments/ssl を参照してください。

17.4.6. IdM サブドメインを使用し、既存のパブリックエンドポイント証明書を IdM の生成する証明書に置き換えるデプロイメントのアンダークラウドインテグレーションの設定

以下の手順では、IdM サブドメインを使用するデプロイメントのアンダークラウドインテグレーションを設定する方法、および既存のパブリックエンドポイント証明書を IdM の生成する証明書に置き換える方法について説明します。

  1. 以下のパラメーターが openstack overcloud deploy コマンドに (有効な設定で) 存在することを確認してから、デプロイメントコマンドを再実行します。

    • --ntp-server` : まだ設定されていなければ、ご自分の環境に適した NTP サーバーを指定します。IdM サーバーは ntp を実行している必要があります。
    • cloud-names.yaml: 初期デプロイメントコマンドからの FQDN (IP ではなく) が含まれます。
    • enable-tls.yaml: 新しいオーバークラウド証明書が含まれます。https://github.com/openstack/tripleo-heat-templates/blob/master/environments/ssl/enable-tls.yaml で例を確認してください。
    • public_vip.yaml: dns が照合できるように、エンドポイントを特定の ip にマッピングします。
    • `extras.yaml ` : ログイン時のホームディレクトリー作成、no ntp 設定、ベース IdM ドメイン、および resolv.conf の dns 検索に関する設定を含めます。
    • enable-internal-tls.yaml: 内部エンドポイント用に TLS を有効にします。
    • tls-everywhere-endpoints-dns.yaml: DNS 名を使用して TLS エンドポイントを設定します。このファイルの内容を確認して、設定の範囲を把握することができます。
    • haproxy-public-tls-certmonger.yaml: certmonger は haproxy の内部証明書およびパブリック証明書を管理します。
    • inject-trust-anchor.yaml: ルート認証局を追加します。このパラメーターは、証明書が依存する CA チェーンがまだデフォルトで使用される共通セットの一部ではない場合にのみ必要です (たとえば、自己署名の証明書を使用する場合など)。

      以下に例を示します。

      [ stack@undercloud ~]$ openstack overcloud deploy \
      ...
        --ntp-server 10.13.57.78 \
        -e /home/stack/cloud-names.yaml \
        -e /home/stack/enable-tls.yaml \
        -e /home/stack/public_vip.yaml \
        -e /home/stack/extras.yaml \
        -e <tripleo-heat-templates>/environments/ssl/enable-internal-tls.yaml \
        -e <tripleo-heat-templates>/environments/ssl/tls-everywhere-endpoints-dns.yaml \
        -e <tripleo-heat-templates>/environments/services/haproxy-public-tls-certmonger.yaml \
        -e /home/stack/inject-trust-anchor.yaml
      ...
      注記

      これらの環境ファイルの例は、https://github.com/openstack/tripleo-heat-templates/tree/master/environments/ssl を参照してください。

注記

この例では、テンプレート enable-internal-tls.j2.yaml は、overcloud deploy コマンドで enable-internal-tls.yaml として参照されます。さらに、enable-tls.yaml の古いパブリックエンドポイント証明書は、haproxy-public-tls-certmonger.yaml を使用して certmonger により置き換えられますが、このファイルはアップグレードプロセスで参照される必要があります。