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-调用本机摄像头并预览摄像头图像画面视频
引入架包: <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学习:FastCGI模块(三)缓冲区与响应头 缓存相关的内容占了 FastCGI 模块将近一小半的内容,当然,用过的人可能不多。而今天的内容说实话,我平常也没怎么用过。第一个是缓冲区相关的知识,其实…...
正则表达式(常用字符简单版)
量词 字符类 边界匹配 分组和捕获 特殊字符 字符匹配 普通字符:普通字符按照字面意义进行匹配,例如匹配字母 "a" 将匹配到文本中的 "a" 字符。元字符:元字符具有特殊的含义,例如 \d 匹配任意数字字符…...
从零开始学习Python爬虫:详细指南
导言: 随着互联网的迅速发展,大量的数据可供我们利用。而Python作为一种简单易学且功能强大的编程语言,被广泛应用于数据分析和处理。学习Python爬虫技术,能够帮助我们从互联网上获取数据,并进行有效地分析和利用。本文…...
分布式计算框架:Spark、Dask、Ray
目录 什么是分布式计算 分布式计算哪家强:Spark、Dask、Ray 2 选择正确的框架 2.1 Spark 2.2 Dask 2.3 Ray 什么是分布式计算 分布式计算是一种计算方法,和集中式计算是相对的。 随着计算技术的发展,有些应用需要非常巨大的计算能力才…...
什么是伪类链(Pseudo-class Chaining)?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Pseudo-class Chaining⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚…...
每日一题:leetcode 57 插入区间
给你一个 无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 输入:intervals [[1,3…...
第五节:实现自己的第一个environment
本专栏是强化学习运用在买卖股票之上的入门学习内容。 主要解决强化学习代码落地和代码实践,不需要学习相关数学原理,直观简单的带领读者入门强化学习炒股。 查看本专栏完整内容,请访问:https://blog.csdn.net/windanchaos/category_12391143.html 本文发布地址:https://b…...
无套路,财务数据分析-多组织损益表分析分享
在报表众多的财务数据分析中,损益表是老板们最关注的报表,特别是当有多组织时,损益表的分析就变得更加重要了。以前受限于数据分析工具,做损益表分析时很难做到多维度灵活分析,但随着BI数据可视化工具的发展࿰…...
Java并发编程第6讲——线程池(万字详解)
Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池,本篇文章就详细介绍一下。 一、什么是线程池 定义:线程池是一种用于管理和重用线程的技术(池化技术),它主…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
