1、第六章 通讯与安全龚 斌山东大学计算机科学与技术学院山东省高性能计算中心WS-Security(Web Service Security)Web services 由WSDL(Web Services Description Language)进行描述 处理由XML编码的SOAP 信息 在 HTTP之上传递 被广泛部署的分布式服务 web services 是当今商业界的热点 WS-Security为 Web services提供安全保证 its first roadmaps and draft specifications have been published in April 2002
2、by IBM,Microsoft and Verisign.Standardisation activity has been transferred to the OASIS-Open consortium.Web Services Security 1.0 is now an OASIS standard.Seeing:http:/www.oasis-open.org/committees/wss/WS-Security WS-Security模型非常复杂 每个参与端点需要表示在与其它端点进行安全会话时所希望应用的安全策略 指定所支持的认证机制 所必需的数据完整性和机密性 信任策略,pri
3、vacy policies,及其它的安全约束 基于已有的安全模型(Kerberos,PKI,等)基于XML 和 安全协议WS-SecurityGrid Security Infrastructure(GSI)Grid Security Infrastructure(GSI)属于The Globus Project 由Argonne National Laboratory和USA Information Sciences Institute联合研发 是Globus Toolkit中的安全功能模块,为系统提供安全支持 相关链接:http:/www.globus.org/security/Globu
4、s Security:The Grid Security Infrastructure GSI是Globus为用户和应用程序提供用来安全地访问网格资源的一组工具、类库和协议 基于公钥加密技术,X.509证书,和SSL通信协议 对这些标准进行了扩展,以能够进行单一登录和授权代理 GSI的实现遵循GSS-API GSS-API是由IETF所提出的通用安全服务API(Generic Security Service API)Grid Security Infrastructure(GSI)GSI is:PKI(CAs andCertificates)SSL/TLSProxies and Delega
5、tionPKI forcredentialsSSL forAuthenticationAnd message protectionProxies and delegation(GSIExtensions)for secure singleSign-onGrid Security Infrastructure(GSI)GSI能够提供的安全功能 安全认证 通信加密 私钥保护 委托授权 单一登录 安全认证 安全认证是对请求者和接受者双方的身份进行验证的一个过程,是在SSL上进行的 一个成功的安全认证,将 校验一个请求连接的合法性 为其后的双方通信提供一个会话密钥 GSI的安全认证是基于用户的私钥创建
6、一个代理,从而为用户提供认证方法。用户如果没有创建这个代理,就不能提交作业,也不能传输数据通信加密 GSI 用数字证书进行相互认证,并通过 SSL/TLS 实现对数据的加密,以保证通信的安全 Globus Toolkit 中包含 OpenSSL,用于在网格客户机和服务器之间创建加密的管道 通信加密是在安全认证之后,由认证的双方产生一个会话密钥,通过这个会话密钥加密通信通道主机证书和私钥的存储和保护/etc/grid-security hostcert.pem:在相互认证过程中,服务器所使用的证书 hostkey.pem:与服务器证书相对应的私钥(read-only by root)/etc/g
7、rid-security/certificates CA certificates:在校验证书时,被信任的CA证书 ca-signing-policy.conf:定义了一些CA签发证书的策略用户证书和私钥的存储与保护$HOME/.globus usercert.pem:用户的证书(证书中包含的信息有subject name,public key,CA signature,等)userkey.pem:与用户证书相对应的私钥(私钥由用户的口令进行加密保护)/tmp Proxy file(s):用户所签发的代理证书,这是一些临时存储的文件,包含了未加密保护的代理私钥和证书(readable only
8、 by users account)委托授权 当用户与服务器认证成功后,将被委托授权 通过将用户DN号(唯一的证书主体名称)映射到本地用户账号 grid-mapfile:将grid subject names 映射到本地用户账号的文件(存储在/etc/grid-security目录下)通过映射,网格用户的作业将由这个本地用户根据自己的权限处理Gridmap File实例#Distinguished name Local username/C=US/O=Globus/O=NPACI/OU=SDSC/CN=Rich Gallup”rpg/C=US/O=Globus/O=NPACI/OU=SDSC/
9、CN=Richard Frost”frost/C=US/O=Globus/O=USC/OU=ISI/CN=Carl Kesselman”u14543/C=US/O=Globus/O=ANL/OU=MCS/CN=Ian Foster”itf Gridmap文件由Globus管理员维护 将Grid-id映射到本地用户名如下:单一登录(Single sign-on)为了实现企业的信息化、电子商务和其他需求,越来越多的信息系统在网上出现。这些应用系统都维护着自己的安全策略,这使得用户需要使用其中的任何一个企业应用的时候都需要做一次身份认证,而且每一次认证使用的认证信息(用户名和密码)不能保证一致,这对
10、于用户来说必须记住每一个系统的用户名和密码系统管理员需要对每一个系统设置一种单独的安全策略,而且需要为每个系统中的用户单独授权以保证他们不能访问他们没有被授权访问的网络资源 单一登录 以上传统的用户登录对用户和系统管理员都极为不便 为了解决这样的问题,人们提出了单一登录(single sign-on)的概念 从用户的角度来看,单一登录的机制是指用户在特定的逻辑安全域中,只需进行一次登录即可访问在此逻辑安全区域中不同应用系统中的被授权的资源,当超越了安全区域边缘时才要求再次登录单一登录 GSI以X.509证书实现认证,并通过对X.509证书进行扩展,产生代理证书,用户通过使用代理证书实现单一登录
11、 代理证书包含一个不同于用户密钥对的公钥和私钥对,在认证会话中使用的就是这个密钥对。由于代理证书生命周期很短,过期则密钥失效。这样,即使私钥被暴露,危害也有限。这也允许在存储代理的私钥时不用口令进行加密保护。因此,对代理来说,就没有口令了 这样,用户输入一次口令,用自己的数字证书产生代理证书后,在代理证书的有效期内,用户使用自己的代理证书进行认证,就可在特定的逻辑安全区域中多次访问不同的数据资源,而不需要再次输入口令单一登录实例通过产生代理证书形成的信任链CAUserUsers Proxy1Users Proxy2Credential by CACredential by UserCreden
12、tial by Users Proxy1GSI的几个相应APIs grid-cert-request grid-ca-sign grid-cert-info grid-proxy-init grid-proxy-info grid-proxy-destroygrid-cert-request:获取证书 grid-cert-request 用于产生一个公钥/私钥对和未被签发的证书,并存储在用户目录/.globus/:usercert_request.pem userkey.pem 必须仅对用户只读 将usercert_request.pem 发送到 caglobus.org 接收由Globus签
13、发的证书,并存储在/.globus/usercert.pem 或由grid-ca-sign签发获得usercert.pemgrid-ca-sign:证书签发 由Globus的SimpleCA对用户所提交的证书请求usercert_request.pem进行签发 产生用户证书usercert.pem-BEGIN CERTIFICATE-MIICAzCCAWygAwIBAgIBCDANBgkqhkiG9w0BAQQFADBHMQswCQY u5tX5R1m7LrBeI3dFMviJudlihloXfJ2BduIg7XOKk5g3JmgauK4-END CERTIFICATE-Sample user
14、cert.pem:-BEGIN RSA PRIVATE KEY-Proc-Type:4,ENCRYPTEDDEK-Info:DES-EDE3-CBC,1E924694DBA7D9D1+W4FEPdn/oYntAJPw2tfmrGZ82FH611o1gtvjSKH79wdFxzKhnz474Ijo5Blet5QnJ6hAO4Bhya1XkWyKHTPs/2tIflKn0BNIIIYM+s=-END RSA PRIVATE KEY-Sample userkey.pem:Certificate and Key Datagrid-cert-info:显示证书信息 grid-cert-info用于获取证
15、书的信息,如显示证书的主体信息命令:%grid-cert-info-subject/C=US/O=Globus/O=ANL/OU=MCS/CN=Ian Foster 显示证书的其它信息选项:-all-startdate-subject-enddate-issuer-helpgrid-proxy-init:产生代理证书 在认证时,产生用户的代理证书命令如下:%grid-proxy-initEnter PEM pass phrase:*这个命令将产生一个临时性的,本地的,短期有效的用户代理证书 grid-proxy-init的命令选项:-hours-bits-helpgrid-proxy-init
16、 Details grid-proxy-init产生一个本地的代理证书 用户输入口令,用于解密私钥 私钥被用于签发代理证书 签发代理证书之后,在代理证书的有效期内,用户的私钥将不再使用 Proxy被存储在/tmp下,对用户只读grid-proxy-initUser certificate filePrivate Key(Encrypted)PassPhraseUser Proxycertificate filegrid-proxy-info grid-proxy-info 显示代理证书的详细信息,如显示代理证书的主体信息的命令如下:%grid-proxy-info-subject/C=US/O
17、=Globus/O=ANL/OU=MCS/CN=Ian Foster 显示代理证书信息的选项:-subject-issuer-type-timeleft-strength-helpgrid-proxy-destroy grid-proxy-destroy 用于删除由grid-proxy-init所产生的本地代理证书:%grid-proxy-destroy 但不能删除由这个proxy所授权产生的任何其它远程proxyGSI的应用实例keycertgatekeeperclient1.交换证书,认证,委托2.检查gridmap文件3.服务查找4.运行服务程序(e.g.jobmanager)jobma
18、nagerkeycert1.2.map4.services3.访问控制 网络访问控制概述 社区授权服务CAS 虚拟组织身份服务VOMS网络访问控制概述 授权模型 推式授权模型 拉式授权模型 代理授权模型资源权威主体1234资源权威主体1234资源权威主体1234推式拉式代理社区授权服务CAS 它是由ESG(地球系统网格)组织提出的,得到了Globus项目的支持,现已发布了第二个版本,CAS提出了在一个VO内实行策略管理和对服务实行强制性策略的方案,在每一个VO内部建立一个CAS服务器来维护社区的策略,在用户的代理证书中加入CAS的授权声明(既策略声明)来实现授权的访问控制。请求普通的用户代理C
19、as-proxy-init代理和CAS的策略声明策略声明Gridftp 客户端CAS 服务服务CAS DBCAS DB用户、对象、权限CAS 服务器应答查询Gridftp Server(被修改来进行CAS授权)授权库策略声明Gridftp服务服务策略声明用户用户社区授权服务CAS 社区授权服务CAS 一个典型的用户访问gridftp服务的交互过程。这个Gridftp服务器是经过修改的,来承担CAS的授权。CAS用户首先得到一个标准的网格代理证书,然后向CAS服务器请求信任,CAS服务器根据CAS数据库中所授予这个用户的权限策略,用CAS的私钥签署一个授权策略声明返回给CAS用户,最后用户将这个
20、声明和代理证书提交给要使用的gridftp资源。被修改过的Gridftp服务通过验证用户的策略声明来决定是否提供服务。授权声明(Dn+组属性)L o g i n+dn组 属性服务资源LCAS+LCMAPSVOMS组权限策略VOMS(虚拟组织管理服务)VO Membership Service 虚拟组织成员服务(VOMS)和CAS在体系结构上是很相似的,他们都由服务中心发布策略声明给用户,由用户提供给资源来获得虚拟组织授予的权限。他们的不同主要是在于他们操作的授权级别不同,CAS的策略声明直接包含了权限,并不需要由资源提供者来解释权限;而VOMS的策略声明包含一个角色或组成员的列表,用户将这个组关系策略声明发送给资源提供者,由资源提供者基于本地的组策略来授予用户权限。LCAS(本地中心授权服务)LCMAPS(本地信任映射服务)一些弊病一些弊病 虽然它们的设计解决了在虚拟组织中,对资源和数据访问控制的灵活性、可扩展性、可表达性等问题,但是,它也不是十全十美的,同样也存在着一些弊病,例如:对一个VO单一的策略服务器,会给用户带来访问瓶颈和可靠性等问题。CAS用静态定义的权限来工作,没有反馈机制,不利于某些消费性资源(如:磁盘容量)的合理分配。策略声明还需要进一步的标准化等等。国际组织正在研究的SAML(安全声明标记语言)可能被采用。