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

13.0.4-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.

  • As a performance improvement, the base mapping driver's method get_domain_mapping_list now accepts an optional named argument entity_type that can be used to get the mappings for a given entity type only. As this new call signature is already used in the identity.core module, authors/maintainers of out-of-tree custom mapping drivers are expected to update their implementations of get_domain_mapping_list method accordingly.

致命的な問題

  • [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 1773967] Fixes an issue where users who had role assignments only via a group membership and not via direct assignment could create but not use application credentials. It is important to note that federated users who only have role assignments via a mapped group membership still cannot create application credentials.

  • [bug 1831918] Credentials now logs cadf audit messages.

  • [bug 1856881] keystone-manage bootstrap can be run in upgrade scenarios where pre-existing domain-specific roles exist named admin, member, and reader.

  • [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 1885753] Keystone's SQL identity backend now retries update user requests to safely handle stale data when two clients update a user at the same time.

13.0.3

Bug Fixes

  • [bug 1780503] The notification wrapper now sets the initiator's id to the given user id. This fixes an issue where identity.authentication event would result in the initiator id being a random default UUID, rather than the user's id when said user would authenticate against keystone.

  • [bug 1782922] Fixed the problem where Keystone indiscriminately return the first RDN as the user ID, regardless whether it matches the configured 'user_id_attribute' or not. This will break deployments where 'group_members_are_ids' are set to False and 'user_id_attribute' is not in the DN. This patch will perform a lookup by DN if the first RND does not match the configured 'user_id_attribute'.

  • [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.

  • [bug 1840291] Adds retries for delete_credential_for_user method to avoid DBDeadlocks when deleting large number of credentials concurrently.

  • [bug 1843609 <https://bugs.launchpad.net/keystone/+bug/1843609>] Fixed an issue where system-scoped tokens couldn't be used to list users and groups (e.g., GET /v3/users or GET /v3/groups) if keystone.conf [identity] domain_specific_drivers_enabled=True and the API would return an HTTP 401 Unauthorized. These APIs now recognize system-scoped tokens when using domain-specific drivers.

13.0.2

Bug Fixes

13.0.1

Bug Fixes

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

13.0.0

紹介

このリリースでは、アプリケーションや自動化ツールが Keystone で認証できる新しい手段、アプリケーション認証情報のサポートを追加しました。セキュリティリスクを発生する可能性がある、ユーザー名とパスワードをアプリケーションの設定ファイルに保存する方法ではなく、アプリケーションが事前に設定したスコープとロール割り当てを取得して認証できるように、アプリケーション認証情報を作成できます。これは、外部管理された認証情報を Keystone と共有して外部システムが妥協するリスクを冒すよりも、クラウド管理タスクを Keystone 固有のリソースに委譲できるので、LDAP や統合ユーザーにとって特に有用です。ユーザーは、ロール割り当てのサブセットをアプリケーション認証情報に委譲して、アプリケーションのアクセスを戦略的に必要最小限に制限できます。パスワードとは異なり、ユーザーは複数の有効なアプリケーション認証情報を持つことができ、これを使用するアプリケーションのダウンタイムを引き起こすことなく、これらをローテートできることを意味します。

新機能

  • [blueprint unified-limit] Keystone は、統一制限をサポートしました。``登録された制限``および``制限``と呼ばれる二つのリソースが追加され、関連する API のバッチもサポートされます。これらの API は、現在実験段階です。これは、それらが十分安定しておらず、下位互換性なしに変更される可能性があることを意味します。統一制限機能が使用可能になると、API は安定したものとしてマークされます。

  • [blueprint application-credentials] ユーザーは、事前に設定されたスコープとロール割り当てを持つトークンをアプリケーションに提供するための新しい Keystone リソース、アプリケーション認証情報を作成できるようになりました。アプリケーション認証情報で認証するには、アプリケーションは 'application_credential' 認証メソッドとともに通常のトークン API を使用します。

  • [blueprint system-scope] Keystone now supports the ability to assign roles to users and groups on the system. As a result, users and groups with system role assignment will be able to request system-scoped tokens. Additional logic has been added to keystone-manage bootstrap to ensure the administrator has a role on the project and system.

  • [blueprint project-tags] プロジェクトには tags という新しいプロパティがあります。これらのタグは、プロジェクトをフィルタリング/検索できるようにするための単純な文字列です。プロジェクトタグには、以下のプロパティがあります。

    • タグは、大文字小文字を区別します。

    • '/' と ',' は、タグでは使用できません。

    • 各プロジェクトは、タグを 100 個まで使えます。

    • 各タグは、255 文字まで使えます。

    プロジェクトタグ を参照してください。

    API ワーキンググループ によって設定されたガイドラインに従って、プロジェクトタグが実装されました。

  • token_formatter ユーザビリティクラスは、fernet 配下からデフォルトトークンディレクトリーに移動しました。これは、他のトークンプロバイダーとともにこの機能を再利用できるようにするためです。fernet ユーティリティを使用している構成では、影響を受ける可能性があり、それに対応して調整する必要があります。

アップグレード時の注意

  • trusts テーブルに、有効期限を日時オブジェクトの代わりに整数で表す expires_at_int 列が追加されました。これは、MySQL の幾つかのバージョンで、日付オブジェクトの格納方法に関連する丸め誤差を防止します。expires_at 列は残っていますが、Rocky バージョンで削除される予定です。

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

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

廃止予定の機能

  • policies API は非推奨となりました。Keystone はポリシー管理サービスではありません。

  • /v3/auth/projects/v3/auth/domains API のために、/OS-FEDERATION/projects/OS-FEDERATION/domains API は非推奨となりました。これらの API は、もともと Juno リリースサイクル中に非推奨となりましたが、oslo の versionutils を使用して非推奨には決してしませんでした。この廃止に関する詳細は、廃止を提案した パッチ にあります。

  • [bug 1728690] member_role_idmember_role_name 設定オプションは、Keystone v2 のロール割り当てのためのデフォルトのメンバーロールを作成するために使用されましたが、v2 API の削除により、このデフォルトロールを作成する必要はありません。このオプションは非推奨となり、S リリースで削除予定です。想定しているロール名と ID に依存している場合、ユーザーはツールを更新する必要があります。

  • trust 機能の enabled 設定オプションは、非推奨となり、次のリリースで削除される予定です。信頼は常に有効になる予定です。

Bug Fixes

  • [bug 1749268] The keystone-manage bootstrap command now ensures that an administrator has a system role assignment. This prevents the ability for operators to lock themselves out of system-level APIs.

  • [bug 1291157] トークンの検証中に、認証プロバイダー情報が検証されるようになりました。認証プロバイダーが Keystone サービスプロバイダーから削除された場合、その認証プロバイダーに関連付けられたトークンは無効とみなされます。

  • [bug 1524030] ドメインまたはプロジェクトが無効になっている場合、破棄レコードは revocation_event テーブルに書き込まれなくなりました。これらのレコードは、トークンの検証プロセスのみで使われていました。破棄イベントのために、トークンが検証されるときに、プロジェクトまたはドメインはオンラインで検証されます。これにより、トークンの検証中にセキュリティを維持しながら、データベースの膨張を少なくできます。

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

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

  • [bug 1727099] ユーザーがパスワードを変更しようとするとき、新しいパスワードは、新しいパスワードを含んで、設定オプション unique_last_password_count 個以内で一意でなければなりません。 しかし、ヘルプとエラーメッセージは明確は説明していませんでした。メッセージは更新され、より明確になりました。

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

  • [bug 1733754] Keystone は認証リクエストの OS-TRUST:trust 鍵が辞書型かを検証しませんでした。これにより、実際には 400 Bad Request が発生すべき場合に、500 Internal Server Error が発生します。

  • [bug 1734244] roles パラメーターに余分な属性を含んで信頼を作成するとき、500 ではなく 400 のステータスコードを返します。

  • [bug 1736875] roles パラメータに非 id 属性を持つリクエストトークンを認可するとき、スキーマチェックを追加して 500 ではなく 400 のステータスコードを返します。

  • [bug 1738895] name フィルタで統合ユーザーをリストアップできないバグを修正しました。ユーザーを name でリストするとき、Keystone はローカルユーザーバックエンドとシャドウユーザーバックエンドの両方に問い合わせるようになりました。

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

  • [bug 1747694] trust API リファレンスは pageper_page クエリパラメータのサポートを定義していますが、実際の trust API はサポートしていませんでした。API リファレンスを実装通りに更新しました。

  • [bug 1748970] A bug was introduced in Queens that resulted in system role assignments being returned when querying the role assignments API for a specific role. The issue is fixed and the list of roles returned from GET /v3/role_assignments?role.id={role_id} respects system role assignments.

  • [bug 1749264] A user's system role assignment will be removed when the user is deleted.

  • [bug 1749267] A group's system role assignments are removed when the group is deleted.

  • [bug 1750415] Fixes an implementation fault in application credentials where the application credential reference was not populated in the token data, causing problems with the token validation when caching was disabled.

その他の注意点

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

  • Keystone は、ロール名の提供によるリクエストトークンの認可をサポートしました。roles パラメーターの role は、ロール名かロール ID のいずれかを含めることができますが、両方を含めることはできません。

  • [bug 1728690] keystone-manage bootstrap コマンドは admin ロールを作成するだけで、もはやデフォルトのメンバーロールを作成しません。`` bootstrap`` を実行した後、openstack role create コマンドを使って必要なロールを追加してください。

  • rolling_upgrade_password_hash_compat 設定オプションを削除しました。これは、Ocata リリースから Pike リリースへのローリングアップグレードのみで使用されていました。