Base和Accumulo中的安全性提供类似的数据级安全,但方式不同。如第10章中的讨论,HBase可以对数据提供以逐个表或逐个列为基础的访问控制。当前,它还不支持Accumulo可以做到的单元格安全性,但Rhino项目的Intel发行版正在实施这方面的工作,使得HBase不久后可能会支持基于单元格的安全。
HBase可以与Hadoop的安全模型轻易地集成(使用Kerberos),而且此方案与Hadoop生态系统的其余部分一致。而另一方面,Accumulo是一个较新的顶层Apache项目,包含一个内部访问控制数据库,而且它实现安全性的方式与Hadoop生态系统中其他工具不同。
HBase和Accumulo都很流行。基于其单元格级别的访问控制安全特性,Accumulo在高安全环境中是最流行的,并承诺提供与强制访问控制(MAC)和差异性安全相关的解决方案。
大多数较熟悉关系型数据库的开发者通常习惯于看到类似于表12-1的表,它是一个二维的模型。
表12-1 关系数据模型中的示例数据
| 名 字 |
大 学 |
出生所在州 |
签 名 短 语 |
| Billy |
UCLA |
West Virginia |
“Brutal” |
| Jeff |
UVA |
New Jersey |
“C’Mon Man” |
在Accumulo的结构中,相同的数据看上去会类似于表12-2,其中使用了较细的粒度来保存数据,包括可见性和能够跟踪数据随时间变化的时间戳。
表12-2 Accumulo数据模型中的数据
| 行ID |
族 |
限 定 符 |
可 见 性 |
时 间 戳 |
值 |
| Billy |
School |
University |
Public |
20130503 |
UCLA |
| Billy |
BirthRecord |
State of Birth |
Admin |
20120503 |
West Virginia |
| Billy |
Greeting |
Signature Phrase |
Public |
20120503 |
“Brutal” |
| Jeff |
School |
University |
Public |
20120503 |
UVA |
| Jeff |
BirthRecord |
State of Birth |
Admin |
20120503 |
New Jersey |
| Jeff |
Greeting |
Signature Phrase |
Public |
20120503 |
“C’Mon Man” |
注意在表12-2中,可见性被标记了安全标签。可以使用与/或布尔逻辑将这些标签添加到记录中。例如,可以给出类似于表12-3的授权策略,其中可以创建授权凭据并与用户关联,将访问限定为表中的每个单元格。
表12-3 安全策略示例及其安全标签语法
| 访问某条记录的策略示例 |
安全标签语法 |
| 必须是共和党人而且是美国公民 |
Republican & USCitizen |
| 必须是警察,或者必须是美国公民且在武装部队中 |
Police Officer | (USCitizen & ArmedForces) |
| 必须是项目管理者而且必须在FGM或White Oak组织中 |
ProjectManager & (FGM | White Oak) |
| 超过17岁或者父母同意 |
Over17 | parentalConsent |
在Accumulo的安全模型中,用户向可信的客户端(作为开发人员,可以编写这样的客户端)进行认证,而客户端要负责认证用户并向Accumulo传递适当的授权凭据。你的可选方案为与自己的认证和授权系统相集成,或者使用Accumulo的内部认证/授权组件——可以在其中保存用户和他们的授权凭据。本小节为每种方案都提供了一个示例。
一个简单的示例
让我们考虑一个大学数据库的示例,其中某大学从各个部门和下属组织收集了关于其学生的数据。在此示例中,有来自校园医疗中心、财政中心、大学管理处、体育设施和校园警察的数据。你收集了各种各样的信息,而且整个组织可以查询这些信息。你的需求是保护某些信息,例如如下所述:
● 学生医疗检查记录应该只对医护人员和大学管理处可见。
● 田径学院学生体育相关的记录应该只对他们的教练可见,有时也可对医护人员可见。
● 购买记录、评分以及诸如社会安全号码等敏感信息应该只对大学管理处可见。
● 学生在校园警察处的记录应该只对校园警察或者大学管理处可见。
对于本例,让我们将一些样例数据加载到Accumulo数据库中,如表12-4所示。在这个简单的例子中,有一位名叫Kirk Rest的学生,你有关于他的各种信息,这些信息均是从大学中的大量数据源收集而来的。
表12-4 大学数据示例中的键/值
| 行ID |
族 |
限 定 符 |
可 见 性 |
时 间 戳 |
值 |
| Kirk Rest |
SSN |
999999999 |
ADMIN |
20050612 |
|
| Kirk Rest |
Phone |
804-555-0005 |
ADMIN |
20050612 |
|
(续表)
| 行ID |
族 |
限 定 符 |
可 见 性 |
时 间 戳 |
值 |
| Kirk Rest |
Address |
111 Carson Ave, Richmond VA |
ADMIN |
20050612 |
|
| Kirk Rest |
Weight |
170 |
MEDICAL | COACH |
20110711 |
|
| Kirk Rest |
Running Test |
10K |
COACH |
20110812 |
56 |
| Kirk Rest |
Running Test |
10K |
COACH |
20110517 |
58 |
| Kirk Rest |
Running Test |
5K |
COACH |
20110716 |
24 |
| Kirk Rest |
Running Test |
5K |
COACH |
20110612 |
27 |
| Kirk Rest |
Payment |
Semester Payment |
ADMIN |
20111223 |
1000 |
| Kirk Rest |
Medical Test Report |
Cholesterol |
MEDICAL |
20111222 |
200 |
| Kirk Rest |
Medical Test Report |
Biopsy |
MEDICAL |
20111012 |
Negative |
| Kirk Rest |
Grade |
Organic Chem |
ADMIN |
20111201 |
A |
| Kirk Rest |
Grade |
Calculus 1 |
ADMIN |
20111201 |
B |
| Kirk Rest |
Grade |
Radical Presbyterianism |
ADMIN |
20100612 |
D |
| Kirk Rest |
Police Charge |
Curfew Violation |
ADMIN | POLICE |
20071103 |
Pending Hearing |
| Kirk Rest |
Police Charge |
DUI Arrest |
ADMIN | POLICE |
20091104 |
Guilty |
假定将此信息加载到已经安装在测试Hadoop实例上的Accumulo存储中。为此,应该使用Accumulo shell,它是一个简单的客户端,可以用于创建和修改表,以及创建用户并为这些用户分配授权凭据。由于本章关注的是安全,而非Accumulo的更多细节,因此这里不讨论加载数据的详情。
注意:
由于不同版本的Accumulo需要与不同版本的Hadoop和Zookeeper一起工作,因此这有时是对安装的一个挑战!上手Accumulo的一种简单方法是使用已