ポリシー管理¶
ポリシー¶
ポリシーとは 認可 概要 で紹介した通り、
- 「誰が」(サブジェクト)
- 「何を」(リソース)
- 「どうする」(アクション)
に対して
- 「許可/禁止」(エフェクト)
を定めたものです。
![]()
サブジェクト管理機能で管理されている「誰が」とリソース管理機能で管理されている「何を」「どうする」について「許可/禁止」を管理するのがポリシー管理機能です。リソースはまとめて権限を管理するためにリソースグループで設定をまとめることができ、サブジェクトは実際には条件式を使用してサブジェクトグループという単位で利用されます。このため、ポリシー管理は実際には
- 「誰が」:サブジェクトグループ
- 「何を」:リソースグループ
- 「どうする」:アクション
に対して「禁止」「許可」の設定を管理する形になっています。
ポリシー管理では上記の情報のセットを大量に保持しているだけなので、ポリシー情報の取り扱い自体はとても単純です。
API¶
ポリシー管理に関係する主要なAPI上の操作を説明します。詳細に関してはAPIリストを参照してください。
マネージャインスタンスの取得¶
ポリシー管理の主要な操作を行うためには PolicyManager クラスを使用します。マネージャクラス、および、ファクトリクラスは以下の通りです。
- マネージャクラス
- jp.co.intra_mart.foundation.authz.services.admin.PolicyManager
- マネージャファクトリ
- jp.co.intra_mart.foundation.authz.services.admin.PolicyManagerFactory
マネージャインスタンスはファクトリクラスを使用して取得します。ファクトリも自身のファクトリメソッドを持っていますので、以下のようにして取得します。
final PolicyManager policyManager = PolicyManagerFactory.getInstance().getPolicyManager();
ポリシーの設定¶
特定のリソースグループ、サブジェクトグループ、アクションに対してエフェクトを設定します。Permit か Deny が設定できます。
// ポリシーの設定 final Policy policy1 = policyManager.setPolicy("resource-group-id", "subject-group-id", "service", "execute", "permit"); final Policy policy2 = policyManager.setPolicy(resourceGroup, action, subjectGroup, Effect.PERMIT);
ポリシーの取得¶
特定のリソースグループ、サブジェクトグループ、アクションに対して設定されているエフェクトを取得します。この時、単純に設定したポリシーを取得するか、リソースグループの継承関係を考慮するかによってメソッドが分かれています。
// 継承関係を考慮せずポリシーを取得する(テーブルの値からそのまま取得) Policy declaredPolicy = policyManager.getDeclaredPolicy("resource-group-id", "subject-group-id", "service", "execute"); // リソースグループの継承関係を考慮してポリシーを取得する Policy actualPolicy = policyManager.getActualPolicy("resource-group-id", "subject-group-id", "service", "execute");
ポリシーの削除¶
特定のリソースグループ、サブジェクトグループ、アクションに対して設定されているポリシーを削除すると「未設定」状態になります。通常上位のリソースグループに設定されている権限を参照するようになります。
// 単一の設定を削除 // 削除すると通常継承扱いになります。 policyManager.removePolicy(policy1); policyManager.removePolicy(policy2.getPolicyId()); // リソースグループ、サブジェクトグループについて一括で削除 policyManager.removePoliciesForResourceGroup("resource-group-id"); policyManager.removePoliciesForSubjectGroup("subject-group-id");
テーブル上の表現¶
ここではAPI上のモデルとテーブル上の関連を中心に説明します。
ポリシー(imaz_policy)¶
ポリシーテーブルには概要で説明した項目をほぼそのまま格納します。
主要なフィールド 論理名 物理名 ポリシーID policy_id リソースグループID resource_group_id サブジェクトグループID subject_group_id リソースタイプ resource_type アクション action エフェクト effect ポリシーIDは内部的に採番されるIDです。リソースグループID、リソースタイプ、アクション、サブジェクトグループIDで一意になるよう制約がかかっており、通常APIなどからポリシーを変更する際にはこれらの値を使用します。