
# 应用安全标签
#### 前提条件
数据库正常运行，执行操作的用户需要具有SYSADMIN权限或者继承了内置角色gs_role_seclabel的权限。
#### 背景信息
- 提供系统表pg_seclabel来查看表或表列上的安全标签：
  ```
  SELECT * FROM pg_seclabel;
  ```
  
- 提供系统表pg_shseclabel来查看用户/角色上的安全标签：
  ```
  SELECT * FROM pg_shseclabel;
  ```
  
- 提供系统视图pg_seclabels来查看系统中所有的安全标签记录：
  ```
  SELECT * FROM pg_seclabels;
  ```
  
 
#### 操作步骤
数据库中已有用户user1、user2和数据表tbl。
1. 对用户user1应用安全标签label1，表示用户user1对应的信息等级为公开，范围为二层和四层。 
   ```
   gaussdb=# SECURITY LABEL ON USER user1 is 'label1';
   ```
   
   
2. 对用户user2应用安全标签label3，表示用户user2对应的信息等级为绝密，范围为一层到五层。 
   ```
   gaussdb=# SECURITY LABEL ON USER user2 is 'label3';
   ```
   
   
3. 对表tbl应用安全标签label2，表示表tbl对应的信息等级为秘密，范围为二层到四层。 
   ```
   gaussdb=# SECURITY LABEL ON TABLE tbl is 'label2';
   ```
   
   
4. 查询系统视图pg_seclabels。 
   ```
   gaussdb=# SELECT * FROM pg_seclabels;
   ```
   查询结果如下：
   ```
   gaussdb=# SELECT * FROM pg_seclabels;
    objoid | classoid | objsubid | objtype | objnamespace | objname | provider | label
   --------+----------+----------+---------+--------------+---------+----------+--------
     16399 |     1259 |        0 | table   |         2200 | tbl     | maclabel | label2
     16391 |     1260 |        0 | role    |              | user1   | maclabel | label1
     16395 |     1260 |        0 | role    |              | user2   | maclabel | label3
   (3 rows)
   ```
   
   
 
