知识大全 企业内部网中使用Policy文件来设置Java的安全策略
Posted 文件
篇首语:书史足自悦,安用勤与劬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 企业内部网中使用Policy文件来设置Java的安全策略相关的知识,希望对你有一定的参考价值。
企业内部网中使用Policy文件来设置Java的安全策略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
众所周知 Java语言具有完善的安全框架 从编程语言 编译器 解释程序到Java虚拟机 都能确保Java系统不被无效的代码或敌对的编译器暗中破坏 基本上 它们保证了Java代码按预定的规则运作 但是 当我们需要逾越这些限制时 例如 读写文件 监听和读写Socket 退出Java系统等 就必须使用数字签名或安全策略文件(* Policy) 在企业内部网中 本文提出了使用安全策略文件来设置java程序权限的一种简单的方法 由于企业内部网中各台计算机的位置 用途和安全性明确 更适于使用安全策略文件来设置java的权限 软件的安装 设置 升级和迁移都非常的方便 并且 还可以和数字签名配合使用 更重要的是 可以细分每个java程序的权限 使用起来灵活方便 一 Java中安全策略的概念 Java应用程序环境的安全策略 详细说明了对于不同的代码所拥有的不同资源的许可 它由一个Policy对象来表达 为了让applet(或者运行在SecurityManager下的一个应用程序)能够执行受保护的行为 例如读写文件 applet(或Java应用程序)必须获得那项操作的许可 安全策略文件就是用来实现这些许可 Policy对象可能有多个实体 虽然任何时候只能有一个起作用 当前安装的Policy对象 在程序中可以通过调用getPolicy方法得到 也可以通过调用setPolicy方法改变 Policy对象评估整个策略 返回一个适当的Permissions对象 详细说明那些代码可以访问那些资源 策略文件可以储存在无格式的ASCII文件 或Policy类的二进制文件 或数据库中 本文仅讨论无格式的ASCII文件的形式 二 Policy文件的格式 为了能够更好地理解下面的内容 建议在阅读时参照\\jdk \\jre\\lib\\security\\java policy文件和\\jdk \\jre\\lib\\security\\java security文件的内容 . Policy文件的语法格式与说明 一个Policy文件实质上是一个记录列表 它可能含有一个 keystore 记录 以及含有零个或多个 grant 记录 其格式如下 keystore some_keystore_url keystore_type ; grant [SignedBy signer_names ] [ CodeBase URL ] Permission permission_class_name [ target_name ] [ action ] [ SignedBy signer_names ]; Permission ; keystore 记录 一个keystore是一个私有密钥(private keys)数据库和相应的数字签名 例如X 证书 Policy文件中可能只有一条keystore记录(也可能不含有该记录) 它可以出现在文件中grant记录以外的任何地方 Policy配置文件中指定的keystores用于寻找grant记录中指定的 签名者的公共密钥(public keys) 如果任何grant记录指定签名者(signer_names) 那么 keystore记录必须出现在policy配置文件中 some_keystore_url 是指keystore的URL位置 keystore_type 是指keystore的类型 第二个选项是可选项 如果没有指定 该类型则假定由安全属性文件(java security)中的 keystore type 属性来确定 keystore类型定义了keystore信息的存储和数据格式 用于保护keystore中的私有密钥和keystore完整性的算法 Sun Microsystems支持的缺省类型为 JKS grant 记录 在Policy文件中的每一个grant记录含有一个CodeSource(一个指定的代码)及其permission(许可) Policy文件中的每一条grant记录遵循下面的格式 以保留字 grant 开头 表示一条新的记录的开始 Permission 是另一个保留字 在记录中用来标记一个新的许可的开始 每一个grant记录授予一个指定的代码(CodeBase)一套许可(Permissions) permission_class_name必须是一个合格并存在的类名 例如java io FilePermission 不能使用缩写(例如 FilePermission) target_name用来指定目标类的位置 action用于指定目标类拥有的权限 target_name可以直接指定类名(可以是绝对或相对路径) 目录名 也可以是下面的通配符 directory/* 目录下的所有文件 *当前目录的所有文件 directory/ 目录下的所有文件 包括子目录 当前目录下的所有文件 包括子目录 《ALL FILES》文件系统中的所有文件 对于java io FilePermission action可以是 read write delete和execute 对于 SocketPermission action可以是 listen accept connect read write Policy文件中的属性扩展(Property Expansion) 属性扩展与shell中使用的变量扩展类似 它的格式为 $some property 实际使用的例子为 permission java io FilePermission $user home read ; $user home 的值为 d:\\Project 因此 下面的语句和上面的语句是一样的 permission java io FilePermission d:\\Project read ; 三 实例 当初始化Policy时 首先装载系统Policy 然后再增加用户Policy 如果两者都不存在 则使用缺省的Policy 即原始的沙箱模型 系统Policy文件的缺省位置为 java home/lib/security/java policy (Solaris) java home\\lib\\security\\java policy (Windows) 用户Policy文件的缺省位置为 user home/ java policy (Solaris) user home\\ java policy (Windows) 其实 在实际使用中 我们可能不会象上面介绍的那么复杂 特别是在不使用数字签名时 这时 我们完全可以借鉴JDK 提供给我们的现成的\\jdk \\jre\\lib\\security\\java policy文件 根据我们的需要作相应的修改 本文就针对不使用数字签名情况详细说明安全策略文件的用法 下面 是一个完整的在Windows / /NT下使用的 java policy文件 在文件中 分别使用注释的形式说明了每个 permission 记录的用途 // For LanServerTalk java and LanClientTalk java grant //对系统和用户目录 读 的权限 permission java util PropertyPermission user dir read ; permission java util PropertyPermission user home read ; permission java util PropertyPermission java home read ; permission java util PropertyPermission java class path read ; permission java util PropertyPermission user name read ; //对线程和线程组的操作权限 permission java lang RuntimePermission modifyThread ; permission java lang RuntimePermission modifyThreadGroup ; //操作Socket端口的各种权限 permission SocketPermission listen ; permission SocketPermission accept ; permission SocketPermission connect ; permission SocketPermission read ; permission SocketPermission write ; //读写文件的权限 permission java io FilePermission read ; permission java io FilePermission write ; //退出系统的权限 例如System exit( ) permission java lang RuntimePermission exitVM ; ; 四 java policy文件的使用 对于windows / /NT 使用 java policy文件的方法主要有下面两种 . 使用缺省目录 我们可以简单地将编辑好的 java policy文件拷贝到windows / /NT的HOME目录 这时 所有的applet(或Java应用程序)可能都拥有某些相同的权限 使用起来简单 但不灵活(例如 对于java io FilePermission 其目标类的target_name必须使用绝对路径) 如果不是在企业内部网中使用 还可能存在一定安全隐患 . 在命令行中指定 在命令行 如果我们希望传递一个Policy文件给appletviewer 还可以使用 J Djava security policy 参数来指定policy的位置 appletviewer J Djava security policy=pURL myApplet pURL为Policy文件的位置 下面 是一个实际的例子 以当前目录的 java policy文件所指定的安全策略运行当前目录的l(文件中装载并运行LanServerTalk java) appletviewer J Djava security policy = java policy l 这种方法使用灵活 特别是作为一个软件包在企业内部网中发布时 安装 设置和迁移软件 基本无须修改Policy文件的内容 使用起来相当简单 而且 安全许可的范围控制较精细 cha138/Article/program/Java/gj/201311/27317相关参考
有时候我们需要将读取文件的内容到一个byte[]数组中然后对这个数组进行一些修改这时我们可以借助于ByteArrayOutputStream这个类来实现 ByteArrayOutputStrea
使用eclipse进行开发时在编译JAVA代码时的原则是对于源代码目录中的所有*java文件编译成同名的*class文件而对于如abcjava中的内部类C编译成abc$Cclass对于所有非jav
企业内部的行为规范是企业安全承诺的具体体现和安全文化建设的()要求。
电力安全生产知识竞赛题:企业内部的行为规范是企业安全承诺的具体体现和安全文化建设的()要求。A、目标B、成果C、基础D、规范正确答案:C
企业内部的行为规范是企业安全承诺的具体体现和安全文化建设的()要求。
电力安全生产知识竞赛题:企业内部的行为规范是企业安全承诺的具体体现和安全文化建设的()要求。A、目标B、成果C、基础D、规范正确答案:C
哪两方面的代表组成企业内部的安全委员会?。A.雇主及安全专业人士B.雇员及政府官员C.雇主及雇员【参考答案】C[拓展知识]下列哪一种方法可鉴定企业的安全管理表现?A.查看安全委员会的会议记录B.风险评
哪两方面的代表组成企业内部的安全委员会?。A.雇主及安全专业人士B.雇员及政府官员C.雇主及雇员【参考答案】C[拓展知识]下列哪一种方法可鉴定企业的安全管理表现?A.查看安全委员会的会议记录B.风险评
JAVA中使用内部类与匿名内部类实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JAVA中对
按《企业事业单位内部治安保卫条例》规定,下列选项中,公安机关对本行政区域内单位内部治安保卫工作应履行的职责不包括()。
电力安全生产知识竞赛题:按《企业事业单位内部治安保卫条例》规定,下列选项中,公安机关对本行政区域内单位内部治安保卫工作应履行的职责不包括()。A、指导单位制定、完善内部治安保卫制度,落实治安防范措施,
按《企业事业单位内部治安保卫条例》规定,下列选项中,公安机关对本行政区域内单位内部治安保卫工作应履行的职责不包括()。
电力安全生产知识竞赛题:按《企业事业单位内部治安保卫条例》规定,下列选项中,公安机关对本行政区域内单位内部治安保卫工作应履行的职责不包括()。A、指导单位制定、完善内部治安保卫制度,落实治安防范措施,
众所周知Oracle的数据是储存在数据文件中的那么Oracle是以什么格式来储存数据的呢?相信大家都对其内部结构很感兴趣这篇文章就帮大家来了解Oracle数据文件的内部结构我们知道数据库储存的最小