<form id="fjn3d"></form>

<address id="fjn3d"></address>

            5.3.?訪問控制規則

            5.3.1. 讀訪問控制
            5.3.2. 寫訪問控制
            5.3.3. 強訪相關系統表
            5.3.4. 強訪相關函數
            5.3.5. 強訪相關查看

            UXDB的強制訪問控制在BLP模型的基礎上作了一定的改進,采用“向下讀,區間寫”的原則,實現主客體的訪問控制。

            5.3.1.?讀訪問控制

            讀訪問控制規則較為簡單。UXDB首先獲取客體標記,然后試圖獲得主體在同一策略上的最大讀標記。下面兩種情況下允許主體讀客體數據:

            • 客體沒有標記。

            • 客體有標記,主體在同一策略上有標記且滿足客體標記用戶最大讀標記。

            否則,禁止主體對客體數據的訪問。

            5.3.2.?寫訪問控制

            寫訪問控制的規則中,UXDB首先獲取客體標記,然后試圖獲得主體在同一策略上的最大寫標記和最小寫標記。下面兩種情況下允許主體寫客體數據:

            • 客體沒有標記。

            • 客體有標記,主體在同一策略上有標記,且滿足主體的最小寫標記客體標記用戶的最大寫標記。

            否則,禁止主體對客體數據的訪問。

            5.3.3.?強訪相關系統表

            UXDB安全數據庫通過以下系統表來存儲強訪相關元數據:

            1. ux_mac_policy,ux_label_level,ux_label_scope,用于存儲策略定義和內部編碼。

            2. ux_user_label存儲主體標記,主體標記可以有多個。

            3. 在ux_class的reloptions選項中mac_policy_id存儲策略id,隱藏列plcol,plcol_level,plcol_scope存儲行的標記。

            4. 在ux_attribute的attoptions選擇中mac_policy_id,mac_label_level,mac_label_scope存儲列標記。

            5.3.4.?強訪相關函數

            1. 創建策略:

              mac_create_policy('policyname','level_list','scope_list')

              policyname:策略名稱。

              level_list:等級列表,從高到低。

              scope_list:范圍列表,最大為32。

            2. 主體標記:

              mac_set_user_label('username','policyname','max_read','max_write','min_write','default_session','default_write')

              參數依次為:主體名(用戶名)、策略名、最大讀標記、最大寫標記、最小寫標記、默認會話標記、默認寫標記。

              標記規則:

              max_read>=max_write>=default_write>=min_write
              max_read>=default_session

              注意

              主體標記可以有多個。

            3. 客體標記——行級:

              mac_apply_row_policy('schema_name','table_name','policyid')

              schema_name:需要標記的表所在的模式名。

              table_name:需要標記的表名。

              policyid:標記使用的策略名。

              注意

              一個客體只能有一個標記。

            4. 客體標記——列級:

              mac_set_column_label('schema_name','table_name','column_name','label')

              schema_name:需要標記的表所在的模式名。

              table_name:需要標記的表名。

              column_name:需要標記的列名。

              label使用的標記。

              注意

              一個客體只能有一個標記。

            5. 刪除策略:

              mac_drop_policy('policyname')

              policyname:刪除策略的名稱。

            6. 刪除表級標記:

              mac_drop_row_policy('schema_name','table_name')

              schema_name:帶有標記的表所在模式名稱。

              table_name:帶有標記的表的表名。

            7. 刪除列級標記:

              mac_drop_column_label('schema_name','table_name','column_name')

              schema_name:帶有標記的表所在模式名稱。

              table_name:帶有標記的表的表名。

              column_name:帶有標記的列名。

            5.3.5.?強訪相關查看

            1. 查看當前主體標記:

              select?useid,policyid?from?ux_user_label;
            2. 刪除主體標記:

              select?mac_drop_user_label('主體名','策略名');
            3. 刪除策略:

              select?mac_drop_policy('策略名');
            4. 查看當前策略:

              select?*?from?ux_mac_policy;
            5. 查看客體行標記:

              select?relname,reloptions?from?ux_class?where?reloptions?is?not?null;
            6. 刪除行標記:

              select?mac_drop_row_policy('模式名','表名');
            7. 客體列標記:

              select?attname,attoptions?from?ux_attribute?where?attoptions?is?not?null;
            8. 刪除列標記:

              select?mac_drop_column_label('模式名','表名','列名');
            91竞彩之家