<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>访问控制 on Kernel Notes</title><link>https://my-blog.j8465383071.workers.dev/tags/%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6/</link><description>Recent content in 访问控制 on Kernel Notes</description><generator>Hugo -- 0.147.7</generator><language>zh-cn</language><lastBuildDate>Fri, 14 Aug 2026 18:59:29 +0800</lastBuildDate><atom:link href="https://my-blog.j8465383071.workers.dev/tags/%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6/index.xml" rel="self" type="application/rss+xml"/><item><title>PostgreSQL 1-1 源码安装 (linux / macos)</title><link>https://my-blog.j8465383071.workers.dev/posts/postgresql/1-1-install-postgresql/</link><pubDate>Tue, 21 Jan 2025 13:55:00 +0800</pubDate><guid>https://my-blog.j8465383071.workers.dev/posts/postgresql/1-1-install-postgresql/</guid><description>&lt;p>&lt;strong>摘要&lt;/strong>&lt;/p>
&lt;blockquote>
&lt;p>本文介绍介绍如何在2种个人PC中，使用源码安装PostgreSQL，包括：&lt;/p>
&lt;ul>
&lt;li>在Windows操作系统中，如何基于VwWare虚拟机，搭建Linux环境。并在Linux中，通过postgreSQL源码进行编译安装。&lt;/li>
&lt;li>在MacOS操作系统中，如何使用云服务器中的Linux操作系统，搭建postgreSQL源码编译与学习环境。&lt;/li>
&lt;/ul>&lt;/blockquote>
&lt;p>&lt;strong>目录&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>&lt;a href="#1-%E5%9C%A8Windows%E4%B8%AD%E5%AE%89%E8%A3%85PostgreSQL">1 在Windows中安装PostgreSQL&lt;/a>
&lt;ol>
&lt;li>&lt;a href="#1-1-%E7%9B%AE%E7%9A%84">1.1 目的&lt;/a>&lt;/li>
&lt;li>&lt;a href="#1-2-%E5%87%86%E5%A4%87">1.2 准备&lt;/a>&lt;/li>
&lt;li>&lt;a href="#1-3-%E7%BC%96%E8%AF%91%E6%BA%90%E7%A0%81">1.3 编译源码&lt;/a>&lt;/li>
&lt;li>&lt;a href="#1-4-%E9%85%8D%E7%BD%AE%E5%BF%AB%E6%8D%B7%E5%91%BD%E4%BB%A4">1.4 配置快捷命令&lt;/a>&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>&lt;a href="#2-%E5%9C%A8MacOS%E4%B8%AD%E5%AE%89%E8%A3%85PostgreSQL">2 在MacOS中安装PostgreSQL&lt;/a>
&lt;ol>
&lt;li>&lt;a href="#2-1-%E9%97%AE%E9%A2%98">2.1 问题&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-2-%E8%B0%83%E7%A0%94%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%95%86">2.2 调研云服务商&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-3-%E9%80%89%E6%8B%A9%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8">2.3 选择云服务器&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-4-%E9%85%8D%E7%BD%AE%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8">2.4 配置云服务器&lt;/a>&lt;/li>
&lt;li>&lt;a href="#2-5-%E4%B8%8B%E8%BD%BDpostgreSQL%E6%BA%90%E7%A0%81">2.5 下载postgreSQL源码&lt;/a>&lt;/li>
&lt;/ol>
&lt;/li>
&lt;/ol>
&lt;h1 id="1-在windows中安装postgresql">1 在Windows中安装PostgreSQL&lt;/h1>
&lt;h2 id="11-目的">1.1 目的&lt;/h2>
&lt;p>通过postgreSQL源码进行编译安装，主要目的是：&lt;/p>
&lt;ol>
&lt;li>方便通过源码调试跟踪&lt;/li>
&lt;li>直接修改以增加调试信息或新功能&lt;/li>
&lt;/ol>
&lt;h2 id="12-准备">1.2 准备&lt;/h2>
&lt;p>首先，介绍如何准备centOS虚拟机，并安装git、VSCode、gdb等工具&lt;/p>
&lt;ol>
&lt;li>
&lt;p>已有windows 10/11 x86物理机&lt;/p>
&lt;/li>
&lt;li>
&lt;p>window 10中，安装vmware&lt;/p>
&lt;/li>
&lt;li>
&lt;p>vmware中，安装centOS虚拟机&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="http://mirrors.huaweicloud.com/centos/8.4.2105/isos/x86_64/">http://mirrors.huaweicloud.com/centos/8.4.2105/isos/x86_64/&lt;/a>&lt;/p>&lt;/blockquote>
&lt;/li>
&lt;li>
&lt;p>centOS中，安装git，以及中文输入法&lt;/p>
&lt;/li>
&lt;li>
&lt;p>centOS中，安装VSCode&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions">https://code.visualstudio.com/docs/setup/linux#_rhel-fedora-and-centos-based-distributions&lt;/a>&lt;/p>&lt;/blockquote>
&lt;/li>
&lt;li>
&lt;p>centOS中，安装PostgresSQL依赖的第三方开源软件&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">sudo yum install -y readline readline-devel openssl openssl-devel zlib zlib-devel
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 但是，部分linux可能会裁剪应用，因此可能需要安装如下软件&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">sudo yum install -y bison bison-devel flex flex-devel
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">#[参考](https://blog.csdn.net/Linjingke32/article/details/80393576)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>安装调试工具&lt;/p></description></item><item><title>数据库安全 4 访问控制</title><link>https://my-blog.j8465383071.workers.dev/posts/security/4-4-access-control/</link><pubDate>Wed, 05 Feb 2025 16:57:00 +0800</pubDate><guid>https://my-blog.j8465383071.workers.dev/posts/security/4-4-access-control/</guid><description>&lt;h1 id="1-访问控制的背景">1 访问控制的背景&lt;/h1>
&lt;p>在使用数据库存取数据的大部分场景中，数据库具有以下特点：&lt;/p>
&lt;ol>
&lt;li>对象多：一个数据库集群中有多个database对象，1个database对象中有多个schema对象，1个schema对象中有多个table、index等对象&lt;/li>
&lt;li>用户多：一个数据库中，有多个用户，每个用户可访问的数据库对象不同&lt;/li>
&lt;/ol>
&lt;p>在该场景中，通过访问控制机制，可限制某个对象访问数据库对象的范围&lt;/p>
&lt;h1 id="2-访问控制的原理">2 访问控制的原理&lt;/h1>
&lt;p>访问控制的模型是：主体、客体、操作。本文不解释基本概念。&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>主体&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>USER&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>角色：&lt;/p>
&lt;ul>
&lt;li>SYSADMIN 系统管理员&lt;/li>
&lt;li>CREATEROLE 安全管理员&lt;/li>
&lt;li>AUDITADMIN 审计管理员&lt;/li>
&lt;li>MONADMIN 监控管理员&lt;/li>
&lt;li>OPRADMIN 运维管理员&lt;/li>
&lt;li>POLADMIN 安全策略管理员&lt;/li>
&lt;/ul>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>客体&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>DATABASE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SCHEMA&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TABLESPACE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TABLE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>COLUMN&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>FUNCTION&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PROCEDURE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SEQUENCE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>FOREIGN SERVER&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>LANGUAGE&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>操作&lt;/th>
&lt;th>客体&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>CREATE&lt;/td>
&lt;td>DATABASE, SCHEMA, TABLESPACE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>ALTER&lt;/td>
&lt;td>DATABASE, SCHEMA, TABLESPACE, TABLE, FUNCTION, PRODUCE, FOREIGN SERVER, DIRECOTRY, PACKAGE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DROP&lt;/td>
&lt;td>DATABASE, SCHEMA, TABLESPACE, TABLE, FUNCTION, PRODUCE, FOREIGN SERVER, DIRECOTRY, PACKAGE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TRUNCATE&lt;/td>
&lt;td>TABLE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>VACUUM&lt;/td>
&lt;td>TABLE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>INDEX&lt;/td>
&lt;td>TABLE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TRIGGER&lt;/td>
&lt;td>TABLE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>SELECT&lt;/td>
&lt;td>TABLE, COLUMN, SEQUENCE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>INSERT&lt;/td>
&lt;td>TABLE, COLUMN&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>UPDATE&lt;/td>
&lt;td>TTABLE, COLUMN, SEQUENCE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>DELETE&lt;/td>
&lt;td>TABLE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>TEMPORARY&lt;/td>
&lt;td>DATABASE&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>EXECUTE&lt;/td>
&lt;td>FUNCTION, PROCEDURE, PACKAGE&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>语法：&lt;/p></description></item><item><title>强制访问控制</title><link>https://my-blog.j8465383071.workers.dev/posts/postgresql/mandatory-access-control/</link><pubDate>Mon, 16 Mar 2026 14:28:00 +0800</pubDate><guid>https://my-blog.j8465383071.workers.dev/posts/postgresql/mandatory-access-control/</guid><description>&lt;h1 id="1-背景">1 背景&lt;/h1>
&lt;h2 id="11-友商分析">1.1 友商分析&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>oracle&lt;/p>
&lt;ul>
&lt;li>范围：行级、列级&lt;/li>
&lt;li>实现：动态谓词过滤&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>金仓&lt;/p>
&lt;ul>
&lt;li>范围：列级&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>mysql&lt;/p>
&lt;ul>
&lt;li>无&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>sql server&lt;/p>
&lt;ul>
&lt;li>范围：行级&lt;/li>
&lt;li>实现：谓词过滤&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>oracle&lt;/p>
&lt;ul>
&lt;li>基于标签的访问控制OLS：绝密HS、机密S、秘密C、公开P
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/26/olsag/part1.html#GUID-C20C62AE-2A30-45F9-AEEA-52A0D3286FBA">https://docs.oracle.com/en/database/oracle/oracle-database/26/olsag/part1.html#GUID-C20C62AE-2A30-45F9-AEEA-52A0D3286FBA&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">-- 1 定义策略
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">SA_SYSDBA&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CREATE_POLICY&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">policy_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;HR_POLICY&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">column_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;HR_LABEL&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- 2 定义标签
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">SA_COMPONENTS&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CREATE_LEVEL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;HR_POLICY&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">1000&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;PUBLIC&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;P&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- 3 设置标签属性
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">SA_USER_ADMIN&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SET_LEVELS&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;HR_POLICY&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;SCOTT&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;C&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;S&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">SA_USER_ADMIN&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SET_COMPARTMENTS&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;HR_POLICY&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;SCOTT&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;FIN&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- 4 插入数据（主动定义标签）
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">INSERT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">INTO&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">employees&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">emp_id&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">emp_name&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">salary&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">HR_LABEL&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">VALUES&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1001&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;John Doe&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">50000&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">CHAR_TO_LABEL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;HR_POLICY&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;C:FIN&amp;#39;&lt;/span>&lt;span class="p">));&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>sql server：无&lt;/p>
&lt;/li>
&lt;li>
&lt;p>kngbase&lt;/p>
&lt;ul>
&lt;li>
&lt;p>行级&lt;/p>
&lt;/li>
&lt;li>
&lt;p>链接：&lt;a href="https://help.kingbase.com.cn/v8/safety/safety-guide/label-and-mac.html#id5">https://help.kingbase.com.cn/v8/safety/safety-guide/label-and-mac.html#id5&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>范围：table, view, index, procedure, function, package, sequence, trigger, synonym&lt;/p></description></item><item><title>海量 mac 设计</title><link>https://my-blog.j8465383071.workers.dev/posts/projectdocs/14-design-mac/</link><pubDate>Mon, 23 Mar 2026 21:41:00 +0800</pubDate><guid>https://my-blog.j8465383071.workers.dev/posts/projectdocs/14-design-mac/</guid><description>&lt;h1 id="1-强制访问控制">1 强制访问控制&lt;/h1>
&lt;h2 id="11-功能简述">1.1 功能简述&lt;/h2>
&lt;p>从实现的角度看，当用户执行SQL时，强制访问控制主要实现以下功能：&lt;/p>
&lt;ol>
&lt;li>CREATE ACCESS POLICY ..：在系统表中，记录ACCESS POLICY，以及其中的LABLE等信息&lt;/li>
&lt;li>CREATE TABLE ..：创建表时，如果设置acess_policy字段，则自动为表新增1列隐藏列，列名为access_label&lt;/li>
&lt;li>INSERT ..：向表插入数据时，根据当前用户的write_label，自动为数据生成access_label列的值。&lt;/li>
&lt;li>SELECT ..：从表查询数据时，根据当前用户的read_label，自动为查询语句添加过滤条件has_mac_permission(access_label, read_label)&lt;/li>
&lt;/ol>
&lt;p>另外，如果为表设置访问策略，需在索引中同时设置访问策略：&lt;/p>
&lt;ol>
&lt;li>CREATE INDEX ..：自动为索引新增1列，列名为access_label&lt;/li>
&lt;/ol>
&lt;p>对于一些其他语法，也许单独适配，包括：&lt;/p>
&lt;ol>
&lt;li>COPY ..：自动修改旧数据的access_label值&lt;/li>
&lt;/ol>
&lt;h2 id="12-实现方案">1.2 实现方案&lt;/h2>
&lt;h3 id="121-整体流程">1.2.1 整体流程&lt;/h3>
&lt;p>本文重点从源码角度，介绍强制访问控制策略如何基于隐藏列，实现强制访问控制，包括：创建、填充、匹配隐藏列等流程。&lt;br>
核心功能的大致流程如下：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">User Vastbase Disk
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">+---------------------------------------------------+---------------------------------------------------------+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 管理员&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> 1. CREATE ACCESS POLICY .. LEVEL .. LABEL .. --&amp;gt; &lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 2. 存储access policy至系统表vb_access_policy --&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 3. 存储access level至系统表vb_access_level --&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 4. 存储access label至系统表vb_access_label --&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> 5. CREATE TABLE .. &lt;span class="o">(&lt;/span>&lt;span class="nv">access_policy&lt;/span>&lt;span class="o">=&lt;/span>..&lt;span class="o">)&lt;/span> --&amp;gt; &lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 6. 识别是否设置access_policy
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 7. 自动添加隐藏列access_label
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 8. 存储access_policy至系统表pg_class --&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 9. 存储accessl_label定义至系统表pg_attribute --&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> 10. CREATE USER ..
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ACCESS POLICY .. READ LABEL .. WRITE LABEL --&amp;gt; &lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 11. 存储access_policy, read_label, write_label至系统表pg_authid --&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 普通用户&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> 12. vsql -U username -W password --&amp;gt; &lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> 14. &lt;span class="nb">set&lt;/span> &lt;span class="nv">read_label&lt;/span> &lt;span class="o">=&lt;/span> .. / &lt;span class="nv">write_label&lt;/span> &lt;span class="o">=&lt;/span> .. --&amp;gt; &lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 15. 查询pg_authid，判断read_label/write_label是否合法 &amp;lt;--
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 16. 设置临时的read_label/write_label
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 17. 如何用户未自动设置read_label/write_label，自动根据pgauthid设置
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> 18. INSERT .. --&amp;gt; &lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 19. 查询pg_class，判断表是否有access_policy &amp;lt;--
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 20. 自动为隐藏列赋值，取值为write_label
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">|&lt;/span> 21. SELECT .. --&amp;gt; &lt;span class="p">|&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 22. 查询pg_class，判断表是否有access_policy &amp;lt;--
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 23. 语义分析
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 24. 查询重写：自动新增过滤条件：WHERE has_mac_permission&lt;span class="o">(&lt;/span>access_label, read_label&lt;span class="o">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">|&lt;/span> 24. 计划执行：扫描Tuple，根据过滤条件，过滤不满足权限检查的Tuple
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="122-详细流程">1.2.2 详细流程&lt;/h3>
&lt;h4 id="一创建策略">一、创建策略&lt;/h4>
&lt;p>当用户创建策略时，例如：&lt;/p></description></item><item><title>海量 mac 需求</title><link>https://my-blog.j8465383071.workers.dev/posts/projectdocs/14-requirement-mac/</link><pubDate>Mon, 23 Mar 2026 21:40:00 +0800</pubDate><guid>https://my-blog.j8465383071.workers.dev/posts/projectdocs/14-requirement-mac/</guid><description>&lt;h1 id="1-简介">1 简介&lt;/h1>
&lt;h2 id="11-目的">1.1 目的&lt;/h2>
&lt;p>本文主要包括以下关键内容：&lt;/p>
&lt;ol>
&lt;li>介绍访问控制的基本概念&lt;/li>
&lt;li>调研其他厂商实现强制控制的方式&lt;/li>
&lt;li>设计Vastbase强制访问控制特性，介绍如何使用强制访问特性&lt;/li>
&lt;/ol>
&lt;h2 id="12-适用范围">1.2 适用范围&lt;/h2>
&lt;p>Vastbase V5版本。&lt;/p>
&lt;h2 id="13-术语定义首字母缩写词和缩略语">1.3 术语定义、首字母缩写词和缩略语&lt;/h2>
&lt;ul>
&lt;li>MAC：Mandatory Access Control，强制访问控制，主体访问客体时，基于主体、客体属性，强制控制访问权限。&lt;/li>
&lt;li>DAC：Discretionary Access Control，自主访问控制，数据拥有者可自行设置访问权限。&lt;/li>
&lt;/ul>
&lt;h2 id="14-参考资料">1.4 参考资料&lt;/h2>
&lt;ul>
&lt;li>oracle 强制访问控制（标签访问控制 RLS）：&lt;a href="https://docs.oracle.com/en/database/oracle/oracle-database/26/olsag/part1.html#GUID-C20C62AE-2A30-45F9-AEEA-52A0D3286FBA">https://docs.oracle.com/en/database/oracle/oracle-database/26/olsag/part1.html#GUID-C20C62AE-2A30-45F9-AEEA-52A0D3286FBA&lt;/a>&lt;/li>
&lt;li>oceanbase 强制访问控制（兼容oracle）：&lt;a href="https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004475944">https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004475944&lt;/a>&lt;/li>
&lt;li>kingbase 强制访问控制：&lt;a href="https://bbs.kingbase.com.cn/kingbase-doc/v8.6.7.24/safety/safety-guide/label-and-mac.html">https://bbs.kingbase.com.cn/kingbase-doc/v8.6.7.24/safety/safety-guide/label-and-mac.html&lt;/a>&lt;/li>
&lt;li>dm 强制访问控制：&lt;a href="https://eco.dameng.com/document/dm/zh-cn/pm/mandatory-access-control.html">https://eco.dameng.com/document/dm/zh-cn/pm/mandatory-access-control.html&lt;/a>&lt;/li>
&lt;li>GB/T-20009-数据库管理系统安全评估准则：&lt;a href="https://drive.weixin.qq.com/s?k=AHUAfwdSAA82aDcvvD">https://drive.weixin.qq.com/s?k=AHUAfwdSAA82aDcvvD&lt;/a>&lt;/li>
&lt;li>postgresql 行级访问控制 RLS：&lt;a href="https://www.postgresql.org/docs/current/ddl-rowsecurity.html">https://www.postgresql.org/docs/current/ddl-rowsecurity.html&lt;/a>&lt;/li>
&lt;/ul>
&lt;h1 id="2-强制访问控制">2 强制访问控制&lt;/h1>
&lt;h2 id="21-功能简述">2.1 功能简述&lt;/h2>
&lt;h3 id="一基本概念">一、基本概念&lt;/h3>
&lt;p>&lt;strong>访问控制&lt;/strong>的定义：对主体访问客体的行为，系统按照安全策略进行限制与管理的安全机制。&lt;br>
按安全策略分类，可将访问控制分为很多类，其中，常见的策略有：&lt;/p>
&lt;ul>
&lt;li>自主访问控制DAC：客体的拥有者，可自行向其他主体赋予访问权限。&lt;/li>
&lt;li>强制访问控制MAC：系统为主体、客体分配安全标签，通过主体、客体的安全标签控制访问权限，很多情况下，即使客体的拥有者也无法向其他主体赋予访问权限。&lt;/li>
&lt;li>角色访问控制RBAC：不在本文讨论范围。&lt;/li>
&lt;/ul>
&lt;p>在数据库领域，主体通常指数据库用户，客体通常指数据库对象，例如DATABASE、SCHEMA、TABLE、COLUMN、ROW、FUNCTION等。&lt;br>
自主访问控制比较成熟，几乎所有关系数据库，都提供自主访问控制特性，例如，TABLE（客体）的属主（主体），可通过&lt;code>GRANT .. TO ..&lt;/code>等语法，为其他用户（主体）赋予权限。&lt;br>
强制访问控制理论比较成熟，但是，除oracle支持强制访问控制，以及oceanbase等几款产品兼容oracle强制访问控制之外，大部分关系数据库不支持强制访问控制。&lt;/p>
&lt;p>实现强制访问控制时，通常将主体、客体的安全标签，简化为安全等级，当主体访问客体时，比较主体、客体等级高低，以判断访问权限。在机密性场景，遵循不上读、不下写原则。在完整性场景，遵循不下读、不上写原则。&lt;/p>
&lt;p>本需求将从0设计强制访问控制特性，在保障功能、性能、易用性、可用性、可维护性、可扩展性等的前提下，让特性达到商用标准。&lt;/p>
&lt;h3 id="二竞品分析">二、竞品分析&lt;/h3>
&lt;p>oracle支持强制访问控制，客体是ROW，即行级强制访问控制。oceanbase、kingbase、dm的访问控制，与oracle一致。sql server、postgresql等其他产品不支持强制访问控制。&lt;br>
oracle强制访问控制使用示例如下：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">-- 1 定义策略
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">SA_SYSDBA&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CREATE_POLICY&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">policy_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">column_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;lab_col1&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- 2 定义级别
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">SA_COMPONENTS&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CREATE_LEVEL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">policy_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">level_num&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">short_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">long_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x1&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">SA_COMPONENTS&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CREATE_LEVEL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">20&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x2&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x2&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">SA_COMPONENTS&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CREATE_LEVEL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">30&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x3&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x3&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- 3 定义组件
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">SA_COMPONENTS&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CREATE_LEVEL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">policy_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">comp_num&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">100&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">short_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;sec&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">long_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;security&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">SA_COMPONENTS&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CREATE_LEVEL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">200&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;stg&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;storage&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- 4 创建标签
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">SA_SYSDBA&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CREATE_LABEL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">policy_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">label_tag&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;sec_normal&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">label_value&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x1:security&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">data_label&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TRUE&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">SA_SYSDBA&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">CREATE_LABEL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;sec_leader&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x3:security&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">false&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- 5 为主体设置属性
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">SA_USER_ADMIN&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SET_LEVELS&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">policy_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;user1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">max_level&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x2&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">min_level&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">default_level&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">row_level&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x1&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">SA_USER_ADMIN&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">SET_COMPARTMENTS&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">policy_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;user1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">read_comps&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;sec&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">write_comps&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;sec&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">default_comps&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;sec&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">row_comps&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;sec&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- 6 为客体设置属性
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">c1&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">INT&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">SA_USER_ADMIN&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">APPLY_TABLE_POLICY&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">policy_name&lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">shema_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;s1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">table_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;t1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">table_options&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;READ_CONTROL, WRITE_CONTROL, CHECK_CONTROL&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">label_function&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;f_create_t1_label(level, comp)&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- 7 插入数据（主动定义标签）
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">INSERT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">INTO&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">c1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">lab_col1&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">VALUES&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">CHAR_TO_LABEL&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;p1&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;x1:sec&amp;#39;&lt;/span>&lt;span class="p">));&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="三实现思路">三、实现思路&lt;/h3>
&lt;p>在数据库领域，除oracle外，没有其他可借鉴的方案。oracle的设计，太复杂，易用性太低。&lt;br>
本需求将参考oracle的思想，简化oracle设计。&lt;/p></description></item></channel></rss>