oracle数据库控制已建表在不同用户下拥有不同权限

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle数据库控制已建表在不同用户下拥有不同权限相关的知识,希望对你有一定的参考价值。

小弟目前遇到问题请朋友们帮忙
我已经建立N张代码表,
要求对这些代码表区分权限,
要求a表在x用户下能增删改,在y用户下只能查询,
要求b表在x用户下只能查询,在y用户下能增删改。
给个思路吧, 有点茫然。
多谢

分别给每个用户分配不同的权限。例如要求a表在x用户下能增删改,在y用户下只能查询,
grant update on a to x;
grant insert on a to x;
grant delete on a to x;
grant select on a to y;
或者你建立两个角色,然后去分配角色追问

能给讲讲 怎么建立角色,和分配角色吗?

追答

和权限是一样的,创建一个角色,然后给这个角色赋予权限,最后再把这个角色赋予给用户。看你这个问题用角色不太好处理,还是一个一个的分配吧

追问

我能给用户付角色, 我好像不能给角色付 增删改 吧,

追答

可以啊,和给用户赋予权限一样的。grant update on a to roles1

追问

你好,麻烦你,我按你的方法试了,grant select on a to x; 在x用户下可以查a表,
revoke select on a from x; 无效还是能查寻a表, 不知道是什么原因, 跪求!!!

追答

退出session,然后再进入

参考技术A grant update on a to x;
grant delete on a to x;
grant select on a to x;
grant insert on a to x;
grant select on a to y;
grant select on b to x;
grant update on b to y;
grant delete on b to y;
grant insert on b to y;追问

你好,麻烦你,我按你的方法试了,grant select on a to x; 在x用户下可以查a表,
revoke select on a from x; 执行成功, 但plsql退出重进查寻a表还是能查, 不知道是什么原因, 跪求!!!

参考技术B 直接受权就行了啊。
grant update on a to x;
grant insert on a to x;
grant delete on a to x;
grant select on a to y;追问

你好,麻烦你,我按你的方法试了,grant select on a to x; 在x用户下可以查a表,
revoke select on a from x; 执行成功, 但plsql退出重进查寻a表还是能查, 不知道是什么原因, 跪求!!!

使用kibana给不同的用户创建不同的space

Elastic安全机制

在很多的情况下,出于安全的原因,我们需要对不同的Kibana用户分配不同的用户权限,这样使得他们之间不能互相访问彼此的资源,同
时他们也应该对不同的索引拥有不同的权限,比如读,写,管理等等。Elastic Security通过基于角色的功能提供授权存取控制(RBAC-
Role Based Access Control)。

一个用户可拥有不同的role,并且每一个role都含有不同操作权限。使用RBAC,您可以控制访问通过定义:

  • users:创建具有不同的属性的账号(username, full name,邮件,及相应的roles)
  • roles:分配一组命名权限,Elasticsearch里含有有多个内置角色
  • resources:限制访问的实体,比如document或一个索引
  • privileges:代表一个或多个动作的命名组可以在资源上执行
  • permissions:应用于一个特权的一组一个或多个特权或更多资源

什么是Space(空间)?
通过Space可以组织仪表板和其他将对象保存到有意义的类别中。在默认的情况下这个功能是启动的。可以在elasticsearch.yml文件中进
行配置:

xpack.spaces.enabled: false

上面的配置将使得这个功能被取消。

在一个空间内创建的对象只能从该空间进行访问。启用安全性后,您可以控制哪个用户拥有访问哪些空间。来自特定空间的已保存对象将
被标记为在该空间的对象。

在默认的情况下,Kibana在启动时帮我们创建一个名字叫做Default的空间。当我们从一个没有空间的版本升级后,那么所有
的visualization将会被存于Default的空间里。当我们创建一个Space时,它只需要一个名字,它被用来生产URL识别符,我们还可以加入
一些描述符。

准备工作

  1. 安装好elasticsearch和kibana

  2. 开启x-pack,并设置好默认用户的密码等

  3. 登录kibana界面

  4. 创建space

    4.1 点击左上角的Space空间,默认是Defalut,点击“Manage Sapce”。进入到Space界面后,点击右上角的“Create a space”.输入名称,然后点击“Create space”.

    如下图所示:

技术图片

4.2 同样操作创建另一个space,如下图所示:

技术图片

4.3 最终显示界面信息:

技术图片

  1. 创建角色Role

    5.1 点击“Management”,再点击“Security”下面的“Roles”,点击右上角的“Create role”,操作步骤如下图所示:

技术图片

技术图片

技术图片

5.2 创建另一个角色test2,操作步骤同上,效果如下:

技术图片

技术图片

  1. 创建用户。点击“Management”,再点击“Security”下面的“Users”,点击右上角的“Create user”,按步骤创建就行了,选择上一步创建的角色,最终效果如下:

技术图片

技术图片

  1. 点击右上角的space,切换到Test1这个space

技术图片

然后点击“Dev Tools”工具,在这个Test1 space下创建一个索引test1:

```
PUT /test1/_doc/1
{
  "name":"test1"
}
```



**注意:我这边是先创建的role管理的索引,后创建的索引,注意索引名称**

然后回到“Management”下的“Kibana”的“Index Patterns”,创建一个索引模式,输入的时候会提示有test1和test2,但是我们只选择test1,最终效果如下:

技术图片

然后再点击右上角的space,切换到Test2这个space,按照上述步骤,创建一个索引test2:

```
PUT /test2/_doc/1
{
  "name":"test2"
}
```

然后回到“Management”下的“Kibana”的“Index Patterns”,创建一个索引模式,输入的时候会提示有test1和test2,但是我们只选择test2,最终效果如下:

技术图片

  1. 然后点击左边导航第一个“Discover”,会发现,在test1这个space下只能看到test1*, 在test2这个space下只能看到test2*,在default这个默认的space下看不到任何索引。

总结:深刻理解这句话:在一个空间内创建的对象只能从该空间进行访问

若是已有索引模式,则可以先删除索引模式,然后创建space,创建角色,创建用户等,切换到创建的space,再创建索引模式。也就是说需要在这个space下进行操作才行。

以上是关于oracle数据库控制已建表在不同用户下拥有不同权限的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 同义词

mysql 如何在用户下建表,在数据库实例中可以建表,但是我在自己建的用户下却看不到。我以前使用oracle。

如何通过 JDBC 获取 Oracle 表中的所有索引,即使它们由不同的用户拥有?

权限菜单设计

mysql建表语句是怎样的?与Oracle有何不同?

oracle修改表的表空间