1.2. Secure Database-as-a-Service
Red Hat OpenStack Platform の以前のバージョンでは、DBaaS ゲストエージェントは、すべてのトラフィックに対して管理コントローラー全体によって使用された RabbitMQ メッセージバスへの認証情報と共に実行されていました。したがって、DBaaS インスタンスは、機密データを含む、メッセージバスを介して送信されたすべてのデータを表示できます。これにより、インスタンスはバスを共有する他のサービスを誤用したり、攻撃したりする可能性があります。Red Hat OpenStack Platform 8 では、DBaaS は、残りの管理コントローラーにアクセスできない分離されたテナントに配置されます。ただし、DBaaS のセキュリティーをさらに強化するには、別のホストと別の RabbitMQ メッセージバスに DBaaS インスタンスをセットアップできます。これを実行するには、以下の手順を実行します。
管理コントローラー で、以下を行います。
RabbitMQ のユーザーとパスワードを、DBaaS テナントと共有されないカスタム値に設定します。たとえば、パスワードが変更された
ゲストアカウントと/default 仮想ホストを使用できます。rabbitmqctl change_password guest password
# rabbitmqctl change_password guest passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow パスワードは、サービスがメッセージバスに接続するように設定されているすべての設定ファイルで変更されます。
DBaaS データベースのエンドポイントを更新して、サービスカタログの検索が別のホストで DBaaS を使用できるようにします。まず、現在のエンドポイントの UUID を確認してから削除し、最後に別の DBaaS ホストの IP アドレスを使用して新しいエンドポイントを作成します。
keystone endpoint-list keystone endpoint-delete current_DBaaS_endpoint_uuid keystone endpoint-create --service trove --publicurl http://IP:8779/v1.0/\$\(tenant_id\)s --region RegionOne
# keystone endpoint-list # keystone endpoint-delete current_DBaaS_endpoint_uuid # keystone endpoint-create --service trove --publicurl http://IP:8779/v1.0/\$\(tenant_id\)s --region RegionOneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
DBaaS コントローラーで以下を行います。
リモート管理コントローラーホストの WSGI 設定の認証トークンフィルターを指定します。
/etc/trove/api-paste.iniファイルの次のオプションと値を使用します。IP は、管理コントローラーホストの IP アドレスに置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 管理ユーザーを追加して、DBaaS ゲストエージェントが管理コントローラーで使用されているシークレットとは異なるシークレットを持つようにします。
rabbitmqctl add_user isolated isolated rabbitmqctl set_permissions isolated ".*" ".*" ".*"
# rabbitmqctl add_user isolated isolated # rabbitmqctl set_permissions isolated ".*" ".*" ".*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のオプションおよび値を
/etc/trove/trove.confファイルに配置して、ローカルの RabbitMQ インスタンスに接続し、認証するように DBaaS コントロールプレーンを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
管理コントローラーで、以下のように
/etc/trove/trove-guestagent.confファイルを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1. ACL ポリシー リンクのコピーリンクがクリップボードにコピーされました!
あるいは、RabbitMQ 仮想ホストが提供する ACL ポリシーを利用して、セキュリティーを向上させることもできます。この場合は、個別の権限を含む、各仮想ホストに個別のユーザーを割り当てることができます。たとえば、/isolated という仮想ホストを定義し、分離されたユーザーを仮想ホストに適切なパーミッションに割り当てることができます。このタスクを実行するには、以下の手順を実行します。
デフォルト
/仮想ホストのゲストアカウントのパスワードを変更します。rabbitmqctl change_password guest password
# rabbitmqctl change_password guest passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規ユーザーおよび仮想ホストを追加し、パーミッションを適切に設定します。
rabbitmqctl add_user isolated isolated rabbitmqctl add_vhost /isolated rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"
# rabbitmqctl add_user isolated isolated # rabbitmqctl add_vhost /isolated # rabbitmqctl -p /isolated set_permissions isolated ".*" ".*" ".*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow DBaaS 設定を編集します。編集するファイルは
/etc/trove/trove-guestmanager.confの 2 つあります。これは、puppet-trove から packstack によって生成され、ゲストインスタンスに注入されます。/etc/trove/trove-conductor.confは、DBaaS インスタンスからの非同期ステータス更新用に DBaaS コントロールプレーンサービスを設定します。RabbitMQ の設定は、両方のファイルで同一です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
このアプローチの利点は、個別のホストとメッセージキューが使用されるシナリオと比較して簡素化されます。この設定は、Red Hat OpenStack Platform director などを使用して、プロビジョニングが自動的に実行される場合に役立ちます。