当前位置: 首页 > news >正文

Oracle创建控制列表ACL(Access Control List)

Oracle创建控制列表ACL(Access Control List)

  • Oracle ACL简介
  • 一、先登陆163邮箱设置开启SMTP。
  • 二、Oracle ACL控制列表处理
    • (一)创建ACL(create_acl)
    • (二)添加ACL权限(add_privilege)
    • (三)分配ACL权限给哪些服务器使用(assign_acl)
    • (四)取消分配一个ACL权限(unassign_acl)
    • (五)删除ACL控制列表(drop_acl)
    • (六)如何查询ACL相关
      • 6.1、查询Oracle ACL控制列表清单:dba_network_acls视图
      • 6.2、查询Oracle ACL授权清单:dba_network_acl_privileges视图
    • (七)如何测试,运行存储过程。
      • 7.1、执行SQL匿名块
      • 7.2、执行情况
      • 7.3、查看邮箱


Oracle ACL简介

  • 在Oracle11g中,Oracle在安全方面有了很多的改进,而在网络权限控制方面,也有一个新的概念提出来,叫做ACL(Access Control List), 这是一种细粒度的权限控制。在ACL之前,我们对于有一些程序包,例如UTL_MAIL, UTL_SMTP等这些包,你可以利用这些包连接到外部的主机,而默认情况下,这些包都是都是赋予了public角色,所以可能会导致利用这些PL/SQL程序包的恶意工具,所以Oracle提出了一个新的概念来解决这个问题,那就是ACL。
  • 在开始展开ACL之前,首先明确一些概念。 ACL这个概念不是Oracle首先提出来的,在很多地方的权限管理都用到了ACL,甚至在操作系统上也使用了ACL。一般,我们在做权限管理时,牵扯到一个问题,就是谁要在什么对象上作什么?这个正是对应了我们ACL中的概念。Principal will have what privileges on what object.谁就是principal, 什么对象就是我们的object, 做什么就是我们的privilege。那么如果有了这种细粒度的权限控制,我们就可以定义我们哪些用户拥有哪个远程主机的什么权限了。有了这个概念我们就可以看看如何使用ACL了。我们主要使用的是DBMS_NETWORK_ACL_ADMIN这个自带的包来完成。

一、先登陆163邮箱设置开启SMTP。

如何得到上面登录SMTP服务器的密码
我们这里以 163 邮箱为例
首先登录到163邮箱,点击[设置],然后点击设置下面的[POP3/SMTP/IMAP]
然后看左边的SideBar,点击[客户端授权密码]
最后在右边的页面中按照操作要求设置该邮箱的客户端授权码(登录SMTP服务器的密码)

二、Oracle ACL控制列表处理

(一)创建ACL(create_acl)

使用 DBMS_NETWORK_ACL_ADMIN包的CREATE_ACL函数 创建访问控制列表ACL(ACL)
执行下面的SQL:

BEGINdbms_network_acl_admin.create_acl(acl         => 'email_server_permissions.xml',description => 'Enables network permissions for the e-mail server',principal   => 'LOG' -- 表示赋予权限给哪个用户,is_grant    => TRUE,privilege   => 'connect',start_date  => NULL,end_date    => NULL);COMMIT;
END;

(二)添加ACL权限(add_privilege)

接下来,为该 ACL 增加一个权限:在本示例中,您将尝试将该 ACL 局限于用户 LOG 您还可以定义开始和结束日期。

BEGINdbms_network_acl_admin.add_privilege(acl => 'email_server_permissions.xml',principal => 'LOG' -- 表示赋予权限给哪个用户,is_grant => TRUE,privilege => 'connect',start_date => NULL,end_date => NULL);
END;

(三)分配ACL权限给哪些服务器使用(assign_acl)

分配将受该 ACL 制约的主机以及其他详细信息,使用DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL 将此 ACL 与邮件服务器相关联
执行下列SQL:

BEGINdbms_network_acl_admin.assign_acl(acl => 'email_server_permissions.xml',host => 'smtp.163.com' -- SMTP服务器地址,lower_port => 25 -- 端口,upper_port => NULL);COMMIT;
END;

(四)取消分配一个ACL权限(unassign_acl)

把上一步的授权删除,可以用下列SQL语句实现:

BEGINdbms_network_acl_admin.unassign_acl(acl => 'email_server_permissions.xml',host => 'smtp.163.com' -- SMTP服务器地址,lower_port => 25 -- 端口,upper_port => NULL);COMMIT;
END;

(五)删除ACL控制列表(drop_acl)

BEGINdbms_network_acl_admin.drop_acl(acl => 'email_server_permissions.xml');COMMIT;
END;
/

(六)如何查询ACL相关

6.1、查询Oracle ACL控制列表清单:dba_network_acls视图

SELECT host,lower_port,upper_port,aclFROM dba_network_acls;

查询结果:
在这里插入图片描述

6.2、查询Oracle ACL授权清单:dba_network_acl_privileges视图

SELECT acl,principal,privilege,is_grant,to_char(start_date,'yyyy-mon-dd') AS start_date,to_char(end_date,'dd - mon - yyyy') AS end_dateFROM dba_network_acl_privileges;

查询结果:
在这里插入图片描述

(七)如何测试,运行存储过程。

7.1、执行SQL匿名块

测试是否能成功发邮件,执行下面的SQL:

BEGINsend_mail('tttzzzqqq@qq.com','测试邮件','来自plsql');
END;

注意:发送邮件的存过send_mail(),请看这篇博文:Oracle触发器发送邮件

7.2、执行情况

在这里插入图片描述
点“输出”查看结果:
在这里插入图片描述

7.3、查看邮箱

在这里插入图片描述
我们发现,可以收到消息。


至此,Oracle创建控制列表ACL(Access Control List)就给大家演示完了,有问题欢迎留言或私信!谢谢大家!

相关文章:

Oracle创建控制列表ACL(Access Control List)

Oracle创建控制列表ACL(Access Control List) Oracle ACL简介一、先登陆163邮箱设置开启SMTP。二、Oracle ACL控制列表处理(一)创建ACL(create_acl)(二)添加ACL权限(add_…...

3D模型转换工具HOOPS Exchange助力打造虚拟现实应用程序

挑战: 支持使用各种 CAD 系统和 CAD 文件格式的客户群向可视化硬件提供快速、准确的数据加载提供对详细模型信息的访问,同时确保高帧率性能 解决方案: HOOPS Exchange领先的CAD数据转换工具包 结果: 确保支持来自领先工程软件…...

python web GUI框架-NiceGUI 教程(二)

python web GUI框架-NiceGUI 教程(二) streamlit可以在一些简单的场景下仍然推荐使用,但是streamlit实在不灵活,受限于它的核心机制,NiceGUI是一个灵活的web框架,可以做web网站也可以打包成独立的exe。 基…...

RT_Thread内核机制学习(二)

对于RTT来说,每个线程创建时都自带一个定时器 rt_err_t rt_thread_sleep(rt_tick_t tick) {register rt_base_t temp;struct rt_thread *thread;/* set to current thread */thread rt_thread_self();RT_ASSERT(thread ! RT_NULL);RT_ASSERT(rt_object_get_type(…...

线性代数的学习和整理12: 矩阵与行列式,计算上的差别对比

目录 1 行列式和矩阵的比较 2 简单总结矩阵与行列式的不同 3 加减乘除的不同 3.1 加法不同 3.2 减法不同 3.3 标量乘法/数乘 3.3.1 标准的数乘对比 3.3.2 数乘的扩展 3.4 乘法 4 初等线性变换的不同 4.1 对矩阵进行线性变换 4.2 对行列式进行线性变换 1 行列式和…...

2023年MySQL核心技术面试第一篇

目录 一 . 存储:一个完整的数据存储过程是怎样的? 1.1 数据存储过程 1.1.1 创建MySQl 数据库 1.1.1.1 为什么我们要先创建一个数据库,而不是直接创建数据表? 1.1.1.2基本操作部分 1.2 选择索引问题 二 . 字段:这么多的…...

linux启动jar 缺失lib

linux启动jar包时,找不到报错 [rootebs-141185 xl-admin]# java -Djava.library.path/home/kabangke/xl-admin/lib -jar /home/kabangke/xl-admin/xl-admin.jar Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/web/se…...

【Bash】常用命令总结

文章目录 1. 文件查询1.1 查看文件夹内(包含子文件夹)文件数量1.2 查看文件夹大小 任务简介: 对bash常用命令进行总结。 任务说明: 对平时工作中使用bash的相关命令做一个记录和说明,方便以后查阅。 1. 文件查询 1.…...

小研究 - Java虚拟机性能及关键技术分析

利用specJVM98和Java Grande Forum Benchmark suite Benchmark集合对SJVM、IntelORP,Kaffe3种Java虚拟机进行系统测试。在对测试结果进行系统分析的基础上,比较了不同JVM实现对性能的影响和JVM中关键模块对JVM性能的影响,并提出了提高JVM性能的一些展望。…...

Repo manifests默认default.xml清单文件中的各个标签详解

Repo简介 “Repo” 是一个用于管理多个Git存储库的工具,通常与Google的Android开发项目一起使用。它允许您在一个命令下轻松地进行多个Git存储库的同步、下载和管理。 repo下载安装 从清华镜像源下载 mkdir ~/bin PATH~/bin:$PATH curl https://mirrors.tun…...

javacv基础02-调用本机摄像头并预览摄像头图像画面视频

引入架包&#xff1a; <dependency><groupId>org.openpnp</groupId><artifactId>opencv</artifactId><version>4.5.5-1</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId…...

【Nginx21】Nginx学习:FastCGI模块(三)缓冲区与响应头

Nginx学习&#xff1a;FastCGI模块&#xff08;三&#xff09;缓冲区与响应头 缓存相关的内容占了 FastCGI 模块将近一小半的内容&#xff0c;当然&#xff0c;用过的人可能不多。而今天的内容说实话&#xff0c;我平常也没怎么用过。第一个是缓冲区相关的知识&#xff0c;其实…...

正则表达式(常用字符简单版)

量词 字符类 边界匹配 分组和捕获 特殊字符 字符匹配 普通字符&#xff1a;普通字符按照字面意义进行匹配&#xff0c;例如匹配字母 "a" 将匹配到文本中的 "a" 字符。元字符&#xff1a;元字符具有特殊的含义&#xff0c;例如 \d 匹配任意数字字符&#xf…...

从零开始学习Python爬虫:详细指南

导言&#xff1a; 随着互联网的迅速发展&#xff0c;大量的数据可供我们利用。而Python作为一种简单易学且功能强大的编程语言&#xff0c;被广泛应用于数据分析和处理。学习Python爬虫技术&#xff0c;能够帮助我们从互联网上获取数据&#xff0c;并进行有效地分析和利用。本文…...

分布式计算框架:Spark、Dask、Ray

目录 什么是分布式计算 分布式计算哪家强&#xff1a;Spark、Dask、Ray 2 选择正确的框架 2.1 Spark 2.2 Dask 2.3 Ray 什么是分布式计算 分布式计算是一种计算方法&#xff0c;和集中式计算是相对的。 随着计算技术的发展&#xff0c;有些应用需要非常巨大的计算能力才…...

什么是伪类链(Pseudo-class Chaining)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Pseudo-class Chaining⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚…...

每日一题:leetcode 57 插入区间

给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表。 在列表中插入一个新的区间&#xff0c;你需要确保列表中的区间仍然有序且不重叠&#xff08;如果有必要的话&#xff0c;可以合并区间&#xff09;。 示例 1&#xff1a; 输入&#xff1a;intervals [[1,3…...

第五节:实现自己的第一个environment

本专栏是强化学习运用在买卖股票之上的入门学习内容。 主要解决强化学习代码落地和代码实践,不需要学习相关数学原理,直观简单的带领读者入门强化学习炒股。 查看本专栏完整内容,请访问:https://blog.csdn.net/windanchaos/category_12391143.html 本文发布地址:https://b…...

无套路,财务数据分析-多组织损益表分析分享

在报表众多的财务数据分析中&#xff0c;损益表是老板们最关注的报表&#xff0c;特别是当有多组织时&#xff0c;损益表的分析就变得更加重要了。以前受限于数据分析工具&#xff0c;做损益表分析时很难做到多维度灵活分析&#xff0c;但随着BI数据可视化工具的发展&#xff0…...

Java并发编程第6讲——线程池(万字详解)

Java中的线程池是运用场景最多的并发框架&#xff0c;几乎所有需要异步或并发执行任务的程序都可以使用线程池&#xff0c;本篇文章就详细介绍一下。 一、什么是线程池 定义&#xff1a;线程池是一种用于管理和重用线程的技术&#xff08;池化技术&#xff09;&#xff0c;它主…...

Gauge常见问题解决:10个典型错误及修复方法

Gauge常见问题解决&#xff1a;10个典型错误及修复方法 【免费下载链接】gauge Light weight cross-platform test automation 项目地址: https://gitcode.com/gh_mirrors/ga/gauge Gauge作为一款轻量级跨平台测试自动化工具&#xff0c;在使用过程中可能会遇到各种错误…...

前端测试:别让你的代码在上线后崩溃

前端测试&#xff1a;别让你的代码在上线后崩溃 毒舌时刻这代码写得跟定时炸弹似的&#xff0c;不知道什么时候就炸了。各位前端同行&#xff0c;咱们今天聊聊前端测试。别告诉我你还在手动测试&#xff0c;那感觉就像在没有安全网的情况下走钢丝——能走&#xff0c;但随时可能…...

HIL测试入门避坑指南:从CANoe配置到故障注入的完整踩坑实录

HIL测试实战避坑手册&#xff1a;从零搭建车窗ECU测试台架的12个关键陷阱 第一次接触HIL测试时&#xff0c;我盯着实验室里那些闪烁的指示灯和缠绕的线缆&#xff0c;仿佛面对着一个未知的宇宙。作为车载测试领域最具挑战性的环节之一&#xff0c;HIL测试既是验证ECU可靠性的终…...

解决NextCloud无法挂载SMB/CIFS共享:smbclient缺失的完整安装指南

1. 为什么NextCloud需要smbclient支持 如果你正在使用NextCloud搭建私有云存储&#xff0c;可能会遇到一个常见问题&#xff1a;无法挂载SMB/CIFS共享存储。这个问题通常会在管理后台的"外部存储"设置页面出现错误提示&#xff0c;核心原因就是缺少smbclient组件。 S…...

当柔性车间遇上强化学习:从传统规则到DRL的调度进化史

柔性车间调度的智能革命&#xff1a;深度强化学习如何重塑制造业决策 在当今快节奏、定制化需求激增的制造业环境中&#xff0c;传统的生产调度方法正面临前所未有的挑战。想象一下&#xff0c;一个典型的电子设备制造车间&#xff1a;数百种不同规格的订单不断涌入&#xff0c…...

终极指南:如何将Kubernetes metrics-server日志高效导出到S3与GCS

终极指南&#xff1a;如何将Kubernetes metrics-server日志高效导出到S3与GCS 【免费下载链接】metrics-server Scalable and efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines. 项目地址: https://gitcode.com/gh_mirrors/me…...

SQL视图实战:5个真实业务场景下的数据视图应用案例(附代码)

SQL视图实战&#xff1a;5个真实业务场景下的数据视图应用案例&#xff08;附代码&#xff09; 在数据驱动的业务环境中&#xff0c;SQL视图&#xff08;View&#xff09;就像给数据库操作装上了"快捷方式"按钮。想象一下&#xff0c;当市场部门需要实时销售数据时&a…...

leetcode 1540. K次操作转变字符串-耗时95-Can Convert String in K Moves

Problem: 1540. Can Convert String in K Moves 耗时95%&#xff0c;统计差值的余数的频次&#xff0c;相同余数满足等差数列&#xff0c;若不满足【余数 26 * ( 频次 - 1 ) < k】则返回false 最后返回true Code class Solution { public:bool canConvertString(string …...

Attention Unet vs Unet++:在Camvid数据集上的性能对比实验

Attention Unet与Unet在Camvid数据集上的深度性能评测 语义分割作为计算机视觉领域的核心任务之一&#xff0c;其模型架构的创新从未停止。在众多改进方案中&#xff0c;Attention机制与嵌套跳跃连接&#xff08;Nested Skip Connection&#xff09;分别代表了两种不同的优化思…...

如何利用Outline构建现代化团队知识管理体系

如何利用Outline构建现代化团队知识管理体系 【免费下载链接】outline Outline 是一个基于 React 和 Node.js 打造的快速、协作式团队知识库。它可以让团队方便地存储和管理知识信息。你可以直接使用其托管版本&#xff0c;也可以自己运行或参与开发。源项目地址&#xff1a;ht…...