オーバークラウドへの Fernet のデプロイ


Red Hat OpenStack Platform 13

Red Hat OpenStack Platform director オーバークラウドへの Fernet のデプロイ

概要

Red Hat OpenStack Platform director オーバークラウドに Fernet をデプロイします。

第1章 オーバークラウドでの Fernet トークンの使用

Fernet は、uuid に代わるデフォルトのトークンプロバイダーです。本ガイドでは、Fernet デプロイメントを確認する方法と、Fernet キーをローテーションする方法を説明します。

1.1. Fernet デプロイメントの確認

この手順では、設定を確認し、Fernet トークンが正常に機能していることを確認します。

  1. コントローラーノードの 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  |
    +--------------------------------------+-------------------------+--------+---------------------+
    Copy to Clipboard Toggle word wrap
  2. コントローラーに対して SSH を実行します。

    [heat-admin@overcloud-controller-0 ~]$ ssh heat-admin@192.0.2.16
    Copy to Clipboard Toggle word wrap
  3. トークンドライバーおよびプロバイダー設定の値を取得します。

    [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
    Copy to Clipboard Toggle word wrap
  4. 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 |
    +------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    Copy to Clipboard Toggle word wrap

    結果には長い Fernet トークンが含まれている必要があります。

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 でローテーションでき、スタックの更新後も維持されます。

  1. 既存の Fernet キーを確認します。

    1. 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
      Copy to Clipboard Toggle word wrap
      注記

      /etc/keystone/ ディレクトリーは、コンテナーのファイルシステムのパスを参照します。

    2. 現在の Fernet キーディレクトリーを確認します。

      [heat-admin@overcloud-controller-0 ~]$ sudo ls /var/lib/config-data/puppet-generated/keystone/etc/keystone/fernet-keys
      0  1  2
      Copy to Clipboard Toggle word wrap
      • 0 - ステージングされた キー(次のプライマリーキーになる)が含まれ、番号は常に 0 になります。
      • 1 - セカンダリー キーが含まれます。
      • 2 - プライマリー キー が含まれます。この数はキーがローテーションされるたびに増分し、最大数は常にプライマリーキーとして機能します。

        注記
        • キーの最大数は、デフォルトで 5 つのキーである max_active_keys プロパティーによって決定されます。
        • キーはすべてのコントローラーで伝播されます。
  2. 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                       |
    +-------------------+-------------------------------------------+
    Copy to Clipboard Toggle word wrap
  3. 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                       |
    +-------------------+-------------------------------------------+
    Copy to Clipboard Toggle word wrap
  4. コントローラーノードで Fernet キーの数を確認し、前の結果と比較します。

    [heat-admin@overcloud-controller-0 ~]$ sudo ls /var/lib/config-data/puppet-generated/keystone/etc/keystone/fernet-keys
    0  1  2  3
    Copy to Clipboard Toggle word wrap
    • 0: ステージングされ キーが含まれ、番号は常に 0 になります。このキーは、次のローテーション中にプライマリーキーにプロモートされます。
    • 1 & 2 - セカンダリー キーが含まれます。
    • 3 - プライマリー キーが含まれます。この数はキーがローテーションされるたびに増分し、最大数は常にプライマリーキーとして機能します。

      注記
      • キーの最大数は、デフォルトで 5 つのキーである max_active_keys プロパティーによって決定されます。
      • キーはすべてのコントローラーで伝播されます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat