核心服务
日志记录
Predix机器采用Pax日志记录工具。Pax日志记录定义了自己的API,也支持 Log4J, SLF4J, JDK Logging和 Apache Commons Logging API,让应用程序可以轻松使用这些通用API。
可在https://ops4j1.jira.com/wiki/display/paxlogging/Pax+Logging找到Pax日志记录的更多信息。
重要提示:
日志记录还需要特定具体的许可:
(org.osgi.framework.AdaptPermission “(adaptClass=org.osgi.framework.wiring.BundleRevision)” “adapt”)
日志记录服务示例应用程序
可在
中找到示例应用程序。示例中提供了如何使用 Logging Service的代码片段。
日志记录服务配置
要变更日志记录配置设置,可更改
采用默认设置时,Predix 机器使用两个日志文件:
• 说明捆绑包状态的系统消息发送到
这个日志文件示例如下所示:
• Predix机器捆绑包使用Pax日志记录配置。这些日志被发送到/logs/machine/machine.log文件中。这个日志文件示例如下所示:
捆绑包安全服务
Predix机器提供严格但又灵活的安全政策。在启动时会调用一套确定的安全许可。这些安全许可适用于捆梆包、系统捆梆包和整个框架。
捆绑包安全服务中的许可
OSGi安全模型是Java 2安全架构的扩展。条件许可管理(CPA)是Java 2模型新增的强大功能。CPA根据策略政策使用API。技术规范中确定的策略政策如下所示:
“ 策略政策包括满足相应条件时适用的一组许可。许可暗示时,策略政策可以允许访问(Java 2模型),也可以拒绝访问。拒绝许可大大简化了安全管理。
通过对条件许可管理进行实时管理,可以管理应用程序立即控制其他应用程序的许可,无需重启。
策略政策基于条件的一般概念。条件保护对策略政策许可的访问。如果不满足这些条件,许可就不适用。条件的基础可以是 … 捆梆包位置和用户定义的条件。”- OSGi R4v4.2 spec.技术规范文件参考链接 - http://www.osgi.org/Release4/Download。参见 “50 条件许可管理服务技术规范”。
Predix机器的运行时容器用封装在捆梆包JAR文件中的 OSGi-INF/permissions.perm文件加载这些许可。
许可文件的格式仅列出许可;由于许可仅适用于当前的捆梆包,因此,没有规定是允许还是拒绝。可在
中找到示例文件。
如果捆绑包中不包括本地许可资源,框架会将java.security.AllPermission设置为捆梆包的本地许可:
在生成捆绑包时可能不需要此操作。
即使没有推荐,在启动脚本文件中还是会禁用所有捆绑包安全功能;在../bin/predixmachine 或(或predixmachine.bat)中打开Java安全许可。取消该行的注释将其关闭。
Predix机器网页控制台和捆绑包更新
“Predix机器网页控制台和捆绑包更新”服务安装了新的可执行文件与二进制文件。无需改变证书存储或配置,就可以更新组件。“Predix机器网页控制台和捆绑包更新”服务还可以安装了之前容器中不包括或启动文件中没有配置的新捆绑包。
通过Predix机器网页控制台更新捆绑包
使用“Predix机器网页控制台和捆绑包更新”服务时,遵循下列步骤:
注:
只有在Predix机器的DEBUG版本里才有Predix机器网页控制台功能,或只有用Predix SDK手动添加时才可以使用这个功能。
关于使用网页控制台的更多说明,请参见http://felix.apache.org/documentation/subprojects/apache-felix-web-console.html
1. 启动容器。
2. 在网页浏览器上输入URL (就像在本地主机上运行Predix机器时的示例):
https://localhost:8443/system/console
3. 输入默认登录。如果你已经更改了密码,输入你的密码。
login: predix password: predix2machine
注:
首次登录时,你必须更改密码。新密码必须为:
o 长度至少为8个字符
o 至少包含一个小写字母
o 至少包含两个数字
o 密码中不得包含用户名
o 以字母开始和结束
出现捆绑包页面。
4. 升级捆绑包。
a. 点击Install/Update按钮。
出现 Upload/Install Bundles对话框。
b. 填写字段,找到文件,然后点击Install或Update。
MetaType - 配置类型检查
OSGi Metatype技术规范提供了一种在XML文件中描述配置信息的语言。任何有配置文件的捆梆包,如
,还需要包括元类型的XML文件。元类型XML中添加了属性的类型检查功能,这样,不会添加不正确的数值将不会被添加。Predix机器网页控制台中还创建了可读字段。
元类型的XML文件示例在
采用bndlib项目给每个包含配置文件的捆梆包生成元类型XML文件。这会生成XML文件,同时为属性提供界面。
参见http://www.aqute.biz/Bnd/MetaType了解更多信息。
可在/samples/sample-apps//sample/sample-configuration找到示例应用程序(解压 sample-apps.zip文件之后)。
安全管理服务:SSL上下文和证书管理
对安全管理配置捆梆包的配置和其他Predix机器 服务的配置有所操作不同。
• 安全管理捆梆包没有使用配置管理服务,而是解析配置文件本身。这就意味着配置不是动态的,只能在启动时一次性配置好。
• 配置文件(com.ge.dspmicro.securityadmin.cfg)在
文件夹中,而不在
文件夹中。
重要提示:
/security
文件夹包含安全文件和信息。在部署环境下,请确保只有拥有管理权限的用户才能访问这个文件夹。
在Predix机器作为客户端而不是服务器工作时,由于信任和**使用存在不同之处, 客户端和服务器的 KeyStores/TrustStores配置是独立的。例如, Predix机器需要双向2路TLS时,信任作为服务器会直接影响到客户端认证。在Predix机器客户端truststore中可信的证书不得用作信任锚来认证连接至Predix机器的客户端。
生成的KeyStore
如果安全管理配置没有指向特定的KeyStore,Predix机器会在启动时生成新的KeyStores。特别是,如果属性显示KeyStore的路径为空时,会生成KeyStore并提供随机密码。安全管理配置文件都有各自的配置属性。由启动脚本生成的**强度足以满足最标准的生产用例。根据当前的NIST建议选择算法和**强度。
随机生成KeyStores和**的密码会随机生成。根据不同的原因,解决方案通常需要访问KeyStores。例如,信任TLS连接的Predix机器实例需要从KeyStore中导出证书。解决方案需要访问KeyStore时,会在特定KeyStore相关的安全管理配置文件字段中找到密码。
导入新的私钥和CA签名证书
无需生成KeyStore,解决方案可以使用CA签名证书。
1. 在包含KeyStore的/security目录中查找KeyStore密码。
2. 用Java Keytool将这个**对导入到KeyStore中。
这个示例展示了如何将证书/私钥导入到KeyStore中:
将证书导入到TrustStore中
Predix机器上的应用程序采用和一般服务相关的各种TrustStore。特别是HttpClient,Felix HTTP服务和WebSockets,采用在安全管理配置中配置好的服务器TrustStore 。
- 在/security /com.ge.dspmicro.securityadmin.cfg文件中查找TrustStore密码。
- 用Java Keytool将证书导入到TrustStore中。
下面的示例展示了如何将证书导入到TrustStore中:
配置客户端KeyStore/TrustStore
如果服务器需要客户端证书,你可以在安全管理配置文件中进行设置。
• 配置 sslcontext KeyStores指向具有单独**的KeyStore。如果KeyStore包括多个**,第一个**用作客户端证书。
一旦配置了这些值,如果服务器要求,启用双向2路SSL。任何使用 SecurityAdminSSLContextFactoryService 获得 SSLContext 的服务能够用这个KeyStore提供客户端证书。这包括 HttpClient, WSClient,和其他使用 HttpClient 和 WSClient的服务。
1. 导航至/bin。
2. 打开安全管理配置文件com.ge.dspmicro.securityadmin.cfg。
3. 配置以下属性:
配置服务器KeyStore/TrustStore
将CA签名证书导入到keystore中。将可信客户端证书导入到双向2路TLS的truststore中(客户端认证)。
1. 导航至
- 打开安全管理配置文件com.ge.dspmicro.securityadmin.cfg。
- 配置以下属性:
配置默认KeyStore
针对需要发布数字签名的服务采用默认KeyStore。STS服务采用此处配置的**来签署SAML令牌。
- 导航至/securitybin。
- 打开安全管理配置文件com.ge.dspmicro.securityadmin.cfg。
- 设置以下属性的值:
配置加密KeyStore
加密KeyStore包含对称**,用来加密 。
文件夹中配置文件的敏感配置属性。
1. 导航至
2. 打开安全管理配置文件com.ge.dspmicro.securityadmin.cfg。
3. 设置以下属性的值:
配置其他属性
参见http://felix.apache.org了解Felix HTTP服务配置属性的完整列表。任何 “org.apache.felix” 开头的属性可以添加到安全管理配置文件中。
1. 导航至
2. 打开安全管理配置文件com.ge.dspmicro.securityadmin.cfg。
3. 设置以下属性的值:
使用安全管理API
查看安全管理API,了解如何全面进行安全管理。
1. 导航至
并解压提取所有文件
2. 查看安全管理API:
使用安全管理示例应用程序
提供安全示例应用程序的目的是展示如何使用这项服务。
- 导航至
并解压提取文件。 - 在sample-apps/sample文件夹中,打开sample-security应用程序。
注:
参见通过命令行构建示例和在Eclipse中运行示例或通过生成的容器运行示例了解构建和运行示例应用程序的说明。