特権System_Access制御モデルアクセス制御モデル(DAC、MAC、RBAC、ABAC)

ゼロトラスト❤ゼロトラストアーキテクチャとアクセス制御モデルABAC

近年、パーミッションアクセス制御モデルが繰り返し言及されています。現在、RBAC(ロールベースアクセスコントロール)が一般的に使用されています。RBACは、群を抜いて最も人気のあるパーミッション設計モデルです。その利点は、シンプルで実装が簡単です。

ただし、承認要件の複雑さが増し、制御ロジックの柔軟性に対する要件が高くなるにつれて、ABAC(属性ベースのアクセス制御)アクセス制御モデルがますます一般的になります。最近人気のあるゼロトラストアーキテクチャでは、ABACモデルがRBACよりも適しています。

ABACは属性用であるため、最初に、どの属性が一般的に許可および制御されているかを見てみましょう。

 

--------


アクセス制御モデル(DAC、MAC、RBAC、ABAC)

リソースにはディレクトリがあり、権限は継承されます。パスによって設計されます。同時に、権限と検索は一緒である必要があります。それらが検索されると、一緒になります。sj娃

————————————————
著作権表示:この記事は、CC 4.0BY-SA著作権表示に準拠したCSDNブロガー「JohnGox」の元の記事です。元のソースリンクを添付してくださいと再版のためのこのステートメント。
元のリンク:https://blog.csdn.net/LngZd/article/details/100781310

 

アクセス制御モデルアクセス制御を
プロジェクトに追加する必要があり、アクセス制御モデルについていくつかの調査が行われています。この記事では、主に一般的に使用されるアクセス制御モデルをいくつか紹介します。

基本要素
アクセス制御モデルには、次の3つの要素が含まれます。

サブジェクトとは、他のエンティティに対して主導権を握るエンティティを指します

オブジェクトは、他のエンティティからのアクセスを受動的に受け入れるエンティティです

制御戦略(ポリシー)は、オブジェクトに対するサブジェクトの操作動作と制約です。

セキュリティ戦略
サブジェクト、オブジェクト、および制御戦略が満たす必要のある基本的なセキュリティ戦略:

最小特権の原則:サブジェクトに権限を割り当てるときは、権限の最小化の原則に従う必要があります。最小特権の原則の利点は、サブジェクトによる許可された動作の実装を最大限に制限し、危険を回避できることです。緊急事態、エラー、および対象の不正使用から。

最小リークの原則:サブジェクトがタスクを実行するときにサブジェクトが知る必要のある情報を最小化する原則を指し、サブジェクトに権利を割り当てます。これは、機密情報が無関係な担当者に知られるのを防ぐためです。他の人が知らないほど良いです。

マルチレベルセキュリティ戦略:マルチレベルセキュリティ戦略とは、極秘(TS)、秘密(S)、機密(C)、制限(C)のセキュリティレベルに応じた、サブジェクトとオブジェクト間のデータフローとアクセス許可の制御を指します。 RS)およびレベルなし(U)5つのレベルに分けられます。マルチレベルのセキュリティ戦略の利点は、機密情報の拡散を回避することであり、セキュリティレベルの高いサブジェクトのみがアクセスできます。

開発
1985年、米軍は、2つのよく知られたアクセス制御戦略である随意アクセス制御モデル(DAC)と強制アクセス制御モデル(MAC)を記述したTrusted Computer System Evaluation StandardTCSEを提案しました。役割ベースのアクセス制御モデル(RBAC)は1992年に提案されました。属性ベースのアクセス制御モデル(ABAC)は、アクセス制御モデルの将来と見なされます。


随意アクセス制御モデル(DAC)随意アクセス制御モデル(DAC、随意アクセス制御)は、随意アクセス制御戦略に基づいて確立されたモデルであり、正当なユーザーが戦略で指定されたオブジェクトにユーザーまたはユーザーグループとしてアクセスできるようにします。不正アクセスの防止ユーザーがオブジェクトにアクセスします。オブジェクト権限を持つユーザーは、オブジェクト権限を他のユーザーに割り当てることができます。たとえば、File1へのアクセス権を持たないユーザーは、アクセス権を持つユーザーBからアクセス権を取得できます。

DACアクセス制御の実装
アクセス制御リスト(ACL)
アクセス制御リスト(ACL、アクセス制御リスト)、各オブジェクトにはリストが装備されています。このリストには、サブジェクトがオブジェクトに対して実行する操作の種類が記録されます。システムがオブジェクトにアクセスしようとすると、最初に、このリストに現在のユーザーのアクセス許可があるかどうかがチェックされます。ACLはリソース指向のアクセス制御モデルであり、そのメカニズムはリソースを中心に展開します。

ファイルオブジェクトACLの場合:

アリス:読み取り、書き込み
ボブ:読み取りと
は、アリスがファイルの読み取りと書き込みを実行でき、ボブファイルの読み取りのみを実行できることを意味します。

アクセス制御マトリックス(ACM)
アクセス制御マトリックス(ACM、アクセス制御マトリックス)は、サブジェクトとオブジェクトの間の権限分散関係をマトリックスの形式で記述します。各サブジェクトに関する限り、どのオブジェクトがどのアクセス権限を持っているか、オブジェクトの場合、どのサブジェクトが彼へのアクセスを実装できるか。

アセット1アセット2ファイルデバイス
ロール1読み取り、書き込み、実行、独自の実行読み取り書き込み
ロール2読み取り読み取り、書き込み、実行、独自の        
DACアプリケーションシナリオ
DACは、オペレーティングシステムのファイルシステム、LINUX、UNIX、およびWindowsNTバージョンで一般的に使用されます。 DACスタンバイを提供します。実装では、最初にユーザーを認証し、次にユーザーが制御リストに従ってリソースにアクセスできるかどうかを判別します。ユーザー制御権限の変更は、通常、特権ユーザーまたは管理者グループによって実装されます。DACの最大の欠点は、アクセス制御が分散していることです。たとえば、ファイルのグループに対する統一されたアクセス許可を、指定されたユーザーのグループに単純に設定することはできません。対象者の権限が大きすぎて、意図せずに情報が漏洩する可能性があります。

強制アクセス制御モデル(MAC)
強制アクセス制御(MAC、強制アクセス制御)は、DAC典拠制御の過剰分散の問題を補うために誕生しました。

サブジェクトには一定レベルのセキュリティ
が与えられます。オブジェクトには一定レベルのセキュリティが与えられます。
サブジェクトがオブジェクトにアクセスできるかどうかは、2者間の関係のセキュリティレベルによって決まります。この判断には通常、体系的なハード制限があります
。MACは非常に機密性の高い組織や、強力な階層概念を持つ他の業界に適しています。機密性、管理は十分な柔軟性がありません。実装に関しては、MACとDACは通常、各ユーザーにオブジェクトへのアクセス権のルールセットを与えます。管理の利便性を考慮して、このプロセスでは、同じ機能を持つユーザーがグループにグループ化され、グループごとに設定されることがよくあります。権限を割り当てます。


ロールベースのアクセス制御(RBAC)ロールベースのアクセス制御(RBAC)は、ユーザーとアクセス許可の間の「役割」の概念を導入し、ロールはユーザーとアクセス許可の間の関係を切り離します。
役割とグループの主な違い:

グループはユーザーの集まりです。
役割は
権限の集まりです。役割/権限間の変更は、グループ/ユーザーの関係間の変更よりも比較的遅いため、承認管理の複雑さが軽減さます
。RBAC0
基本モデルとしてのRBAC0には、コア3つの要素、ユーザー、役割、および権限。ユーザーとロールは多対多の関係を持つことができ、権限とロールも多対多の関係を持つことができます。

RBAC1
RBAC1にはRBAC0が含まれ、役割の継承が追加されます。名前が示すように、役割の継承とは、役割を他の役割から継承できることを意味します。他の役割の権限を持ちながら、追加の権限を関連付けることもできます。この設計では、役割をグループ化および階層化できるため、権限管理がある程度簡素化されます。つまり、役割間に従属関係があり、これはエンティティの設計、つまり役割エンティティの自己関連付けに対応します。

RBAC2
RBAC2にはRBAC0も含まれ、制約が追加されます。RBAC1とRBAC2は互いに独立してい
ます。RBAC2の制約により、権限がロールに割り当てられたとき、またはロールがユーザーに割り当てられたとき、およびユーザーが特定の場所でロールをアクティブ化するときに従う必要のある必須ルールが規定されています。瞬間。

相互に排他的な制約:相互に排他的なユーザー、相互に排他的な役割、および相互に排他的なアクセス許可を含みます。同じユーザーが相互に排他的なロールを持つことはできません。2つの相互に排他的なロールに同じアクセス許可セットを割り当てることはできません。相互に排他的なアクセス許可を同じロールに割り当てることはできません。
カーディナリティの制約:ロールに割り当てられるユーザーの数は制限されており、このロールを持つことができるユーザーの数を示します。例:会社のCEO専用に役割が作成された場合、この役割の数は制限されます。
前提条件の役割:より高いレベルの権限を取得するには、最初に低いレベルの権限を持っている必要があります。例:ゼネラルマネージャーの権限を持つ前に、まず副ゼネラルマネージャーの権限を持ちます。


RBAC3
RBAC3はフル機能のRBACであり、RBAC3はRBAC0、RBAC1、RBAC2を組み合わせたものです。


属性ベースのアクセス制御(ABAC)属性ベースのアクセス制御(ABAC)は、属性の1つまたはグループが特定の条件を満たすかどうかを動的に計算して、許可の判断を下します。必要に応じてさまざまな詳細なアクセス許可を制御できますが、アクセス許可を定義するときにユーザーとオブジェクトの関係を確認するのは簡単ではありません。ルールが複雑な場合、管理者にメンテナンスや追跡の問題を簡単にもたらすことができます。

属性は一般に4つのカテゴリに分類されます。

ユーザー属性(ユーザーの年齢など)、
環境属性(現在時刻など)、
操作属性(読み取りなど)、
オブジェクト属性(記事など、リソース属性とも呼ばれます)
。RBACと比較して、ABACの粒度は細かくなります。ユーザーの制御など、アクセス許可の制御。アクセス率。実際の開発では、RBACの役割管理の利点とABACの柔軟性を組み合わせることができます。

ABACを使用してアクセスレートを制御し
、コード
パッケージmainを実行します

インポート(
    "fmt"
    "strconv"

    "github.com/casbin/casbin"
    "github.com/casbin/casbin/model"

type Request struct {     サブジェクト文字列     オブジェクト文字列     アクション文字列     Countint }




func(r Request)IsBelow(limit string)bool {     a、err:= strconv.Atoi(limit)     if err!= nil {         return false     }     fmt.Printf( "%d <%d%v \ n"、r。 Count、a、r.Count <a)     return r.Count <a }






func main(){     const modelText = ` [request_definition] r = sub、obj、act、count [policy_definition] p = sub、obj、act、limit  [policy_effect] e = some(where(p.eft == allow))[マッチャー] m = r.sub == p.sub && r.obj == p.obj && r.act == p.act && r.count.IsBelow(p.limit)`









    m:= model.Model {}
    m.LoadModelFromText(modelText)
    e、_:= casbin.NewEnforcer(m)

    //ポリシーを追加し
    ます// johnのhttp_apiへのアクセスを500回未満に制限します
    e.AddPolicy( "john"、 "http_api"、 "visit"、 "500")

    //ジョンは現在http_apiに90回アクセスしています
    request:= Request {         Subject: "john"、         Object: "http_api"、         Action: "visit"、         Count:90}



    pass、err:= e.Enforce(request.Subject、request.Object、request.Action、request)
    fmt.Println(pass、err)
}


関連リンク
https://casbin.org/docs/en/overview
https://en.wikipedia.org/wiki/Access_control
http://www2.imm.dtu.dk/courses/02230/AdvancedAccessControl.pdf
--- —————————————
著作権表示:この記事は、CC 4.0 BY-SA著作権契約に従ったCSDNブロガー「JohnGox」の元の記事です。元のソースリンクとこのステートメントを添付してください再印刷用。
元のリンク:https://blog.csdn.net/LngZd/article/details/100781310

おすすめ

転載: blog.csdn.net/fei33423/article/details/106588580