属性ベースのアクセス制御(ABAC)セキュリティーモデル
属性ベースのアクセス制御(ABAC)は、オブジェクト(ケース、レポート、プロパティ)の特性と、オブジェクトへのアクセスを要求するオペレーターの属性を比較することで、オブジェクトへのアクセスを制御するために使用されます。 アクセス制御ポリシーは、特定のユーザーがオブジェクトにアクセスできるかどうかを判断し、アクセスグループとは無関係に実行され、Pega Platform™の継承機能を活用することができます。 たとえば、ケースに属性Customerを割り当てて、ユーザーが担当する顧客名のリストにCustomerがあるかどうかに基づいて、ユーザーにケースを削除する権限があるかどうかを決定することができます。
アクセスグループに属しているかどうかでユーザーを大まかに限定する制限は、ロールベースのアクセス制御(RBAC)によって設定されます。 一方、ABACでは、定義されたユーザー属性に基づいて、行レベルや列レベルのセキュリティーをより詳細に制御することができます。 ABACは、RBACのセキュリティー機能を補完し、拡張します。 ABACアプローチに適したユースケースとしては、適切なクリアランスレベルを持たないユーザーからの情報を編集したり、特定の部門に割り当てられている場合にのみユーザーがアクションを実行できるようにしたりするケースなどが挙げられます。 下記の表は、Clearance Level属性を使ってタスクのアクセスを制御する例を示しています。
User Role | Clearance Level | Read Reports | Submit Reports | Redact Reports |
---|---|---|---|---|
Agent | Yes | No | No | |
Agent | Level 2 | Yes | Yes | No |
Agent | Level 3 | Yes | Yes | Yes |
アプリケーションに属性ベースのアクセス制御を設定するには、まず、アクセス制御の目的において使用する属性を決定します。 次に、オブジェクトの属性値とユーザーの属性値を比較するアクセス制御ポリシーの条件を定義します。 最後に、条件ロジックの評価によって制御されるアクションを指定するアクセス制御ポリシーを定義します。
ヒント: 過去にABACを無効にしたことがある場合は、動的システム設定を更新することでABACを再び有効にすることができます。 Dev Studioで、動的システム設定EnableAttributeBasedSecurityを検索して開きます。 Value フィールドに「true」と入力してSaveをクリックし、属性ベースのアクセス制御を有効にします。
アクセス制御ポリシーの条件
ABACを使用して、ロールベースではなく、ユーザーに関する他の属性に基づいて、クラスの特定のインスタンスへのアクセスを制限します。 たとえば、各ユーザーに「Security Classification」があり、それ自体でユーザーがアクセスできるデータに制限が適用される場合があります。
許可されたアクセスの種類を指定するアクセス制御ポリシーにより、ABACに制限が適用されます。 各ポリシーに対して、1つまたは複数のアクセス制御ポリシー条件が、アクセスを許可するかどうかを決定します。
使用する予定の属性を設定した後、Access Control Policy Conditionルール画面(Rule-Access-PolicyCondition)を設定します。 Access Control Policy Conditionルール画面では、フィルターのセットを定義し、アクセス制御ポリシーの条件を組み合わせるロジックを追加します。 ルール画面では、保護されたオブジェクトにアクセスタイプが付与される条件を記述します。 Access Control Policy Conditionルール画面の条件が満たされると、ユーザーはアクセス制御ポリシーで定義されたアクションを実行できます。 たとえば、Access Control Policy Conditionルール画面で定義された条件により、サポートエージェントの特定のチームのマネージャーのみが、そのチームのメンバーが処理したサービスクレジットを承認できるようにすることができます。
Access Control Policy Conditionルール画面では、フィルターロジック値を持つ複数の条件セットを入力できます。 各フィルターロジックの仕様は、Access Whenルールに関連付けられています。 各フィルターセットは、ケースの属性(プロパティ値)と、任意のクリップボードのプロパティ値を、実行時に比較します。 この比較値は、通常、保護されたオブジェクトにアクセスしようとするユーザーの情報を表しています。
補足: Access Whenルールが属性ベースのアクセス制御でどのように機能するかについての詳細は、「Understanding Access When rules」を参照してください。
次の図の中央付近にある垂直線を左右に動かして、RBACとABACの違いを確認してください。
アクセス制御ポリシー
Access Control Policy Condition rule画面を設定した後、Access Control Policy rule画面を設定します(Rule-Access-Policy)。 Policy画面では、オブジェクトへのアクセス時にユーザーに許可される事項を制限するアクションを次のいずれかから選択します。
- Read:ユーザーは、ポリシー条件を満たすケースを開くか、リスト、レポート、検索などでケース用のデータを表示できます。
- Update:ユーザーは、ポリシー条件を満たすケースを作成するか、ポリシー条件を満たすケースのデータを更新できます。
- Discover:ユーザーは、「Discovery」ポリシー条件を満たすが「Read」ポリシー条件を満たさないケースについて(開発者が定義する)限定的な情報を表示できます。
- Delete:ユーザーは、ポリシー条件を満たすケースを削除できます。
- PropertyRead:読み取りおよび更新アクセス権を伴うプロパティ値を含み、プロパティ値のユーザーへの表示が制限されます。
- PropertyEncrypt:プロパティはデータベース、クリップボード、ログ、検索インデックスで暗号化されます。 「PropertyRead」ポリシーがプロパティの表示を制限しない場合、暗号化が解除されたプロパティ値がUIコントロールでユーザーに表示されます。
Pega PlatformデータベースのAssign-、Data-、Index-、Work-クラスのみにアクセス制御ポリシーを定義することができ、アクセス制御ポリシーは複数のクラスを継承することができます。 ポリシー条件は関連するすべてのポリシーから組み合わされ、すべてのポリシー条件が満たされたときにのみアクセスを許可します。 RBACとは異なり、ABACポリシーはPega Platformに内蔵されている継承機能を利用します。
ABACポリシーがアクセスを許可する場合、RBACも適用され、アクセスを許可しなければなりません。
補足: アクセス制御ポリシーの確認方法を学ぶには、「Reviewing access control policies」を参照してください。
属性のアサインメント
属性ベースのアクセス制御をアプリケーションで設定するには、使用するユーザーとオブジェクトの属性を定義します。 ユーザー属性はさまざまな方法で定義できます。 たとえば、ユーザーの認証に外部身分証明プロバイダー(IDP)を使用している場合、IDPに保存されている情報の中からユーザーに属性を割り当てることができます。 次に、それらの属性をPega Platformアプリケーションのユーザーのオペレーターレコードまたはリクエスターレベルのデータページにマッピングします。 オプションとして、オブジェクトクラスのプロパティフィールドに属性値を追加することで、オブジェクトの属性を追加することができます。
属性の表現には、単一文字列値、文字列値リスト、数値の3つのデータタイプを使用できます。 暗号化されたフィールドは使用できません。
単一文字列値
文字列型のプロパティを使用して、ユーザーにアクセスを許可する前に一致しなければならない特定の属性を定義することができます。 以下の例では、Security ClearanceがTop Secretのユーザーにアクセスが許可されています。
Operator.SecurityClearance = “Top Secret”
文字列値リスト
特殊な比較演算子であるAll ofおよびOne ofを使用して、コンマ区切りの文字列値リストを評価することができます。 たとえば、セキュリティーポリシーでSecurity ClearanceレベルがTop SecretまたはSecretであることが要求されている場合、One of演算子はどちらの属性のユーザーにもアクセスを許可します。 All of演算子は、文字列値のリストに含まれるすべての属性を評価し、すべての属性が存在する場合にのみアクセスを許可します。
補足: ポリシー条件フィルターで参照される比較値は、既存のRequestorプロパティまたはリクエスターが指定したスコープのデータページである必要があります。
数値
属性を数値データタイプで表すことができます。 属性の値は、オブジェクト(ケース)とサブジェクト(オペレーター)の両方で、トップレベルの数値プロパティにマッピングされなければなりません。 これは、セキュリティー仕様でアクセス階層が必要な場合に役立ちます。 たとえば、Top Secret、Secret、Unclassifiedの各属性を使って、以下のような数値マッピングを作成することができます。
属性名 | 数値プロパティ |
Top secret | 3 |
Secret | 2 |
Unclassified | 1 |
そして、アクセスレベルを決定するために、数値比較を伴う単一の条件を使用することができます。
Operator.SecurityClearance >= .SecurityClearance
次の問題に答えて、理解度をチェックしましょう。
このトピックは、下記のモジュールにも含まれています。
- アクセス制御 v3
トレーニングを実施中に問題が発生した場合は、Pega Academy Support FAQsをご確認ください。