オーバークラウドへの Fernet のデプロイ
Red Hat OpenStack Platform オーバークラウドへの Fernet のデプロイ
OpenStack Documentation Team
rhos-docs@redhat.com
概要
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。
Jira でドキュメントのフィードバックを提供する
ドキュメントに関するフィードバックを提供するには、Create Issue フォームを使用します。Red Hat OpenStack Platform Jira プロジェクトで Jira Issue が作成され、フィードバックの進行状況を追跡できます。
- Jira にログインしていることを確認してください。Jira アカウントをお持ちでない場合は、アカウントを作成してフィードバックを送信してください。
- Create Issue をクリックして、Create Issue ページを開きます。
- Summary フィールドと Description フィールドに入力します。Description フィールドに、ドキュメントの URL、章またはセクション番号、および問題の詳しい説明を入力します。フォーム内の他のフィールドは変更しないでください。
- Create をクリックします。
第1章 オーバークラウドでの暗号化に Fernet キーの使用
Fernet はデフォルトのトークンプロバイダーであり、uuid
に置き換わるものです。Fernet デプロイメントを確認して、Fernet キーをローテーションできます。Fernet は、/var/lib/config-data/puppet-generated/keystone/etc/keystone/fernet-keys
に保存されている 3 種類のキーを使用します。最も数値の高いディレクトリーには、新しいトークンを生成し、既存のトークンを復号するプライマリーキーが含まれます。
Fernet キーのローテーションでは、以下のプロセスを使用します。
- プライマリーキーはセカンダリーキーになります。
- <system> は新しいプライマリーキーを発行します。送信プライマリーキーは無効になりました。セカンダリーキーを使用して、以前のプライマリーキーに関連付けられたトークンを復号できますが、新しいトークンを発行することはできません。
Fernet 鍵のローテーションサイクルの長さを決定する際には、組織のセキュリティー体制に従います。組織にガイダンスがない場合は、セキュリティー上の理由から、毎月のローテーションサイクルが推奨されます。
1.1. Fernet デプロイメントの確認
Fernet トークンが適切に機能していることを確認するには、コントローラーノードの IP アドレスを取得し、コントローラーノードに対して SSH を実行し、トークンドライバーおよびプロバイダーの設定を確認します。
手順
コントローラーノードの 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. Workflow サービスの使用による Fernet キーのローテーション
スタックの更新後も Fernet キーが維持されるようにするには、Workflow サービス (mistral) でキーをローテーションします。デフォルトでは、director は ManageKeystoneFernetKeys
パラメーターを使用して、環境ファイルのオーバークラウドの Fernet キーを管理します。Fernet キーは、KeystoneFernetKeys
セクションのワークフローサービスに保存されます。
手順
既存の 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 つのキーです。 - 鍵は、すべてのコントローラーノードに伝播します。
-
キーの最大数は
-