Menu Close
オーバークラウドへの Fernet のデプロイ
Red Hat OpenStack Platform オーバークラウドへの Fernet のデプロイ
概要
前書き
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージをご覧ください。
Red Hat ドキュメントへのフィードバック (英語のみ)
弊社ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。
ドキュメントへのダイレクトフィードバック (DDF) 機能の使用 (英語版のみ)
特定の文章、段落、またはコードブロックに対して直接コメントを送付するには、DDF の Add Feedback 機能を使用してください。なお、この機能は英語版のドキュメントでのみご利用いただけます。
- Multi-page HTML 形式でドキュメントを表示します。
- ドキュメントの右上隅に Feedback ボタンが表示されていることを確認してください。
- コメントするテキスト部分をハイライト表示します。
- Add Feedback をクリックします。
- Add Feedback フィールドにコメントを入力します。
- オプション:ドキュメントチームが連絡を取り、問題についてお伺いできるように、ご自分のメールアドレスを追加します。
- 送信 をクリックします。
第1章 オーバークラウドでの暗号化に Fernet キーの使用
Fernet はデフォルトのトークンプロバイダーであり、uuid
に置き換わるものです。Fernet デプロイメントを確認して、Fernet キーをローテーションできます。
1.1. Fernet デプロイメントの確認
設定をチェックして、Fernet トークンが正常に機能していることを確認します。
手順
コントローラーノードの IP アドレスを取得します。
[stack@director ~]$ source ~/stackrc [stack@director ~]$ openstack server list
--------------------------------------
---------------------------------
---------------------+ | ID | Name | Status | Networks |--------------------------------------
---------------------------------
---------------------+ | 756fbd73-e47b-46e6-959c-e24d7fb71328 | overcloud-controller-0 | ACTIVE | ctlplane=192.0.2.16 | | 62b869df-1203-4d58-8e45-fac6cd4cfbee | overcloud-novacompute-0 | ACTIVE | ctlplane=192.0.2.8 |--------------------------------------
---------------------------------
---------------------+コントローラーノードに対して SSH を実行します。
[heat-admin@overcloud-controller-0 ~]$ ssh heat-admin@192.0.2.16
トークンドライバーおよびプロバイダー設定の値を取得します。
[heat-admin@overcloud-controller-0 ~]$ sudo crudini --get /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf token driver sql [heat-admin@overcloud-controller-0 ~]$ sudo crudini --get /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf token provider fernet
Fernet プロバイダーをテストします。
[heat-admin@overcloud-controller-0 ~]$ exit [stack@director ~]$ source ~/overcloudrc [stack@director ~]$ openstack token issue
------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Field | Value |------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | expires | 2016-09-20 05:26:17+00:00 | | id | gAAAAABX4LppE8vaiFZ992eah2i3edpO1aDFxlKZq6a_RJzxUx56QVKORrmW0-oZK3-Xuu2wcnpYq_eek2SGLz250eLpZOzxKBR0GsoMfxJU8mEFF8NzfLNcbuS-iz7SV-N1re3XEywSDG90JcgwjQfXW-8jtCm-n3LL5IaZexAYIw059T_-cd8 | | project_id | 26156621d0d54fc39bf3adb98e63b63d | | user_id | 397daf32cadd490a8f3ac23a626ac06c |------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+結果には長い Fernet トークンが含まれます。
1.2. Fernet 鍵のローテーションサイクル
Fernet 鍵のローテーションサイクルの長さを決定する際には、組織のセキュリティー体制に従います。組織にガイダンスがない場合は、セキュリティー上の理由から、毎月のローテーションサイクルが推奨されます。
Fernet は、/var/lib/config-data/puppet-generated/keystone/etc/keystone/fernet-keys
に保存されている 3 種類のキーを使用します。最も数値の高いディレクトリーには、新しいトークンを生成し、既存のトークンを復号するプライマリーキーが含まれます。
Fernet キーのローテーションでは、以下のプロセスを使用します。プライマリーキーはセカンダリーキーになります。<system> は新しいプライマリーキーを発行します。送信プライマリーキーは無効になりました。セカンダリーキーを使用して、以前のプライマリーキーに関連付けられたトークンを復号できますが、新しいトークンを発行することはできません。
1.3. Workflow サービスの使用による Fernet キーのローテーション
デフォルトでは、director はオーバークラウドの Fernet キーを管理します。この設定は、ManageKeystoneFernetKeys
を使用して環境ファイルで管理されます。そのため、Fernet キーは KeystoneFernetKeys
セクションに Workflow サービス (mistral) に保存されます。この方法では、Fernet キーを Workflow サービスでローテションでき、キーがスタックの更新後に永続されます。
手順
既存の Fernet キーを確認します。
Fernet キーの場所を特定します。heat-admin ユーザーとしてコントローラーノードにログインし、
crudini
コマンドを使用して Fernet キーをクエリーします。[stack@<undercloud_host> ~]$ ssh heat-admin@overcloud-controller-o [heat-admin@overcloud-controller-0 ~]$ sudo crudini --get /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf fernet_tokens key_repository /etc/keystone/fernet-keys
注記/etc/keystone/
ディレクトリーは、コンテナーのファイルシステムのパスを参照します。現在の Fernet キーディレクトリーを検査します。
[heat-admin@overcloud-controller-0 ~]$ sudo ls /var/lib/config-data/puppet-generated/keystone/etc/keystone/fernet-keys 0 1 2
-
0
: ステージドキーが含まれます。これは次のプライマリーキーになり、常に0
になります。 -
1
- セカンダリーキーが含まれます。 2
- プライマリーキーが含まれます。この数は、キーのローテーションが行われるたびに増えます。最大の数字が、常にプライマリーキーとして機能します。注記-
キーの最大数は
max_active_keys
プロパティーで設定されます。デフォルトは 5 つのキーです。 - 鍵は、すべてのコントローラーノードに伝播します。
-
キーの最大数は
-
workflow
コマンドを使用して Fernet キーをローテーションします。[stack@director ~]$ source ~/stackrc [stack@director ~]$ openstack workflow execution create tripleo.fernet_keys.v1.rotate_fernet_keys {"container": "overcloud"}
-------------------
-------------------------------------------+ | Field | Value |-------------------
-------------------------------------------+ | ID | 58c9c664-b966-4f82-b368-af5ed8de5b47 | | Workflow ID | 78f0990a-3d34-4bf2-a127-10c149bb275c | | Workflow name | tripleo.fernet_keys.v1.rotate_fernet_keys | | Description | | | Task Execution ID | <none> | | State | RUNNING | | State info | None | | Created at | 2017-12-20 11:13:50 | | Updated at | 2017-12-20 11:13:50 |-------------------
-------------------------------------------+
検証
ID を取得し、ワークフローが成功したことを確認します。
[stack@director ~]$ openstack workflow execution show 58c9c664-b966-4f82-b368-af5ed8de5b47
-------------------
-------------------------------------------+ | Field | Value |-------------------
-------------------------------------------+ | ID | 58c9c664-b966-4f82-b368-af5ed8de5b47 | | Workflow ID | 78f0990a-3d34-4bf2-a127-10c149bb275c | | Workflow name | tripleo.fernet_keys.v1.rotate_fernet_keys | | Description | | | Task Execution ID | <none> | | State | SUCCESS | | State info | None | | Created at | 2017-12-20 11:13:50 | | Updated at | 2017-12-20 11:15:00 |-------------------
-------------------------------------------+コントローラーノードで Fernet キーの数を確認し、前の結果と比較します。
[heat-admin@overcloud-controller-0 ~]$ sudo ls /var/lib/config-data/puppet-generated/keystone/etc/keystone/fernet-keys 0 1 2 3
-
0
: ステージキーが含まれ、常に番号が0
になるようにします。このキーは、次回のローテーション時にプライマリーキーになります。 -
1 および 2
- セカンダリーキーを取得します。 3
- プライマリーキーが含まれます。この数は、キーのローテーションが行われるたびに増えます。最大の数字が、常にプライマリーキーとして機能します。注記-
キーの最大数は
max_active_keys
プロパティーで設定されます。デフォルトは 5 つのキーです。 - 鍵は、すべてのコントローラーノードに伝播します。
-
キーの最大数は
-