私の会社は、集中型のセキュリティ サービスの実装を検討しています。そのための一般的な標準は XACML のようです。複雑な承認シナリオがあり、XACML ポリシーの属性を使用してそれを定義する方法を理解するのに苦労しています。
私が取り組んでいるシステムには、この認証シナリオに関連するいくつかの要素があります。
- ユーザーはプロジェクトを作成して作業を整理します。各プロジェクトには、チーム メンバーと閲覧者 (プロジェクトを表示できるが変更はできないユーザーまたはグループ) のリストがあります。
- これらのプロジェクト内で、ユーザーはレシピを作成して、何かを製造する方法を説明します。
- ユーザーは、これらのレシピを別のグループで製造するように要求します。
ユーザーが特定のアイテムのレシピを表示したい場合は、次のいずれかに該当する必要があります。
- ユーザーはレシピの所有者 (レシピを書いた人) でなければなりません。
- ユーザーは、レシピが作成されたプロジェクトのチーム メンバーである必要があります。(直接またはグループ メンバーシップを介して)
- ユーザーは、レシピを製造するグループのメンバーである必要があります。(彼らはそれを製造するためのレシピを見る必要があります。)
- ユーザーは、過去 2 週間以内にレシピを作成したグループのメンバーである必要があります。(つまり、レシピの製造依頼を完了した後、問題を修正するために 2 週間レシピを表示し続けることができます。)
- ユーザーは管理者である必要があります。
これらのルールでは、ユーザーがレシピを表示できるかどうかを判断するために必要な属性には次のものが含まれているようです。
- ユーザー
- ユーザーのグループ メンバーシップ (プロジェクト アクセス、製造グループ、または管理者アクセス用)
- プロジェクトチームのメンバーと閲覧者
- レシピの製造依頼
質問:
- PIP はこの情報をどのように収集しますか? データベースから直接?この情報を保存するシステムへのサービス呼び出しを介して?
- この情報は XACML (一般的に) ではどのように表されますか? 私が見た例のほとんどは、データのコレクション (製造要求のリストなど) を使用しない単純なモデルを使用しています。アクセスされているオブジェクトに直接属性を付けるだけです。「isBeingManufacturedByUserGroup」のように、データは何らかの方法で平坦化されますか? (もしそうなら、その属性の値はどのように決定されますか?)
- これらのルールを評価するために、ポリシーはどのように構成されますか?
- この種の承認を処理するための代替手段はありますか (XACML 以外に)? OAuth 2.0 は、この種の問題をより簡単に処理できるでしょうか?