第10章 DCN への TLS-e の適用

分散コンピュートノードインフラストラクチャー用に設計されたクラウドで、TLS (Transport Layer Security) を有効にすることができます。パブリックアクセスだけに TLS を有効にするか、TLS-e としてすべてのネットワークで TLS を有効にすることができます。後者の場合、すべての内部および外部データフローで暗号化を行うことができます。

エッジサイトにはパブリックエンドポイントがないため、エッジスタックでパブリックアクセスを有効にすることはできません。パブリックアクセスの TLS の詳細は、オーバークラウドのパブリックエンドポイントでの SSL/TLS の有効化 を参照してください。

10.1. TLS-e を設定した分散コンピュートノードアーキテクチャーのデプロイ

前提条件

Red Hat Identity Manager (IdM) と共に Red Hat OpenStack Platform (RHOSP) 分散コンピュートノードアーキテクチャーで TLS-e を設定する場合には、Red Hat Identity Manager 用にデプロイされた Red Hat Enterprise Linux のバージョンに基づいて、以下のアクションを実行します。

Red Hat Enterprise Linux 8.4
  1. Red Hat Identity Management ノードで、ipa-ext.conf ファイルの ACL に対して信頼されるサブネットを許可します。
 acl "trusted_network" {
   localnets;
   localhost;
   192.168.24.0/24;
   192.168.25.0/24;
 };
  1. /etc/named/ipa-options-ext.conf ファイルで、再帰とクエリーキャッシュを許可します。

    allow-recursion { trusted_network; };
    allow-query-cache { trusted_network; };
  2. named-pkcs11 サービスを再起動します。

    systemctl restart named-pkcs11
Red Hat Enterprise Linux 8.2
Red Hat Enterprise Linux (RHEL) 8.2 に Red Hat Identity Manager (IdM) がある場合は、Red Hat Enterprise Linux をアップグレードしてから、RHEL 8.4 の指示に従ってください。
Red Hat Enterprise Linux 7.x
Red Hat Enterprise Linux (RHEL) 7.x に Red Hat Identity Manager (IdM) がある場合は、ドメイン名のアクセス制御手順 (ACI) を手動で追加する必要があります。たとえば、ドメイン名が redhat.local の場合は、Red Hat Identity Manager で以下のコマンドを実行して ACI を設定します。
ADMIN_PASSWORD=redhat_01
DOMAIN_LEVEL_1=local
DOMAIN_LEVEL_2=redhat

cat << EOF | ldapmodify -x -D "cn=Directory Manager" -w ${ADMIN_PASSWORD}
dn: cn=dns,dc=${DOMAIN_LEVEL_2},dc=${DOMAIN_LEVEL_1}
changetype: modify
add: aci
aci: (targetattr = "aaaarecord || arecord || cnamerecord || idnsname || objectclass || ptrrecord")(targetfilter = "(&(objectclass=idnsrecord)(|(aaaarecord=)(arecord=)(cnamerecord=)(ptrrecord=)(idnsZoneActive=TRUE)))")(version 3.0; acl "Allow hosts to read DNS A/AAA/CNAME/PTR records"; allow (read,search,compare) userdn = "ldap:///fqdn=*,cn=computers,cn=accounts,dc=${DOMAIN_LEVEL_2},dc=${DOMAIN_LEVEL_1}";)
EOF

手順

分散コンピュートノード (DCN) アーキテクチャーで TLS-e を実装する場合は、従来の novajoin 手法ではなく Ansible ベースの tripleo-ipa 手法を使用する必要があります。tripleo-ipa を使用した TLS-e のデプロイに関する詳細は、Ansible を使用した TLS-e の実装 を参照してください。

tripleo-ipa を使用して DCN アーキテクチャーに TLS-e をデプロイするには、以下の手順も完了する必要があります。

  1. エッジサイトにストレージをデプロイする場合は、エッジスタック用に変更した tripleo heat テンプレートに以下のパラメーターを追加します。

    TEMPLATES=/usr/share/openstack-tripleo-heat-templates
    
    resource_registry:
      OS::TripleO::Services::IpaClient:
        ${TEMPLATES}/deployment/ipa/ipaservices-baremetal-ansible.yaml
    
    parameter_defaults:
      EnableEtcdInternalTLS: true

中央サイトとエッジロケーションの設計の違いのため、エッジスタックには以下のファイルを含めないでください。

tls-everywhere-endpoints-dns.yaml
エッジサイトではこのファイルは無視され、このファイルで設定されるエンドポイントは中央スタックからエクスポートされるエンドポイントによってオーバーライドされます。
haproxy-public-tls-certmonger.yaml
エッジサイトにはパブリックエンドポイントがないため、このファイルはデプロイメント失敗の原因になります。