このセクションでは、OpenStack の鍵管理サービス( Barbican )のインストールと設定について紹介します。Barbican は、パスワードや認証といったセキュリティ事項アンリのための REST API を提供します。
データベースクライアントを使用して、データベースサーバーに root ユーザーとして接続します。
[root@controller ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 16588346 Server version: 10.1.20-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
データベース barbican を作成します。
MariaDB [(none)]> CREATE DATABASE barbican; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]>
データベースに適切なアクセス権を付与します。ここでは barbican データベースに接続するパスワードは BARBICAN_DB_PASS としているので、実際の情報に置き換えてください。
MariaDB [(none)]> GRANT ALL PRIVILEGES ON barbican.* TO 'barbican'@'localhost' IDENTIFIED BY 'BARBICAN_DB_PASS'; Query OK, 0 rows affected (0.02 sec) MariaDB [(none)]> GRANT ALL PRIVILEGES ON barbican.* TO 'barbican'@'%' IDENTIFIED BY 'BARBICAN_DB_PASS'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> MariaDB [(none)]> exit Bye [root@controller ~]#
クレデンシャル, エンティティ, エンドポイントの作成
admin クレデンシャルを読み込み、管理者専用 CLI コマンドへのアクセス権を取得します。
[root@controller ~]# . openrc/admin-openrc [root@controller ~]#
barbican ユーザーを作成します。ここでは、barbican ユーザーのパスワードは BARBICAN_PASS としているので、適宜変更して下さい。
[root@controller ~]# openstack user create --domain default --password-prompt barbican User Password: BARBICAN_PASS Repeat User Password: BARBICAN_PASS +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | e3aea96c100e49bbaae205ae821ee31e | | name | barbican | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ [root@controller ~]#
admin の ロールを barbican ユーザーと service プロジェクトに追加します。
[root@controller ~]# openstack role add --project service --user barbican admin [root@controller ~]#
creater ロールを作成します。
[root@controller ~]# openstack role create creator +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | None | | id | ba12513fe02941ae803168d50f8ba57b | | name | creator | +-----------+----------------------------------+ [root@controller ~]#
creator の ロールを barbican ユーザーと service プロジェクトに追加します。
[root@controller ~]# openstack role add --project service --user barbican creator [root@controller ~]#
barbican サービスエンティティーを作成します。
[root@controller ~]# openstack service create --name barbican --description "Key Manager" key-manager +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Key Manager | | enabled | True | | id | a7e20a1119d24a5fbe6ca439d5e6a84d | | name | barbican | | type | key-manager | +-------------+----------------------------------+ [root@controller ~]#
key-manager サービスのAPI エンドポイントを作成します。
[root@controller ~]# openstack endpoint create --region RegionOne \ key-manager public http://controller:9311 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 9cbfbef99e10429d82b0644ada8565e8 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | a7e20a1119d24a5fbe6ca439d5e6a84d | | service_name | barbican | | service_type | key-manager | | url | http://controller:9311 | +--------------+----------------------------------+ [root@controller ~]#
[root@controller ~]# openstack endpoint create --region RegionOne \ key-manager internal http://controller:9311 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | cd27a0de167145f4b5de3db4c6a5715a | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | a7e20a1119d24a5fbe6ca439d5e6a84d | | service_name | barbican | | service_type | key-manager | | url | http://controller:9311 | +--------------+----------------------------------+ [root@controller ~]#
[root@controller ~]# openstack endpoint create --region RegionOne \ key-manager admin http://controller:9311 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | 57c7b9414cf04f31915eb3ac6a2b2d0a | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | a7e20a1119d24a5fbe6ca439d5e6a84d | | service_name | barbican | | service_type | key-manager | | url | http://controller:9311 | +--------------+----------------------------------+ [root@controller ~]#
コンポーネントのインストールと設定
openstack-rocky の yum リポジトリ(CentOS-Openstack-rocky.repo)を使って、 鍵管理サービス ( Barbican ) に必要なパッケージをインストールします。
[root@controller ~]# yum --enablerepo=centos-openstack-rocky -y install openstack-barbican 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.riken.jp * epel: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ openstack-barbican.noarch 0:7.0.0-1.el7 を インストール --> 依存性の処理をしています: python-barbican のパッケージ: openstack-barbican-7.0.0-1.el7.noarch --> 依存性の処理をしています: openstack-barbican-worker のパッケージ: openstack-barbican-7.0.0-1.el7.noarch --> 依存性の処理をしています: openstack-barbican-api のパッケージ: openstack-barbican-7.0.0-1.el7.noarch --> トランザクションの確認を実行しています。 ---> パッケージ openstack-barbican-api.noarch 0:7.0.0-1.el7 を インストール --> 依存性の処理をしています: openstack-barbican-common のパッケージ: openstack-barbican-api-7.0.0-1.el7.noarch ---> パッケージ openstack-barbican-worker.noarch 0:7.0.0-1.el7 を インストール ---> パッケージ python-barbican.noarch 0:7.0.0-1.el7 を インストール --> 依存性の処理をしています: python2-ldap3 のパッケージ: python-barbican-7.0.0-1.el7.noarch --> トランザクションの確認を実行しています。 ---> パッケージ openstack-barbican-common.noarch 0:7.0.0-1.el7 を インストール ---> パッケージ python2-ldap3.noarch 0:2.5.1-2.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: openstack-barbican noarch 7.0.0-1.el7 centos-openstack-rocky 7.4 k 依存性関連でのインストールをします: openstack-barbican-api noarch 7.0.0-1.el7 centos-openstack-rocky 23 k openstack-barbican-common noarch 7.0.0-1.el7 centos-openstack-rocky 4.9 k openstack-barbican-worker noarch 7.0.0-1.el7 centos-openstack-rocky 4.3 k python-barbican noarch 7.0.0-1.el7 centos-openstack-rocky 417 k python2-ldap3 noarch 2.5.1-2.el7 epel 507 k トランザクションの要約 ================================================================================ インストール 1 パッケージ (+5 個の依存関係のパッケージ) 総ダウンロード容量: 963 k インストール容量: 5.5 M Downloading packages: (1/6): openstack-barbican-7.0.0-1.el7.noarch.rpm | 7.4 kB 00:01 (2/6): openstack-barbican-api-7.0.0-1.el7.noarch.rpm | 23 kB 00:01 (3/6): openstack-barbican-common-7.0.0-1.el7.noarch.rpm | 4.9 kB 00:00 (4/6): openstack-barbican-worker-7.0.0-1.el7.noarch.rpm | 4.3 kB 00:00 (5/6): python2-ldap3-2.5.1-2.el7.noarch.rpm | 507 kB 00:01 (6/6): python-barbican-7.0.0-1.el7.noarch.rpm | 417 kB 00:01 -------------------------------------------------------------------------------- 合計 305 kB/s | 963 kB 00:03 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : python2-ldap3-2.5.1-2.el7.noarch 1/6 インストール中 : python-barbican-7.0.0-1.el7.noarch 2/6 インストール中 : openstack-barbican-common-7.0.0-1.el7.noarch 3/6 インストール中 : openstack-barbican-worker-7.0.0-1.el7.noarch 4/6 インストール中 : openstack-barbican-api-7.0.0-1.el7.noarch 5/6 インストール中 : openstack-barbican-7.0.0-1.el7.noarch 6/6 検証中 : openstack-barbican-7.0.0-1.el7.noarch 1/6 検証中 : openstack-barbican-common-7.0.0-1.el7.noarch 2/6 検証中 : openstack-barbican-worker-7.0.0-1.el7.noarch 3/6 検証中 : openstack-barbican-api-7.0.0-1.el7.noarch 4/6 検証中 : python2-ldap3-2.5.1-2.el7.noarch 5/6 検証中 : python-barbican-7.0.0-1.el7.noarch 6/6 インストール: openstack-barbican.noarch 0:7.0.0-1.el7 依存性関連をインストールしました: openstack-barbican-api.noarch 0:7.0.0-1.el7 openstack-barbican-common.noarch 0:7.0.0-1.el7 openstack-barbican-worker.noarch 0:7.0.0-1.el7 python-barbican.noarch 0:7.0.0-1.el7 python2-ldap3.noarch 0:2.5.1-2.el7 完了しました! [root@controller ~]#
Barbican の設定ファイル( /etc/barbican/barbican.conf )を編集し、以下の設定をします。
[root@controller ~]# vi /etc/barbican/barbican.conf
[ DEFAULT ]セクションで、データベースアクセスを設定します。ここでは、barbican データベースに接続するパスワードは BARBICAN_DB_PASS としているので、実際の情報に置き換えてください。
[DEFAULT] ... sql_connection = mysql+pymysql://barbican:BARBICAN_DB_PASS@controller/barbican
[ DEFAULT ] セクションで、RabbitMQ メッセージキューのアクセス方法を設定します。RABBIT_PASS は、RabbitMQ の openstack ユーザー用に選択したパスワードに置き換えてください。
[DEFAULT] ... transport_url = rabbit://openstack:RABBIT_PASS@controller
[ keystone_authtoken ] に、認証サービス( Keystone )へのアクセス方法を設定します。ここでは、barbican ユーザーのパスワードは BARBICAN_PASS としているので、実際の情報に置き換えてください。
[keystone_authtoken] ... www_authenticate_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = barbican password = BARBICAN_PASS
Barbican データベースを展開します。
[root@controller ~]# su -s /bin/sh -c "barbican-manage db upgrade" barbican 2019-02-16 18:41:08.549 9455 WARNING oslo_db.sqlalchemy.engines [-] MySQL SQL mode is 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION', consider enabling TRADITIONAL or STRICT_ALL_TABLES: Empty 2019-02-16 18:41:08.553 9455 INFO alembic.runtime.migration [-] Context impl MySQLImpl. 2019-02-16 18:41:08.553 9455 INFO alembic.runtime.migration [-] Will assume non-transactional DDL. 2019-02-16 18:41:08.629 9455 INFO alembic.runtime.migration [-] Running upgrade -> 1a0c2cdafb38, create test table 2019-02-16 18:41:08.636 9455 INFO alembic.runtime.migration [-] Running upgrade 1a0c2cdafb38 -> juno, juno_initial 2019-02-16 18:41:08.962 9455 INFO alembic.runtime.migration [-] Running upgrade juno -> 13d127569afa, create_secret_store_metadata_table 2019-02-16 18:41:08.997 9455 INFO alembic.runtime.migration [-] Running upgrade 13d127569afa -> 1e86c18af2dd, add new columns type meta containerId 2019-02-16 18:41:09.128 9455 INFO alembic.runtime.migration [-] Running upgrade 1e86c18af2dd -> cd4106a1a0, add-cert-to-container-type 2019-02-16 18:41:09.137 9455 INFO alembic.runtime.migration [-] Running upgrade cd4106a1a0 -> 47b69e523451, Made plugin names in kek datum non nullable 2019-02-16 18:41:09.143 9455 INFO alembic.runtime.migration [-] Running upgrade 47b69e523451 -> 4070806f6972, Add orders plugin metadata table and relationships 2019-02-16 18:41:09.180 9455 INFO alembic.runtime.migration [-] Running upgrade 4070806f6972 -> 2ab3f5371bde, dsa in container type modelbase_to 2019-02-16 18:41:09.460 9455 INFO alembic.runtime.migration [-] Running upgrade 2ab3f5371bde -> 2843d6469f25, add sub status info for orders 2019-02-16 18:41:09.533 9455 INFO alembic.runtime.migration [-] Running upgrade 2843d6469f25 -> 254495565185, removing redundant fields from order 2019-02-16 18:41:09.728 9455 INFO alembic.runtime.migration [-] Running upgrade 254495565185 -> 795737bb3c3, Change tenants to projects 2019-02-16 18:41:10.263 9455 INFO alembic.runtime.migration [-] Running upgrade 795737bb3c3 -> 256da65e0c5f, Change keystone_id for external_id in Project model 2019-02-16 18:41:10.318 9455 INFO alembic.runtime.migration [-] Running upgrade 256da65e0c5f -> aa2cf96a1d5, Add OrderRetryTask 2019-02-16 18:41:10.346 9455 INFO alembic.runtime.migration [-] Running upgrade aa2cf96a1d5 -> 443d6f4a69ac, added secret type column to secrets table 2019-02-16 18:41:10.387 9455 INFO alembic.runtime.migration [-] Running upgrade 443d6f4a69ac -> 3d36a26b88af, Add OrderBarbicanMetadata table 2019-02-16 18:41:10.418 9455 INFO alembic.runtime.migration [-] Running upgrade 3d36a26b88af -> 2d21598e7e70, Added CA related tables 2019-02-16 18:41:10.522 9455 INFO alembic.runtime.migration [-] Running upgrade 2d21598e7e70 -> 1c0f328bfce0, Fixing composite primary keys and adding indexes to foreign key /usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `ix_preferred_certificate_authorities_project_id`. This is deprecated and will be disallowed in a future release.') result = self._query(query) 2019-02-16 18:41:11.007 9455 INFO alembic.runtime.migration [-] Running upgrade 1c0f328bfce0 -> 1a7cf79559e3, New secret and container ACL tables 2019-02-16 18:41:11.286 9455 INFO alembic.runtime.migration [-] Running upgrade 1a7cf79559e3 -> 3041b53b95d7, Remove size limits on meta table values 2019-02-16 18:41:11.396 9455 INFO alembic.runtime.migration [-] Running upgrade 3041b53b95d7 -> 30dba269cc64, Update order_retry_tasks table 2019-02-16 18:41:11.550 9455 INFO alembic.runtime.migration [-] Running upgrade 30dba269cc64 -> 6a4457517a3, rename ACL creator_only to project_access 2019-02-16 18:41:11.624 9455 INFO alembic.runtime.migration [-] Running upgrade 6a4457517a3 -> 1bc885808c76, Add project id to Secrets 2019-02-16 18:41:11.717 9455 INFO alembic.runtime.migration [-] Running upgrade 1bc885808c76 -> 161f8aceb687, fill project_id to secrets where missing 2019-02-16 18:41:11.877 9455 INFO alembic.runtime.migration [-] Running upgrade 161f8aceb687 -> 1bece815014f, remove ProjectSecret table 2019-02-16 18:41:11.892 9455 INFO alembic.runtime.migration [-] Running upgrade 1bece815014f -> kilo, kilo 2019-02-16 18:41:11.895 9455 INFO alembic.runtime.migration [-] Running upgrade kilo -> 46b98cde536, Add project quotas table 2019-02-16 18:41:11.940 9455 INFO alembic.runtime.migration [-] Running upgrade 46b98cde536 -> 156cd9933643, Add project column to consumer table 2019-02-16 18:41:12.084 9455 INFO alembic.runtime.migration [-] Running upgrade 156cd9933643 -> 3c3b04040bfe, add owning project and creator to CAs 2019-02-16 18:41:12.182 9455 INFO alembic.runtime.migration [-] Running upgrade 3c3b04040bfe -> 10220ccbe7fa, Remove transport keys column from project quotas table 2019-02-16 18:41:12.216 9455 INFO alembic.runtime.migration [-] Running upgrade 10220ccbe7fa -> 4ecde3a3a72a, Add cas column to project quotas table 2019-02-16 18:41:12.247 9455 INFO alembic.runtime.migration [-] Running upgrade 4ecde3a3a72a -> 39a96e67e990, Add missing constraints 2019-02-16 18:41:12.269 9455 INFO alembic.runtime.migration [-] Running upgrade 39a96e67e990 -> dce488646127, add-secret-user-metadata 2019-02-16 18:41:12.303 9455 INFO alembic.runtime.migration [-] Running upgrade dce488646127 -> d2780d5aa510, change_url_length 2019-02-16 18:41:12.308 9455 INFO alembic.runtime.migration [-] Running upgrade d2780d5aa510 -> 39cf2e645cba, Model for multiple backend support /usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `ix_project_secret_store_project_id`. This is deprecated and will be disallowed in a future release.') result = self._query(query) [root@controller ~]#
暗号プラグインの設定
Barbican の設定ファイル( /etc/barbican/barbican.conf )を編集し、以下の設定をします。
[root@controller ~]# vi /etc/barbican/barbican.conf
[ secretstore ] セクションで、暗号プラグインを有効します。 暗号プラグインは、Barbican データベース内の暗号化された BLOB に秘密情報を格納します。
[secretstore] namespace = barbican.secretstore.plugin enabled_secretstore_plugins = store_crypto
[ crytpo ] セクションで、使用するプラグインを指定します。利用できるプラグインには、Simple Crypto プラグインと PKCS#11 暗号プラグインの 2種類あります。ここでは、単純に Simple Crypto プラグインを指定しています。ただし、Simple Crypto プラグインは完全に安全ではなく開発テストのみに適しています。
[crypto] enabled_crypto_plugins = simple_crypto
[ simple_crypto_plugin ] セクションで、Simple Crypto プラグインで暗号化するための鍵情報を指定します。指定は、Base 64 エンコードされた 32バイト値でなければなりません。
[simple_crypto_plugin] kek = dGhpcnR5X3R3b19ieXRlX2tleWJsYWhibGFoYmxhaGg=
インストールの最後
wsgi-barbican 設定ファイル( /etc/httpd/conf.d/wsgi-barbican.conf )を新規作成し、設定します。
[root@controller ~]# vi /etc/httpd/conf.d/wsgi-barbican.conf
Listen 9311 <VirtualHost *:9311> ServerName controller WSGIApplicationGroup %{GLOBAL} WSGIDaemonProcess barbican-api display-name=barbican-api group=barbican processes=2 threads=8 user=barbican WSGIProcessGroup barbican-api WSGIScriptAlias / "/usr/lib/python2.7/site-packages/barbican/api/app.wsgi" WSGIPassAuthorization On <IfVersion >= 2.4> ErrorLogFormat "%{cu}t %M" </IfVersion> ErrorLog /var/log/httpd/barbican_error.log CustomLog /var/log/httpd/barbican_access.log combined <Directory /usr/lib/python2.7/site-packages/barbican/api> <IfVersion >= 2.4> Require all granted </IfVersion> <IfVersion < 2.4> Order allow,deny Allow from all </IfVersion> </Directory> </VirtualHost>
設定を反映するために、httpd サービスを再起動します。
■ 再起動 [root@controller ~]# systemctl restart httpd.service [root@controller ~]# ■ 起動状態の確認 [root@controller ~]# systemctl status httpd.service ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d └─openstack-dashboard.conf /etc/systemd/system/httpd.service.d └─override.conf Active: active (running) since 土 2019-02-16 18:45:25 JST; 8s ago Docs: man:httpd(8) man:apachectl(8) Process: 10418 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS) Process: 10454 ExecStartPre=/usr/bin/python /usr/share/openstack-dashboard/manage.py compress --force -v0 (code=exited, status=0/SUCCESS) Process: 10432 ExecStartPre=/usr/bin/python /usr/share/openstack-dashboard/manage.py collectstatic --noinput --clear -v0 (code=exited, status=0/SUCCESS) Main PID: 10846 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─10846 /usr/sbin/httpd -DFOREGROUND ├─10848 /usr/sbin/httpd -DFOREGROUND ├─10849 /usr/sbin/httpd -DFOREGROUND ├─10850 /usr/sbin/httpd -DFOREGROUND ├─10851 /usr/sbin/httpd -DFOREGROUND ├─10852 barbican-api -DFOREGROUND ├─10853 barbican-api -DFOREGROUND ├─10854 (wsgi:keystone- -DFOREGROUND ├─10855 (wsgi:keystone- -DFOREGROUND ├─10856 (wsgi:keystone- -DFOREGROUND ├─10857 (wsgi:keystone- -DFOREGROUND ├─10858 (wsgi:keystone- -DFOREGROUND ├─10859 /usr/sbin/httpd -DFOREGROUND ├─10860 /usr/sbin/httpd -DFOREGROUND ├─10861 /usr/sbin/httpd -DFOREGROUND ├─10862 /usr/sbin/httpd -DFOREGROUND ├─10863 /usr/sbin/httpd -DFOREGROUND ├─10933 /usr/sbin/httpd -DFOREGROUND ├─10960 /usr/sbin/httpd -DFOREGROUND ├─10961 /usr/sbin/httpd -DFOREGROUND ├─10970 /usr/sbin/httpd -DFOREGROUND ├─10971 /usr/sbin/httpd -DFOREGROUND ├─10972 /usr/sbin/httpd -DFOREGROUND └─10973 /usr/sbin/httpd -DFOREGROUND 2月 16 18:44:24 controller systemd[1]: Starting The Apache HTTP Server... 2月 16 18:45:25 controller python[10454]: Compressing... done 2月 16 18:45:25 controller python[10454]: Compressed 7 block(s) from 4 tem.... 2月 16 18:45:25 controller systemd[1]: Started The Apache HTTP Server. Hint: Some lines were ellipsized, use -l to show in full. [root@controller ~]#