認証システムは、OpenStack Keystone API と SCIM API 拡張に基づいています。このモジュールはログイン機能を提供するために使用され、インテグレータがサービス、サブサービス、ユーザおよびロールを管理できるようにします。

また、プラットフォームには、コンポーネントを使用するすべてのユーザが実行するアクションを検証し、柔軟な役割構造を提供するための制御アクセスポリシ・サーバが含まれています。

IDシステム : Keystone & SCIM APIs

Keystone SCIMは、SCIM v1.1 標準を使用してユーザ、グループおよびロールの管理を可能にするOpenStack Keystone 拡張です。Keystone の拡張機能として、拡張機能の Keystone の推奨事項に従って、既存のKeystone インストールの上にインストールするように設計されています。SCIM 標準は、ユーザとグループを表すためのスキーマを定義し、CRUD 操作に必要なすべての REST API を定義することによって、クラウド内のユーザー管理を簡素化するために作成されました。

SCIM User および Group API は、Keystone ユーザおよび Group API の直接のトランスレーションであり、まったく同じ名前で同じセキュリティポリシを共有します。一方、SCIMの役割は Keystone の役割とは少し異なります。現在、SCIMの役割はドメインを認識しています。拡張実装では、Keystone Roles API との下位互換性を維持するため、基礎となるデータベースを変更しません。

SCIM Roles は Keystone Roles の上に実装され、ドメインIDの前にロール名が付けられます。これはハッキングであり、関係の完全性は維持されていないと主張するかもしれません。それは当てはまりますが、このようにデータベース・スキーマは変更されないため、Keystone Roles APIはすぐに SCIM Roles と対話できます。

アクセス制御 : Keypass

Keypass は、プラットフォームのロールとアクセス許可を管理するための柔軟なツールです。PAP (Policy Administration Point) と PDP (Policy Detention Point) 機能を備えたマルチテナント XACML サーバです。テナントは、HTTP ヘッダによって定義されます。PDP エンドポイントは、XACML 要求に含まれるサブジェクトのポリシーを評価します。これは、Keypass がアプリケーションの使い方を簡素化するために取った設計上の決定です。

開発者として、あなたはサブジェクトが何であるのか、そしてなぜそれらの周りにポリシーがグループ化されているのか疑問に思うかもしれません。簡単にするために、サブジェクトは XACML リクエストの subject-id と同じです。XACML リクエストを作成する際にPEPでこれらの ID (サブジェクト、ロール、グループ)を使用することを考慮に入れるだけで、好みの Identity Management システムでいつものようにユーザ、グループ、ロールを構造化できます。サブジェクトごとにポリシーを適用するということは、ポリシーをサブジェクト別にグループ化して管理する必要があることを意味します。Keypass PAP API は、これを達成するために設計されています。

XACML は XML 仕様なので、Keypass API は XML Restful API を提供します。PAP REST の観点からは、唯一のリソースは、テナントの サブジェクト にあるポリシーです。テナントとサブジェクトの両方が、リソースそのものではないため、名前空間としてみなされる可能性があります。

アクセス制限 : Steelskin PEP

Steelskin は、定義されたポリシーに基づいてプラットフォーム・コンポーネントへのアクセスを制限するために Keypass と共に動作するように設計された XACML Policy Enforcement Point (PEP) です。これは、次の認証情報の各要求をチェックするトランスペアレントなプロキシです :

  • Fiware-Service ヘッダ : リクエストがアクセスしようとしているサービス (Keystoneドメインに対応)を含みます
  • Fiware-Servicepath ヘッダ : サービス内のサブサービス (Keystoneプロジェクトに対応)を含みます。
  • X-Auth-Tokenヘッダ : 以前のヘッダで宣言されたドメインとプロジェクト用の有効なキーストーントークンを含む必要があります

PEPはこの情報を使用して次のことを行います :

  • Keystone でユーザ ID を検証する
  • ユーザが宣言されたサービスおよびサブサービスにアクセスできるかどうかを確認します
  • ユーザが要求された操作を実行できるロールを持っているかどうかを確認します

有効なヘッダを持つリクエストの場合、プロキシはユーザに対して完全に透過的です。無効なアクセスの場合、プロキシは一般的な 403 エラーを問題のユーザに返します。

リファレンス・ドキュメントと API

ID system: Keystone & SCIM APIs

SCIM APIs Github

Keystone

アクセス制御 : Keypass

Access Control Github

PEP Proxy: Steelskin

PEP Proxy Github