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

Red Hat OpenStack Platform 16.2

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

OpenStack Documentation Team

概要

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

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

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 が作成され、フィードバックの進行状況を追跡できます。

  1. Jira にログインしていることを確認してください。Jira アカウントをお持ちでない場合は、アカウントを作成してフィードバックを送信してください。
  2. Create Issue をクリックして、Create Issue ページを開きます。
  3. Summary フィールドと Description フィールドに入力します。Description フィールドに、ドキュメントの URL、章またはセクション番号、および問題の詳しい説明を入力します。フォーム内の他のフィールドは変更しないでください。
  4. Create をクリックします。

第1章 オーバークラウドでの暗号化に Fernet キーの使用

Fernet はデフォルトのトークンプロバイダーであり、uuid に置き換わるものです。Fernet デプロイメントを確認して、Fernet キーをローテーションできます。Fernet は、/var/lib/config-data/puppet-generated/keystone/etc/keystone/fernet-keys に保存されている 3 種類のキーを使用します。最も数値の高いディレクトリーには、新しいトークンを生成し、既存のトークンを復号するプライマリーキーが含まれます。

Fernet キーのローテーションでは、以下のプロセスを使用します。

  1. プライマリーキーはセカンダリーキーになります。
  2. <system> は新しいプライマリーキーを発行します。送信プライマリーキーは無効になりました。セカンダリーキーを使用して、以前のプライマリーキーに関連付けられたトークンを復号できますが、新しいトークンを発行することはできません。

Fernet 鍵のローテーションサイクルの長さを決定する際には、組織のセキュリティー体制に従います。組織にガイダンスがない場合は、セキュリティー上の理由から、毎月のローテーションサイクルが推奨されます。

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

Fernet トークンが適切に機能していることを確認するには、コントローラーノードの IP アドレスを取得し、コントローラーノードに対して SSH を実行し、トークンドライバーおよびプロバイダーの設定を確認します。

手順

  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  |
    --------------------------------------------------------------------------------------------+
  2. コントローラーノードに対して SSH を実行します。

    [heat-admin@overcloud-controller-0 ~]$ ssh heat-admin@192.0.2.16
  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
  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 |
    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

    結果には長い Fernet トークンが含まれます。

1.2. Workflow サービスの使用による Fernet キーのローテーション

スタックの更新後も Fernet キーが維持されるようにするには、Workflow サービス (mistral) でキーをローテーションします。デフォルトでは、director は ManageKeystoneFernetKeys パラメーターを使用して、環境ファイルのオーバークラウドの Fernet キーを管理します。Fernet キーは、KeystoneFernetKeys セクションのワークフローサービスに保存されます。

手順

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

    1. 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/ ディレクトリーは、コンテナーのファイルシステムのパスを参照します。

    2. 現在の 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 つのキーです。
        • 鍵は、すべてのコントローラーノードに伝播します。
  2. 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                       |
    --------------------------------------------------------------+

検証

  1. 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                       |
    --------------------------------------------------------------+
  2. コントローラーノードで 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 つのキーです。
      • 鍵は、すべてのコントローラーノードに伝播します。

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.