第1章 Trove の管理
1.1. Trove コントローラーのインストールと設定
Trove コントローラーに必要なパケージのインストールと環境の設定方法に関する詳しい説明は、『インストールリファレンス』を参照してください。
1.2. Trove のセキュリティー保護
Red Hat OpenStack Platform の以前のバージョンでは、Trove ゲストエージェントは、RabbitMQ メッセージバスへの認証情報を使用して実行されていました。RabbitMQ メッセージバスは、管理コントローラー全体で、機密データを含む全トラフィックに使用されていたので、Trove のインスタンスは、メッセージバスで送信される全データを表示することが可能でした。このため、インスタンスがこのバスを共有する他のサービスを誤用したり、攻撃したりできてしまう可能性がありました。Red Hat OpenStack Platform 8 では、Trove は、分離されたテナントに配置され、管理コントローラーの他の部分にはアクセスできなくなりましたが、DBaaS のセキュリティーをさらに強化するには、別のホストと別の RabbitMQ メッセージバスに Trove インスタンスを設定することが可能です。この設定を使用するには、以下の手順を実行してください。
管理コントローラー上での操作
RabbitMQ のユーザーとパスワードをカスタムの値に設定します。この値は、Trove テナントとは共有されません。たとえば、
guest
アカウントと/
デフォルト vhost に変更したパスワードを使用することができます。# rabbitmqctl change_password guest password
このパスワードは、サービスがメッセージバスに接続するように設定している全設定ファイルで変更されます。
Trove データベースエンドポイントを更新して、サービスカタログルックアップが別のホスト上で Trove を使用するようにします。まず現在のエンドポイント UUID を特定してから削除し、最後に別の Trove ホストの IP アドレスを使用して新規エンドポイントを作成します。
# keystone endpoint-list # keystone endpoint-delete current_trove_endpoint_uuid # keystone endpoint-create --service trove --publicurl http://IP:8779/v1.0/\$\(tenant_id\)s --region RegionOne
Trove コントローラー上での操作
リモート管理コントローラーホストの WSGI 設定で認証トークンフィルターをポイントします。
/etc/trove/api-paste.ini
ファイルで、以下のオプションと値を指定します。IP は管理コントローラーホストの IP アドレスに置き換えます。[filter:authtoken] paste.filter_factory = keystonemiddleware.auth_token:filter_factory service_protocol = http service_host = IP service_port = 5000 auth_host = IP auth_port = 35357 auth_protocol = http auth_uri = http://IP:35357/v2.0/ signing_dir = /tmp/keystone-signing-trove admin_tenant_name = admin admin_user = admin admin_password = admin
管理ユーザーを追加して、Trove ゲストエージェントには、管理コントローラーで使用しているのとは異なるシークレットが設定されるようにします。
# rabbitmqctl add_user isolated isolated # rabbitmqctl set_permissions isolated ".*" ".*" ".*"
/etc/trove/trove.conf
ファイルで以下オプションと値を指定して、Trove コントロールプレーンがローカルの RabbitMQ インスタンスに接続して認証を行うように設定します。# AMQP Connection info rabbit_userid=isolated rabbit_password=isolated rabbit_host=TROVE_IP # single instance tenant nova_proxy_admin_user = user nova_proxy_admin_pass = password nova_proxy_admin_tenant_name = tenant trove_auth_url = http://MGMT_IP:5000/v2.0 nova_compute_service_type = compute cinder_service_type = volumev2 os_region_name = RegionOne nova_compute_url = http://MGMT_IP:8774/v3 remote_nova_client = trove_ext.cloudos.remote.nova_client_trove_admin remote_cinder_client = trove_ext.cloudos.remote.cinder_client_trove_admin remote_neutron_client = trove_ext.cloudos.remote.neutron_client_trove_admin
管理コントローラーに戻り、
/etc/trove/trove-guestagent.conf
ファイルを以下のように編集します。# AMQP Connection info rabbit_userid=isolated rabbit_password=isolated rabbit_host=TROVE_IP # single tenant config nova_proxy_admin_user = user nova_proxy_admin_pass = password nova_proxy_admin_tenant_name = tenant trove_auth_url = http://MGMT_IP:5000/v2.0 swift_url = http://MGMT_IP:8080/v1/AUTH_
また、RabbitMQ vhost の提供する ACL ポリシーを活用してセキュリティーを強化することができます。この場合には、vhost ごとに異なるパーミッションのある異なるユーザーを割り当てることができます。たとえば、/isolated
という名前の vhost を定義して、isolated
ユーザーに vhost の適切なパーミッションを割り当てます。このように設定するには、以下の手順を実行します。
デフォルトの
/
vhost 用のguest
アカウントのパスワードを変更します。# rabbitmqctl change_password guest password
新規ユーザーと vhost を追加して、パーミッションを適切に設定します。
# rabbitmqctl add_user isolated isolated # rabbitmqctl add_vhost /isolated # rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"
Trove の設定を編集します。編集するファイルは 2 つあります。
/etc/trove/trove-guestmanager.conf
は、puppet-trove から packstack によって生成され、ゲストインスタンスに挿入されます。/etc/trove/trove-conductor.conf
は、Trove インスタンスからの非同期ステータス更新のための Trove コントロールプレーンサービスを設定します。[oslo_messaging_rabbit] rabbit_host=IP rabbit_virtual_host=/isolated rabbit_userid=isolated rabbit_password=isolated rabbit_port=5672 rabbit_ha_queues=False rabbit_hosts=IP:5672 rabbit_use_ssl=False
この方法の利点は、別のホストとメッセージキューを使用する場合のシナリオよりもシンプルであることです。これは、Red Hat OpenStack Platform director を使用するなどの方法で、プロビジョニングを自動的に実行する場合に役立てることができます。
Comments