注册使用 IBM Bluemix ™
这个云平台包含许多免费服务、运行时和基础架构,可帮助您快速构建和部署下一个移动或 Web 应用程序。
Bluemix - SQL Database 的基本功能都可以通过 Database 控制台进行展示,在介绍 SQL Database 控制台之前,我们在先 Bluemix 平台上来创建一个 APP 和 SQL Database 服务,并且将该服务与已创建好的 APP 进行绑定。我们假设应用程序已经创建好了,下面直接介绍如何创建 SQL Database 服务并将该服务绑定到应用程序,有两种绑定方法:一种是通过 CloudFoundry cf 工具,以命令行的方式进行绑定;另一种方式是在 Bluemix UI 上创建。下面主要列出如果使用 CloudFoundry cf 工具来创建 SQL Database 服务和并将之与应用程序进行绑定的基本步骤:
SQL Database 服务实例绑定到应用程序之后,在应用程序的 Dashboard 下 SQL Database 下就是自动生成 VCAP_SERVICES 环境变量,可以通过点击显示证书(how Credentials)连接查看 VCAP_SERVICES 详细信息。如图一所示:
图 1. VCAP_SERVICES 环境变量
其中,VCAP_SERVICES 环境变量包括以下几个参数:
到此,我们就可以通过环境变量 VCAP_SERVICES 所获得的信息来访问 SQL Database 服务。 目前,在 Bluemix 平台上,运行于 Java/Ruby 或 Node.js 环境下的应用程序均可访问 SQL Database 服务,由于它们访问的方式类似,下面主要说明 Node.js 环境下的应用如何连接 SQL Database 服务。 我们可以从 https://hub.jazz.net/project/pvanrun/SQLDBnode/overview 下载一个 SQL Database sample 应用程序,然后依次按以下步骤来连接并且操作 SQL Database 服务。
添加依赖库到文件 package.json
首先,需要将 SQL Database 的 .js 包的名称和版本号添加到 Node.js 项目中依赖库文件 package.json,加入该信息之后,部署到 Bluemix 上的应用程序会自动找到该文件列出的所有依赖库。
图 2.配置 Node.js 依赖库文件
解析 VCAP_SERVICE 环境变量
因为,同一个 Bluemix 可能应用到多个服务,而且所有的服务的基本信息都保存在 VCAP_SERVICE 环境变量中,我们可以通过以下代码从 VCAP_SERVICE 环境变量中搜索服务名为“SQLDB”的服务,并一个对象的形式返回:
var serviceName = 'SQLDB'; /* * Recursively iterate through the object looking for the key, * return the index */ function findKey(obj,lookup) { for (var i in obj) { if (typeof(obj[i])==="object") { if (i.toUpperCase().indexOf(lookup) > -1) { // Found the key return i; } findKey(obj[i],lookup); } } return -1; } // Look for an entry in the VCAP_SERVICES environment variable that has // the serviceName string in it if (process.env.VCAP_SERVICES) { env = JSON.parse(process.env.VCAP_SERVICES); key = findKey(env,serviceName);
建立与 SQL Database 数据库的连接
通过对 VCAP_SERVICE 环境变量的解析,我们可以拿到 SQL Database 服务对应的配置信息对象,然后通过以下代码建立与数据库的连接:
var credentials = env[key][0].credentials; var dsnString = "DRIVER={DB2};DATABASE=" + credentials.db + ";UID=" + credentials.username + ";PWD=" + credentials.password + "; HOSTNAME=" + credentials.hostname + ";port=" + credentials.port; var ibmdb = require('ibm_db'); ibmdb.open(dsnString, function(err, conn){})
其中,function(err, conn){} 是连接数据的回调函数,如果连接成功,会返回连一个数据库连接对象 conn,我们可以通过该对象,对指定的数据库进行增、删、改、查等数据库操作。
指定 DB2 的连接驱动 buildpack
由于 Bluemix 平台没有 Node.js 运行环境访问 SQL Database 服务所需的 DB2 驱动,所以在上传应用程序到 Bluemix 平台时,需要指定一个 node.js buildpack 将 node.js 连接 DB2 的驱动程序与应用程序进行打包。我们可以使用已经部署在 github.com 的 buildpack,并通过步骤 5 来完成该绑定工作。buildpack 地址为:https://github.com/ibmdb/db2nodejsbuildpack
上传应用程序
我们可以通过以下命令将 DB2 的驱动程序与应用程序进行打包,运行与 Bluemix node.js 环境下的应用能访问 SQL Database ,并且上传到 Bluemix 平台: cf push <app-name> -b https://github.com/ibmdb/db2nodejsbuildpack
运行应用程序
应用程序成功上传之后,会自动的启动,我们也可以在 Bluemix UI 上手动的控制应用的启动和停止,通过在浏览器的地址栏打开该应用的 ROUTE(http://sqldbnode-frankin.mybluemix.net)来查看应用程序的运行结果,如图三所示:
图 3 .Sample 应用程序运行结果
以上主要介绍如何创建 SQL Database 服务,如何将 SQL Database 与我们的应用程序进行绑定,以及如何在程序中连接和使用 SQL Database 服务。 SQL Database 服务除了具备一般数据库的基本功能外,还提供了 以 GUI 的方式,对数据库进行管理和监测。接下来主要介绍 SQL Database 服务的 GUI 上的基本功能。
回页首
SQL Database 服务的数据管理与数据库活动监控功能都可以通过 SQL Database 控制台进行展示,下面我们会对 Database 控制台以及基本功能进行详细的介绍。可以通过点击 Bluemix 用户界面上的 SQL Database 实例,来启动 SQL Database 控制台,我们可以从图 4 直观地了解到 SQL Database Console 主要提供了数据管理和数据监测两大功能,而且每个功能都有四个小功能:
图 4.数据库管理控制台
数据管理:
数据库活动监控
下面对以上基本功能进行进一步说明:
通过该功能,我们可以查看已经存在的 数据库模式,并且可以通过 Run DDL 创建新的数据库对象和数据对象。 这里,我们可以通过点击 Run DDL 运行以下 SQL 语句创建 Employee 表对象:
图 5.创建数据库对象
当该 DDL 语句执行成功后,就可以在 Tables Navigator 下找到刚刚创建的表,如图 6 所示:
图 6.通过 RUN DDL 创建的表对象
可以通过右上角的两个工具按钮将数据导出来,和隐藏掉没有必要显示的字段,如下:
图 7.通过 RUN DDL 创建的表对象
除了可以在控制台下输入 SQL 语句来创建数据库对象,我们可以通过导入 .sql 脚本来创建。
该功能主要是将数据从你的数据源加载到云端的数据库表里面。从下图中我们看到,我们可以将数据要写到 Excel 表或 CSV 文件,然后上传到指定的数据库,指定的表中。 文件的第一行是要上传数据表的字段名,第二行开始填入字段对应的值。当数据上传完毕时,就可以通过在指定的表中,看到刚刚上传的数据。 上传数据 Employee:
图 8.CSV 数据文件
该向导会引导我们指定上传的数据文件、第一行是否是字段名、指定字段之间的分隔符、指定上传路径、指定数据库、指定表已经显示上传日志,如图 9 所示:
图 9.数据上传向导
上传成功之后,可以查看上传 log 和上传结果,如图 10 所示:
图 10.上传日志与结果
通过这三个按钮( )分别可以定义 filter 来过滤出满足条件的数据,显示、隐藏和对字段进行排序,和将数据导出到 CSV 文件中。
通过数据备份控制台可以发现,默认情况下,我们创建的数据库 mySQLDB 中的数据每天会自动备份一次,当然也是可以手动备份。
图 11.数据备份
我们可通过一下数据恢复控制台将已经备好的数据恢复到当前数据库中。
图 12.数据恢复
该功能主要是查看连接到指定数据库的所有应用程序,和应用程序详细信息。
图 13.数据库连接
该报表会列出所有对数据库对象操作的 SQL 语句,以及该语句执行的时间戳和 CPU 响应时间等,如报表所示。
图 14.数据库活动的 SQL 语句详情
该报表会列出指定数据库所有的表空间以及各个表空间的详细信息,比如 表空间的 ID、名称、类型、状态、使用情况、总的大小、空闲大小、自动存储、自动扩容和数据库分区等等,如下图所示:
图 15.数据库存储信息
该敏感数据报表是由 IBM InfoSphere Guardium 生成的,它会列出存于该数据库的所有敏感数据,以及发生在这些敏感数据的所有活动,以保证对用户隐私数据的实时监控的作用。SQL Database 服务除了可以自动的探测出敏感数据和对敏感数据进行检测外,还会对访问敏感数据的应用程序进行屏蔽,以确保用户数据的安全。对用户敏感数据的处理是 SQL Database 服务的一大核心,下文针对 SQL Database 对敏感数据报表和敏感数据的特征进行详细的描述。 敏感数据 的探测与报表 SQL Database 服务默认支持的对敏感数据的自动探测功能是通过 IBM InfoSphere Guardium 实现的,它可以对一些敏感对象进行自动探测以及识别,并兼有报警、中断和屏蔽等功能,该功能对数据安全策略非常重要。 在 Bluemix UI 上,我们可以通过数据库管理控制台(Managed Database Console)的数据隐私(Data Privacy)子模块查看敏感数据报表。报表的生成主要包括敏感对象识别以及敏感对象访问报表两个过程:
首先,通过 SQL Database 服务的敏感数据的自动识别功能扫描用户数据库,以探测出潜在的敏感数据模型,比如信用卡或社交安全账号。然后,在已发现的敏感数据表所属字段上标记上含有敏感数据的标签。最后,可以通过控制台查看数据隐私报表, 这个表显示了所有敏感数据对象,而且可以通过 SQL Database 数据屏蔽功能来阻止外界对这些敏感对象的访问。
一旦这些敏感信息被扫描出来,这些敏感数据对象、以及对这些敏感数据的访问信息会以报表的形式呈现在数据库管理控制台的数据隐私界面上。下面列出详细的报表信息:
敏感数据报表可以显示出 所有被发现的敏感对象,这些对象一般指类似信用卡和社交安全账号,对于每个敏感对象,都会显示 数据库名、Schema、表名和字段名四个字段。
该报表显示在指定期间内连接到指定数据库的所有 connection,它包括以下几个字段:最近会话启动时间、访问的数据库名、客户端 IP、服务端 IP、数据库用户名、源程序和会话总数。
该报表提供在指定期间、指定数据库、指定敏感对象、以及指定数据活动的详细信息,主要包括以下信息: 客户端 IP: 访问敏感对象的客户端 IP 数据库名: 被访问的数据库名称 数据库用户名: 访问数据库所用的用户名 时间戳: 指定命令的运行时间 完整 SQL: 对敏感数据操作的 SQL 语句 数据隐私特征在 Bluemix 应用程序 的应用 Bluemix 应用程序中有一些应用场景会使用到用户自定义函数(UDF),SQL Database 服务默认支持 UDF,下面通过几个 UDF 实例,来说明应用数据隐私特征的使用方式,以保证 Bluemix 应用程序数据的安全性:
下面分别对以上实例的使用方式进行说明:
通过该方式,SQL Database 服务会为复制一个表结构与敏感数据所属的表完全相同的新表,并填充虚机数据,以供非信任应用程序访问,从而确保数据安全。
该方式是以虚假值直接替换该字段的原始值,以确保用户信息不被泄露。当然这种方式只能在原始值不再需要使用的场景下才能使用。
该方法是通过使用 Optim 屏蔽函数对原表创建视图,通过设置数据库权限,以限制对原表的访问,使所有对原表的访问都将转向对虚拟表。
该方法可以根据数据库用户权限设置来选择性屏蔽信息。对于不同的用户 ID,可以授予不同的访问控制权限,以实现某些用户可以看到原始的数据信息,而其他人只能看到虚假的数据信息。
回页首
首先,本文讲述了如何通过 CloudFoundry 工具创建 SQL Database 服务,并将已创建的 SQL Database 实例与 Bluemix 应用程序进行绑定;然后,介绍了如果通过 VCAP_SERVICES 环境变量来对 SQL Database 实例进行操作;接下来,讲述了 SQL Database 服务的数据管理和数据库活动监控的各项功能,以及详细地介绍了敏感数据的探测与处理功能;最后,简单讲述了 SQL Database 数据隐私特征在 Bluemix 应用程序中应用的几种实例。