Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
1.2. Fernet 鍵のローテーション
ローテーションプロセスは比較的簡単に実行できるため、ローテーションサイクルの長さを考慮すると、Red Hat はセキュリティー側で警告することを推奨します。セキュリティー体制からのガイダンスがない場合は、毎月のローテーションサイクルが適切な開始地点となります。
Fernet は、/var/lib/config-data/puppet-generated/keystone/etc/keystone/fernet-keys
に保存されている 3 種類のキーを使用します。最も番号の大きいディレクトリーには、新しいトークンを生成し、既存のトークンを復号化するために使用されるプライマリーキーが含まれます。
キーローテーションプロセスで、プライマリーキーはセカンダリーキーのステータスに委任され、新しいプライマリーキーが発行されるため、危険にさらされたプライマリーキーの値が減少します。セカンダリーキーは、以前のプライマリーキーで作成されたトークンを復号化するためにのみ使用でき、新しいキーを発行できません。
Fernet キーのローテーションを実行する前に、すべてのオーバークラウドノードがオンラインであることを確認します。そうしないと、deploy_ssh_key
タスクでプロセスが失敗します。
1.2.1. Mistral を使用した Fernet 鍵のローテーション
デフォルトでは、director はオーバークラウドの Fernet キーを管理するように設定されています。この設定は、ManageKeystoneFernetKeys
を使用して環境ファイルで管理されます。その結果、Fernet キーは Mistral ( KeystoneFernetKeys
下)に保存されます。この方法では、Fernet キーを Mistral でローテーションでき、スタックの更新後も維持されます。
既存の Fernet キーを確認します。
Fernet キーの場所を特定します。
# SSH back to the controller [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
- プライマリー キー が含まれます。この数はキーがローテーションされるたびに増分し、最大数は常にプライマリーキーとして機能します。注記- キーの最大数は、デフォルトで 5 つのキーである max_active_keys プロパティーによって決定されます。
- キーはすべてのコントローラーで伝播されます。
-
Mistral ワークフローを使用して 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
- プライマリー キーが含まれます。この数はキーがローテーションされるたびに増分し、最大数は常にプライマリーキーとして機能します。注記- キーの最大数は、デフォルトで 5 つのキーである max_active_keys プロパティーによって決定されます。
- キーはすべてのコントローラーで伝播されます。
-