これにAzManを使用することは確かに可能です。この形式のリソースと役割ベースのセキュリティを使用して、いくつかのアプリケーションを実装しました。AzManは実際には非常に柔軟性があり、リソース階層(Windowsファイルシステムのセキュリティを考えてください)も実装しました。カスタムユーザーとグループ、階層全体での役割の完全な継承、および任意のレベルでの操作を拒否する機能があります。これを行うには、AzManスコープを理解する必要があります。
AzManスコープを使用すると、特定のリソースに対して個別の役割/操作セットを作成できます。このリソースは、選択したものであれば何でもかまいません。これは、AzManの単なる文字列識別子です。これらの役割/操作は、アプリケーションレベルで割り当てられた役割に追加されます。
以前に実装した方法は、オブジェクトのIDをスコープ名として使用することです。簡単にするために、これはGUIDにするのが理想的です(ただし、MMCアプリケーションは非常に面倒になります)が、同様に「type-id」形式、つまり「CustomerAlert-1」(MMCアプリでははるかに使いやすい)を使用できます。azmanでAccessCheckを実行するときは、スコープ名をAccessCheckに渡します(現時点では、AccessCheck定義で配列が許可されていても、スコープは1つだけです)。
これを行う方法の例を実行します(他の人が苦労している場合)...
- アプリケーションレベルでCustomerAlertView、CustomerAlertEdit、CustomerAlertDeleteなどの操作を作成します。
- アプリケーションレベルでCustomerAlertOwnerというロール定義を作成します。
- すべての操作をCustomerOwnerロールに追加します。
- アプリで、「CustomerAlert-1」というスコープを作成します。
- スコープに「所有者」という役割の割り当てを作成します。
- CustomerAlertOwnerロール定義を「Owner」ロール割り当てに追加します。
- この所有者の役割に、顧客/ユーザー「Dave」を追加します。
- これで、DeleteCustomerAlert()などでアクセスチェックを実行するときに、CustomerAlertDelete操作のIDと、削除するオブジェクトのタイプ/IDをスコープとして渡すだけです。つまり「CustomerAlert-1」です。
オブジェクトプロパティベースのアクセスチェック(つまり、特定のプロパティの読み取り/書き込みをロックアウトする)の場合、考えられる2つのアプローチがあります。1つは、各プロパティとアクセスタイプ(PropertyNameGet、PropertyNameSet、PropertyAddressAdd)のオブジェクトスコープで操作を割り当てることです。 。アプリケーションレベルで操作を作成し、タスク/ロールを使用して一般的に使用されるアクセス許可セットをグループ化することにより、これを簡素化できます。もう1つの方法は、各プロパティのスコープ(CustomerAlert-1-Name)を使用することですが、特定のオブジェクトにアクセスするときに複数のスコープを個別にロードする必要があるため、これは面倒で効率的ではありません。
AzManでの操作を明示的に拒否することはできず、アプリケーション/スコープでユーザーに役割を割り当てないことを覚えておく必要があります。これは、特定のタイプのリソース階層(グループ/ユーザー)などの実装がより困難になる可能性があることを意味します。
AzManについてさらにサポートが必要な場合は、お気軽にお問い合わせください。ほとんどのシナリオについて説明しました。