Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第12章 Identity Management を使用した内部およびパブリックエンドポイントでの SSL/TLS の有効化
全オーバークラウドエンドポイントで SSL/TLS を有効化することができます。多数の証明書数が必要となるため、director は Red Hat Identity Management (IdM) サーバーと統合して認証局として機能し、オーバークラウドの証明書を管理します。このプロセスには、novajoin
を使用してオーバークラウドノードを IdM サーバーに登録するプロセスが必要です。
12.1. CA へのアンダークラウド追加
オーバークラウドをデプロイする前には、アンダークラウドを認証局 (CA) に追加する必要があります。
アンダークラウドノードで、
python-novajoin
パッケージをインストールします。$ sudo yum install python-novajoin
アンダークラウドノードで
novajoin-ipa-setup
スクリプトを実行します。値はデプロイメントに応じて調整します。$ sudo /usr/libexec/novajoin-ipa-setup \ --principal admin \ --password <IdM admin password> \ --server <IdM server hostname> \ --realm <overcloud cloud domain (in upper case)> \ --domain <overcloud cloud domain> \ --hostname <undercloud hostname> \ --precreate
以下の項では、ここで設定されたワンタイムパスワード (OTP) を使用してアンダークラウドを登録します。
12.2. アンダークラウドを IdM に追加します。
この手順では、アンダークラウドを IdM に登録して novajoin を設定します。
novajoin サービスは、デフォルトで無効にされます。有効化するには、
undercloud.conf
にエントリーを追加します。enable_novajoin = true
アンダークラウドノードをIdM に登録するためのワンタイムパスワード (OTP) を設定する必要があります。
ipa_otp = <otp>
neutron の DHCP サーバーによって提供されるオーバークラウドのドメイン名が IdM ドメインと一致するようにします (小文字の kerberos レルム)。
overcloud_domain_name = <domain>
アンダークラウドに適切なホスト名を設定します。
undercloud_hostname = <undercloud FQDN>
アンダークラウドのネームサーバーとして IdM を設定します。
undercloud_nameservers = <IdM IP>
より大きな環境の場合には、novajoin の接続タイムアウト値を確認する必要があります。
undercloud.conf
で、undercloud-timeout.yaml
という名前の新規ファイルへの参照を追加します。hieradata_override = /home/stack/undercloud-timeout.yaml
undercloud-timeout.yaml
に以下のオプションを追加します。タイムアウト値は秒単位で指定することができます (例:5
)。nova::api::vendordata_dynamic_connect_timeout: <timeout value> nova::api::vendordata_dynamic_read_timeout: <timeout value>
-
undercloud.conf
ファイルを保存します。 アンダークラウドのデプロイコマンドを実行して、既存のアンダークラウドに変更を適用します。
$ openstack undercloud install
12.3. オーバークラウド DNS の設定
IdM 環境を自動検出して、登録をより簡単にするには、IdM を DNS サーバーとして使用することを検討してください。
アンダークラウドに接続します。
$ source ~/stackrc
DNS ネームサーバーとして IdM を使用するためのコントロールプレーンサブネットを設定します。
$ openstack subnet set ctlplane-subnet --dns-nameserver <idm_server_address>
IdM サーバーを使用するように環境ファイルの
DnsServers
パラメーターを設定します。parameter_defaults: DnsServers: ["<idm_server_address>"]
このパラメーターは、通常カスタムの
network-environment.yaml
ファイルで定義されます。
12.4. novajoin を使用するためのオーバークラウドの設定
IdM 統合を有効化するには、
/usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml
環境ファイルのコピーを作成します。$ cp /usr/share/openstack-tripleo-heat-templates/environments/predictable-placement/custom-domain.yaml \ /home/stack/templates/custom-domain.yaml
/home/stack/templates/custom-domain.yaml
環境ファイルを編集して、デプロイメントに適したCloudDomain
とCloudName*
の値を設定します。以下に例を示します。parameter_defaults: CloudDomain: lab.local CloudName: overcloud.lab.local CloudNameInternal: overcloud.internalapi.lab.local CloudNameStorage: overcloud.storage.lab.local CloudNameStorageManagement: overcloud.storagemgmt.lab.local CloudNameCtlplane: overcloud.ctlplane.lab.local
オーバークラウドのデプロイプロセスで以下の環境ファイルを追加します。
-
/usr/share/openstack-tripleo-heat-templates/environments/enable-internal-tls.yaml
-
/usr/share/openstack-tripleo-heat-templates/environments/tls-everywhere-endpoints-dns.yaml
/home/stack/templates/custom-domain.yaml
以下に例を示します。
openstack overcloud deploy \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/enable-internal-tls.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/tls-everywhere-endpoints-dns.yaml \ -e /home/stack/templates/custom-domain.yaml \
その結果、デプロイされるオーバークラウドノードは自動的に IdM で登録されるようになります。
-
これで設定されるのは、内部エンドポイント向けの TLS のみです。外部エンドポイントには、
./tripleo-heat-templates/environments/enable-tls.yaml
環境ファイル (カスタムの証明書とキーを追加するように編集する必要あり) で TLS を追加する通常の方法を使用することができます。そのため、openstack deploy
コマンドは以下のようになります。openstack overcloud deploy \ --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/enable-internal-tls.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/tls-everywhere-endpoints-dns.yaml \ -e /home/stack/templates/custom-domain.yaml \ -e /home/stack/templates/enable-tls.yaml
また、IdM を使用して公開証明書を発行することもできます。その場合には、
./tripleo-heat-templates/environments/services/haproxy-public-tls-certmonger.yaml
環境ファイルを使用する必要があります。以下に例を示します。openstack overcloud deploy \ --templates \ -e ./tripleo-heat-templates/environments/enable-internal-tls.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/tls-everywhere-endpoints-dns.yaml \ -e /home/stack/templates/custom-domain.yaml \ -e ./tripleo-heat-templates/environments/services/haproxy-public-tls-certmonger.yaml