Pike バージョンのリリースノート

12.0.3-9

アップグレード時の注意

  • [bug 1872737] Added a default TTL of 15 minutes for signed EC2 credential requests, where previously an EC2 signed token request was valid indefinitely. This change in behavior is needed to protect against replay attacks.

致命的な問題

  • [bug 1872733] Fixed a critical security issue in which an authenticated user could escalate their privileges by altering a valid EC2 credential.

  • [bug 1872735] Fixed a security issue in which a trustee or an application credential user could create an EC2 credential or an application credential that would permit them to get a token that elevated their role assignments beyond the subset delegated to them in the trust or application credential. A new attribute app_cred_id is now automatically added to the access blob of an EC2 credential and the role list in the trust or application credential is respected.

セキュリティー上の問題

  • [bug 1872733] Fixed a critical security issue in which an authenticated user could escalate their privileges by altering a valid EC2 credential.

  • [bug 1872735] Fixed a security issue in which a trustee or an application credential user could create an EC2 credential or an application credential that would permit them to get a token that elevated their role assignments beyond the subset delegated to them in the trust or application credential. A new attribute app_cred_id is now automatically added to the access blob of an EC2 credential and the role list in the trust or application credential is respected.

  • [bug 1872737] Fixed an incorrect EC2 token validation implementation in which the timestamp of the signed request was ignored, which made EC2 and S3 token requests vulnerable to replay attacks. The default TTL is 15 minutes but is configurable.

  • [bug 1872755] Added validation to the EC2 credentials update API to ensure the metadata labels 'trust_id' and 'app_cred_id' are not altered by the user. These labels are used by keystone to determine the scope allowed by the credential, and altering these automatic labels could enable an EC2 credential holder to elevate their access beyond what is permitted by the application credential or trust that was used to create the EC2 credential.

Bug Fixes

  • [bug 1872733] Fixed a critical security issue in which an authenticated user could escalate their privileges by altering a valid EC2 credential.

  • [bug 1872735] Fixed a security issue in which a trustee or an application credential user could create an EC2 credential or an application credential that would permit them to get a token that elevated their role assignments beyond the subset delegated to them in the trust or application credential. A new attribute app_cred_id is now automatically added to the access blob of an EC2 credential and the role list in the trust or application credential is respected.

  • [bug 1872737] Fixed an incorrect EC2 token validation implementation in which the timestamp of the signed request was ignored, which made EC2 and S3 token requests vulnerable to replay attacks. The default TTL is 15 minutes but is configurable.

  • [bug 1872755] Added validation to the EC2 credentials update API to ensure the metadata labels 'trust_id' and 'app_cred_id' are not altered by the user. These labels are used by keystone to determine the scope allowed by the credential, and altering these automatic labels could enable an EC2 credential holder to elevate their access beyond what is permitted by the application credential or trust that was used to create the EC2 credential.

12.0.3

Bug Fixes

  • [bug 1801873] This fixes an issue where an LDAP-backed domain could not be deleted due to the existence of shadow users in the SQL database.

12.0.2

Bug Fixes

12.0.1

Bug Fixes

  • [bug 1718747] ドメインを含まれるユーザーごと削除するときにサーバーエラーが発生するというリグレッションが修正されています。このバグ修正は、ドメインの名前空間内に置かれているユーザーを削除するという以前の動作を復元します。これは、SQL 認証バックエンドを使用する場合にのみ適用されます。

  • [bug 1727726] すべてのユーザーとグループには名前が必要です。この修正以前は、 Keystone は名前に空白だけがある LDAP ユーザーとグループを許可していました。Keystone は、使用するよう設定されたエンティティ名の LDAP 属性が、値として空白のみを持つユーザーおよびグループを無視するようになりました。

  • [bug 1740951] oslo.policy のサンプル生成スクリプトを Keystone で使用できるようにする新しい方法が追加されました。 oslopolicy-policy-generator は、上書きとコードに登録されているデフォルトを含むポリシーファイルを生成します。

  • [bug 1763824] JSON Schema implementation nullable in keystone.common.validation now properly adds None to the enum if the enum exists.

その他の注意点

  • [bug 1718747] ユーザーを含むドメインが削除されないようにする認証 SQL バックエンドのリグレッションを解決する一環として、認証バックエンドが SQL の場合にのみユーザーが削除されるように通知コールバックが変更されました。読み取り専用ではないカスタム認証バックエンドを使用している場合、そのドライバーで is_sql プロパティが true と評価されない限り、Keystone でドメインを削除してもバックエンドのユーザーは削除されません。

12.0.0

新機能

  • [`blueprint policy-in-code] Keystone は、コードでデフォルトポリシーを登録する機能をサポートしました。 これにより、重複したデフォルトポリシーをポリシーファイルから削除することで、ポリシーファイルのメンテナンスが容易になります。Pike 以後のデプロイにあるポリシーファイル内に存在する唯一のポリシーは、ポリシーを上書きされる必要があります。 デフォルトルールのデフォルト値はもはや存在しないことに注意してください。 このルールは、さらに指定されたルールが見つからない場合にのみチェックされ、コードによるのポリシーでは、すべてのルールがポリシーファイル内になくてもコード内に見つかるようにする必要があります。デフォルト値からサンプルポリシーファイルを生成したり、既存のポリシーファイルからデフォルトポリシーを削除したり、ポリシーの一般的な使い方を理解するには、oslo.policy で提供されている usage documentation を参照してください。

  • keystone-manage db_sync にオプション --check を追加すると、ユーザーはデータベース内のローリングアップグレードの状態を確認することができます。

    • [bug 1543048] [bug 1668503] Keystone は複数の形式のパスワードハッシュをサポートするようになりました。特に bcrypt 、 scrypt 、および pbkdf2_sha512 。オプションは設定ファイルの [identity] セクションにあります。 アルゴリズムを設定するには [identity] password_hash_algorithm を使います。ラウンド数(scrypt の場合、時間複雑度とメモリ使用量)を設定するには、 [identity] password_hash_rounds を使用します。 scryptpbkdf2_sha512 にはさらにチューニングオプションがあります。 Keystone はデフォルトのハッシュアルゴリズムとして bcrypt を使用するようになっています。 すべてのパスワードは古い sha512_crypt ハッシュで引き続き機能しますが、新しいパスワードハッシュは bcrypt になります。

アップグレード時の注意

  • [`blueprint policy-in-code] Keystone は、コードでデフォルトポリシーを登録する機能をサポートしました。 これにより、重複したデフォルトポリシーをポリシーファイルから削除することで、ポリシーファイルのメンテナンスが容易になります。Pike 以後のデプロイにあるポリシーファイル内に存在する唯一のポリシーは、ポリシーを上書きされる必要があります。 デフォルトルールのデフォルト値はもはや存在しないことに注意してください。 このルールは、さらに指定されたルールが見つからない場合にのみチェックされ、コードによるのポリシーでは、すべてのルールがポリシーファイル内になくてもコード内に見つかるようにする必要があります。デフォルト値からサンプルポリシーファイルを生成したり、既存のポリシーファイルからデフォルトポリシーを削除したり、ポリシーの一般的な使い方を理解するには、oslo.policy で提供されている usage documentation を参照してください。

  • 認証バックエンドドライバーインターフェースが変更されました。与えられたプロジェクト ID のユーザーのデフォルトプロジェクト ID の設定を解除するための新しいメソッド unset_default_project_id(project_id) が追加されました。 カスタムバックエンドの実装では、このメソッドを実装する必要があります。

  • [bug 1702211] MySQL のいくつかのバージョン/デプロイメントでは、パスワードの created_at フィールドは 1 秒未満の精度を失います。 これは、 1 秒以内にパスワードが変更されたときにパスワードが乱れる可能性があることを意味します(特にテストでは一般的です)。この変更は、パスワードの created_atexpires_at を DATETIME データ型ではなく整数として保存します。

  • [bug 1705485] change_password 保護ポリシーは、ファイルベースのポリシーから削除することができます。このポリシーは、ロジックがコードに移行されたため、セルフサービスパスワード変更 API を保護するために使用されなくなりました。管理パスワードのリセット機能は update_user API のポリシーで保護されています。

    • ローリングアップグレードを実行する場合、 [identity] rolling_upgrade_password_hash_compat を ` True` に設定してください。 これにより、 Pike リリース以前の Keystone が引き続きパスワードを検証できるように、 Keystone がパスワードをハッシュし続けるように指示されます。すべてのアップグレードが完了したら、このオプションが False に設定されていることを確認してください。

  • SQL バックエンドが使用されている場合は、リソースバックエンドを SQL 以外のものに構成することはできません。リソースのバックエンドは、現在、ドメイン/プロジェクトへの外部キーの使用を可能にする SQL でなければなりません。これにより、プロジェクトの関係性の管理などがより簡単になります。 非 SQL リソースのバックエンドを構成できないことは、少なくとも Ocata 以来、 Keystone にありました。 これは、いくつかの複雑さを排除し、いくつかのとても酷いバックポート SQL マイグレーションの必要性を防止し、より良いモデルを支持します。 リソースは非常にリレーショナルであり、 SQL ベースでなければなりません。

廃止予定の機能

    • [DEFAULT] crypt_strength は、 [identity] password_hash_rounds のために 非推奨となりました。 [identity] rolling_upgrade_password_hash_compat が ` True` に設定されているとき、 [DEFAULT] crypt_strength は引き続き使用されることに注意してください。

    • UUID トークンプロバイダー [token] provider=uuid は、 Fernet トークン [token] provider=fernet のために非推奨になりました。 Fernet トークンがデフォルトになり、 UUID トークンは R リリースで削除予定です。また、トークンバインドのサポートは、 fernet のために実装されたものではないので、非推奨になりました。

    • トークン永続ドライバー/コード(SQL)は、 UUID トークンプロバイダーのみが使用するため、非推奨になりました。

  • [blueprint deprecated-as-of-pike] The v2.0 auth and ec2 APIs were already maked as deprecated in the Mitaka release, although no removal release had yet been identified. These APIs will now be removed in the 'T' release. The v3 APIs should be used instead.

セキュリティー上の問題

  • [bug 1703369] 以前のリリースのデフォルトの policy.json ファイルには、identity:get_identity_provider ルールにタイプミスがありました。そのルールのデフォルト値はデフォルトルールのデフォルト値(adminに制限されています)と同じで、このタイプミスが容易には判明しませんでした。このルールをカスタマイズしたら、設定を確認して、そのタイプミスをコピーしていないことを確認する必要があります。特にポリシーのコードへの移行と伴に、 Pike ではデフォルトルールが削除されていることに注意してください。

    • sha512_crypt の使用は Keystone のようなアプリケーションでのパスワードハッシングには不十分と考えられます。 ハッシュが公開されている場合、パスワードクラッキングユーティリティーからの保護を確実にするために、 bcrypt または scrypt の使用を推奨します。これは、最新のハードウェア(CPU、GPU、ASIC、FPGAなど)を焦点にしてハッシュを計算するための時間複雑性の要件によるものです。Keystone がデフォルトを bcrypt に移行し、 sha512_crypt では新しいパスワード(およびパスワード変更)をハッシュしなくなりました。 Pike へのアップグレード後にパスワードを変更することをお勧めします。パスワードハッシュ公開のリスクは限られていますが、ハッシュをクラックさせないようにするために、アップグレード後にパスワードを変更することをお勧めします。 パスワードを変更すると、より安全なハッシュ(デフォルトでは bcrypt )が使用され、パスワードが DB に格納されます。

Bug Fixes

  • [bug 1523369] プロジェクトを削除すると、ユーザーのデフォルトプロジェクトからそのプロジェクトが削除されます。キャッシングが有効な場合、ユーザーのキャッシュエントリーが期限切れになるまで変更内容が表示されないことがあります。

  • [bug 1615014] 移行指示が厳密に強制されるようになりました。確実なアップグレードプロセスは、公式に文書化されている順序で実行され、 expand で開始、次に migrate となり、 contract での終了をサポートしています。

  • [bug 1689616] 膨大なデータセットに対してトークンフラッシュを実行するときの、重要な改善が行われました。

  • [bug 1670382] LDAP 設定のgroup_members_are_ids がホワイトリストされたオプションに追加され、ドメイン設定 API と keystone-manage domain_config_upload で使用できるようになりました。

  • [bug 1676497] bindep は、 libssl-dev の代わりに rpm ディストリビューションの openssl-devel バイナリー依存関係を正しく報告するようになりました。

  • [bug 1684994] 無効なユーザー名、またはパスワードを使用して LDAP バックエンドに接続しようとしたときにスローされるldap.INVALID_CREDENTIALS 例外がキャッチされ、デフォルトの 500 エラーメッセージではなくユーザーにメッセージが返されます。

  • [bug 1687593] OAUTH1 要求トークンを作成するときの要求を行うために使用される URL が、要求トークンを検証する URL でもあることを確実にしました。

  • [bug 1696574] Keystone 内のすべての GET API は、まだ実装されていない場合は HEAD をサポートします。すべての新しい HEAD API は、GET のものと同じレスポンスコードとヘッダーを持っています。 これは、クライアント側の処理、特にキャッシングに役立ちます。

  • [bug 1700852] Keystone は、パフォーマンスを向上させるために、 GET|HEAD /v3/users/{user_id}/projects API のキャッシュをサポートしました。

  • [bug 1701324] トークン本体は、認証応答に固有のロールのみを含むようになりました。

  • [bug 1704205] すべてのユーザーとグループには名前が必要です。この修正に先立って、 Keystone は LDAP ユーザーとグループに対してこれを適切に実施していませんでした。 Keystone は、そのエンティティの名前に使用するように設定されている LDAP 属性の値を持たないユーザーおよびグループを無視します。

  • [bug 1705485] 前回の変更<https://review.openstack.org/#/c/404022/>`_ ではセルフサービスパスワード API からポリシーが削除されました。 ユーザーはパスワードを変更するために認証する必要があるため、ポリシーによる保護は必ずしも意味をなさないものです。この変更により、デフォルトのポリシーはコードから削除されます。サービスで必要とされなくなったためです。ユーザーの管理パスワードのリセットは、ポリシーによって別のエンドポイントを介して保護されます。

  • [bug 1674415] ロケールが設定されている 認証 API から、どんなエラーメッセージも発生しないという、 Keystone エラーメッセージの翻訳に関する問題を修正しました。

  • [bug 1688188] IdP を作成するときに、そのためのドメインが生成され、データベースに IdP を効果的に作成して競合が発生した場合、自動生成ドメインがクリーンアップされるようになりました。

  • keystone-manage db_sync --check を使用してアップグレード中にデータベースの状態をチェックする実装が修正されました。 これにより、ユーザーおよび自動化は、ロギングおよびコマンドステータスコードに基づいて、ローリングアップグレードの次のステップを判断できます。

その他の注意点

  • [blueprint removed-as-of-pike] すべてのキーバリューストアのコード、オプション、およびドキュメントは、 Pike リリースで削除されます。削除されたコードには、KVS コードの keystone.common.kvs 設定オプション、単体テスト、KVS トークン永続性ドライバーの keystone.token.persistence.backends.kvs が含まれています。すべての関連文書が削除されました。

  • [blueprint removed-as-of-pike] admin_token_auth フィルタはすべてのサンプルパイプラインから削除されました。具体的には、以下のセクションが keystone-paste.ini から削除されました:

    [filter:admin_token_auth]
    use = egg:keystone#admin_token_auth
    

    ADMIN_TOKEN の機能は残っていますが、主な認証ミドルウェア(keystone.middleware.auth.AuthContextMiddleware)に組み込まれています。

  • カタログバックエンド endpoint_filter.sql は削除されました。これは sql バックエンドと統合されているので、endpoint_filter.sql カタログバックエンドを `` sql`` バックエンドに置き換えます。

  • [security_compliance] password_expires_ignore_user_ids オプションは削除されました。パスワードの有効期限を無視する必要のあるユーザーは、それぞれユーザー更新呼び出しで、ユーザーの options 属性(例えば、 user['options']['ignore_password_expiry'] = True)に "true" を設定する必要があります。

  • [blueprint removed-as-of-pike] keystone.common.ldap モジュールがコードツリーから削除されました。 Newton リリースで非推奨となり、同じ機能を持つ keystone.identity.backends.ldap.common の使用を推奨しています。

  • [blueprint removed-as-of-pike] しばしば謎めいた openssl コマンドを隠すことによって、開発者向けセットアップを補助するために、keystone-manage pki_setup が追加されていました。 Keystone はもはや PKI トークンをサポートしなくなり、 SSL を提供することができなくなったため、これはもう必要ありません。 これは Mitaka リリースで廃止されました。

  • [blueprint-as-of-pike] keystone 名前空間の外のドライバーの直接的なインポートを削除しました。例えば、認証ドライバーは keystone.identity 名前空間から、割り当てドライバーは keystone.assignment 名前空間からロードされます。 keystone 名前空間外のドライバーの読み込みは、Liberty リリースで非推奨になっていました。