使用InfoSphere Guardium保护和加强Netezza数据仓库设备

保护和强化数据环境

建立安全的,经过强化的数据环境需要解决数据库安全性的所有方面。 使用用户和组特权限制数据访问是数据库安全性的一个示例,它需要注意任何新的或现有的数据环境。 同样,许多现成的设置可能无法为给定的数据环境提供最优化和最安全的配置。 其中一些设置是特定于平台的,需要专业知识才能获得最佳配置。 除了对环境的持续更改和经常发现的数据库应用程序漏洞之外,建议对影响数据环境安全性的所有组件进行评估。

InfoSphere Guardium数据库漏洞评估提供了一种解决方案,该解决方案可以检测并建议针对众多数据库漏洞的修复程序,包括不安全的配置和对象特权,弱密码以及缺少补丁程序。 通过Database Protection Service进行的定期更新可确保测试基于最新的行业最佳实践(包括CIS和STIG)以及供应商发布的重要更新。

该产品基于经过验证的Guardium架构,并在经过安全保护和强化的Guardium设备上运行。 评估测试和结果存储在设备上,并可以通过安全的Web界面进行访问。 该解决方案的非侵入性独立性质消除了对数据服务器的性能影响。 它还确保了数据库安全性与数据库管理任务之间的真正职责分离。

除了全面的漏洞评估解决方案,Guardium还提供了权利报告,用于审核敏感的Netezza用户和组权利。 这些报告提供了用户和组特权的快照,包括特定于Netezza数据仓库环境的访问特权,对象特权和系统特权。

安全的Netezza环境要求对数据库和相关的操作系统设置进行初始安全配置,并创建用户和组以及访问特权分配。 此过程应基于安全性最佳实践,漏洞评估结果及其建议。 在初始设置之后,还需要重复测试和检查权利和配置。 权利的更改或与微调配置的偏离必须经过审查并逐步升级以进行修复。

已完成的保护和强化数据环境的完整过程将应用于Netezza数据仓库设备。 Netezza和Guardium配置的详细信息将与示例方案示例一起进行说明。

Netezza安全性基础

Netezza安全性与其他数据库相似,并且具有相同的基本概念。 主要挑战是正确,安全地验证用户身份并设置访问权限,因此用户只能查看和修改其数据库对象。 这两个问题的解决方法与其他数据库类似,但有细微差别。 Netezza与其他数据库之间的区别是它是一种包含服务器硬件,操作系统和数据库软件的设备,因此我们需要讨论所有组件。

操作系统安全

Netezza数据仓库设备上的操作系统是经过修改的Red HatLinux®。 通常,用户应仅对操作系统进行最少的修改; 包管理例如由Netezza支持处理。 默认情况下,Netezza设备具有两个OS用户:

  • ROOT —仅应用于Netezza固件和OS补丁程序的应用
  • NZ —数据库软件的所有者

可以创建其他用户,例如用于开发或数据移动。 在这种情况下,应遵循基本的Red Hat安全准则。 重要的是最大程度地减少对设备的直接访问。

用户认证

Netezza数据库用户由数据库管理,与OS用户无关。 默认情况下,用户身份验证由数据库软件本身处理。 可以使用LDAP,但这超出了本文的范围。 Netezza数据库软件最初是在PostgreSQL上构建的,并且具有许多特性,尤其是在诸如用户安全性之类的管理功能方面。 Netezza提供了各种高级功能来限制用户访问,我们将讨论其中的一些功能。

用户和组

交付时,Netezza设备具有一个单用户ADMIN(即数据库的超级用户),ADMIN具有所有可能的特权和一些特殊优势,例如保留的系统资源集。 ADMIN仅应用于初始设置和紧急情况。 在普通的Netezza设备中,您可以创建各种用户。 您可以根据他们的任务创建它们,但是通常情况下,应该将它们与他们的真实角色相关联,以便更好地进行审核。

Netezza还支持用于创建具有特定特权集的用户角色的组。 每个创建的用户都属于一个特殊组(PUBLIC)。 它始终存在,不能删除。 PUBLIC组是向所有数据库用户赋予特权的一种方式。 您应该限制对PUBLIC组的特权。

Netezza数据库

每个Netezza设备都有一个正在运行的Netezza性能软件(NPS)实例,该实例是为Netezza数据仓库设备提供动力的数据库软件。 但是它可以有多个数据库。 与其他数据库系统相比,数据库与物理对象无关。 相反,它们是用于管理和设置特权的数据库对象的逻辑分组。 例如,您将拥有一个与应用程序或项目关联的数据库。 每个Netezza系统都有一个称为SYSTEM的特殊数据库。 该数据库包含系统目录,在某些方面,它是一个全局数据库,位于系统中其他数据库的上方。 用户应具有对SYSTEM数据库的最小访问权限。

访问权限

在对用户进行安全身份验证之后,系统需要确保他只能访问和修改他应该访问的数据库对象。 通过访问权限,这与其他数据库系统类似。 Netezza中有两种访问特权,即管理特权和对象特权。 管理特权与诸如备份,还原或硬件管理之类的管理任务相关联。 它们没有绑定到特定的数据库对象。 对象特权与特定的数据库对象相关联。

可以使用GRANT命令将特权授予用户或组。 特权始终是相加的,这意味着除了已授予他所属的所有组的所有特权之外,每个用户还具有直接授予他的所有特权。 可以使用REVOKE命令从组或用户中删除特权,但是这将从属于该组的所有用户中删除特权。

Netezza中的访问权限可以是数据库本地的,也可以是全局的,这意味着它们适用于系统中的每个数据库。 要全局授予特权,您需要在连接到SYSTEM数据库时授予特权。 要仅为特定数据库提供特权,您需要在执行GRANT之前连接到该数据库。

除了GRANT之外,Netezza中还有一个提供特权的第二个概念:对象所有权。 Netezza中的每个数据库对象都有一个所有者,默认情况下,是对象的创建者。 所有者拥有该对象的所有特权。 这对于数据库特别有用,因为所有者可以充当该数据库的管理员,而不会影响其他数据库或SYSTEM数据库。

配置Netezza用户访问和安全性

检索Netezza设备时,OS层的安全设置通常具有良好的默认设置,因此,唯一关键的步骤是更改OS用户帐户的密码。 因此,我们将专注于设置数据库安全性。 我们将创建一些初始用户,组和特权,就像您收到新的Netezza设备时所做的那样。

Netezza中的用户和组是全局对象,因此可以在每个数据库中看到它们。 在创建表和加载数据之前,您需要创建一个数据库。 通常,数据库将引用您的仓库环境中的项目或应用程序。 我们的数据库将称为REPORTDB,它将包含用于一组商业智能报告的表。

我们将创建三个用户:

  • MARK —该用户将是数据库的所有者,从而使他成为该数据库的管理员。
  • MARIA —此用户将能够修改数据库中的数据,获得所有加载和修改数据的特权,而无需更改数据库对象。
  • KARL —该用户将是只读用户。 例如,他可以用于从诸如IBM Cognos之类的报告软件进行访问。 他将能够从数据库读取数据,但不能修改任何数据库对象或数据。

我们将设置两个组,而不是直接将特权授予这些用户,因此以后我们可以随意添加和删除用户。 由于我们预计该数据库不会有多个管理用户,因此我们不会为此角色创建特殊的组。

在这里,我们将创建两个组:

  • REPORTRW —这是此数据库的读写访问组。 成员可以修改和读取数据库表中的数据。
  • REPORTRO —这是此数据库的只读访问组。 成员只能读取数据库中的数据,而不能修改任何数据。

最初,我们需要使用ADMIN用户登录。 您可以在NZSQL控制台的提示中看到已连接的数据库和用于登录的用户。 我们需要做的第一件事是创建REPORTDB:

SYSTEM(ADMIN)=> CREATE DATABASE REPORTDB;

现在,我们将创建三个用户:

SYSTEM(ADMIN)=> CREATE USER MARK WITH PASSWORD 'markspass';
SYSTEM(ADMIN)=> CREATE USER MARIA WITH PASSWORD 'mariaspass';
SYSTEM(ADMIN)=> CREATE USER KARL WITH PASSWORD 'karlspass';

之后,我们创建组,并在创建过程中添加用户。 我们以后总是可以使用ALTER语句修改它:

SYSTEM(ADMIN)=> CREATE GROUP REPORTRW WITH ADD USER MARIA;
SYSTEM(ADMIN)=> CREATE GROUP REPORTRO WITH ADD USER KARL;

现在我们可以设置必要的特权。 首先,让MARK成为数据库的所有者:

SYSTEM(ADMIN)=> ALTER DATABASE REPORTDB OWNER TO MARK;

MARK现在是REPORTDB的所有者,并且拥有数据库和所有包含的数据库对象的所有特权。 这是委派管理员职责的便捷方法。 MARK可以处理此数据库的所有管理任务,而不会干扰其他数据库。 甚至可以使用工作负载管理功能来减少用户或组可以使用的系统资源量。 例如,如果您想在与生产数据库相同的系统上运行某些开发数据库,​​则这可能很重要。

现在,我们将必要的特权添加到只读组。 我们希望它们能够在不访问任何其他数据库的情况下从REPORTDB数据库中的数据库表中读取。 为此,我们需要连接到REPORTDB数据库。 连接到SYSTEM数据库时执行的任何GRANT语句都是全局的,这意味着它将适用于设备中的所有数据库:

SYSTEM(ADMIN)=> \c REPORTDB

Netezza具有唯一的特权列表,该列表允许用户查看对象,并且是连接到数据库所必需的。 使用数据库的所有用户都必须至少具有该数据库的LIST特权:

REPORTDB(ADMIN)=> GRANT LIST, SELECT ON REPORTDB TO REPORTRW, REPORTRO;

我们的组将需要对表,视图和数据库中的同义词具有LIST和SELECT特权。 可以在特定数据库对象(例如客户表)或表(例如TABLE)上赋予对象特权:

REPORTDB(ADMIN)=> GRANT LIST, SELECT ON TABLE, VIEW, SYNONYM TO REPORTRO, REPORTRW;

由于我们在连接到REPORTDB时执行GRANT命令,因此它是本地特权。 这意味着组的成员可以列出并从REPORTRD数据库中的所有表(而不是其他数据库)中选择。 如果要为所有数据库全局授予此特权,则可以在连接到SYSTEM数据库时执行此命令。 全局特权应仅少量授予。 现在,我们将为REPORTRW组设置特权:

REPORTDB(ADMIN)=> GRANT LIST, SELECT, UPDATE, DELETE, INSERT, TRUNCATE 
                        ON TABLE TO REPORTRW;

此命令允许REPORTRW组的成员自由读取和修改REPORTDB表的内容,而无需更改表结构。

我们还将提供加载数据所需的特权。 在Netezza中加载数据需要具有创建外部表的能力。 有时在加载过程中,有必要为ELT数据转换创建临时表,因此我们还将授予创建临时表的特权:

REPORTDB(ADMIN)=> GRANT CREATE EXTERNAL TABLE, CREATE TEMP TABLE TO REPORTRW;

最后,我们将允许我们的数据修改用户修饰表。 当Netezza中的行被删除或更新时,它们不会立即从磁盘中删除,而是在逻辑上删除。 这些历史行版本可以使用GROOM命令清除。 这也许是GROOM命令中最重要但不是唯一的任务。 尽管这是一项管理任务,但允许用户修改数据库以同时运行GROOM命令还是有意义的。 它会占用大量系统资源,因此只能由知识丰富的用户执行:

REPORTDB(ADMIN)=> GRANT GROOM ON TABLE TO REPORTRW;

我们已经完成了REPORTDB数据库的基本安全设置。 我们有数据库的所有者,可以修改数据库对象; 我们有一组允许修改数据的用户; 并且我们有一组只读用户,可以运行报告和分析。 这是经典的设置,但是取决于您的要求。 Netezza是一种仓库设备,因此通常在少数受控用户的控制环境中执行对用户数据的修改。 例如,在每周的交易数据负载中,或通过自动点播馈送脚本。 尤其如此,因为Netezza极其易于使用,只需要少量的管理工作。 因此,在许多情况下,将不需要读写组,并且数据库所有者可以处理数据修改。

不同的情况可能需要不同的设置,例如,开发环境将需要一组高级用户,他们可以修改数据库对象,创建存储过程等。

最后,创建具有大多数ADMIN特权的全局管理用户是一个好主意。 ADMIN用户在许多方面都有特殊之处,只应在紧急情况下使用。 例如,它具有与之关联的一组保留的系统资源。 因此,优良作法是创建一个具有所有管理和对象特权的用户,并使用该用户代替ADMIN用户来执行大多数任务。 但是,此步骤完全没有必要:

SYSTEM(ADMIN)=> CREATE USER NEWADMIN WITH PASSWORD 'adminpass';
SYSTEM(ADMIN)=> GRANT ALL ON AGGREGATE, DATABASE, FUNCTION, GROUP, PROCEDURE, 
                USER, TABLE, EXTERNAL TABLE, SYSTEM TABLE, SEQUENCE, 
                SYSTEM VIEW, MANAGEMENT VIEW, MANAGEMENT TABLE, SYNONYM, 
                VIEW, MATERIALIZED VIEW TO NEWADMIN WITH GRANT OPTION;
SYSTEM(ADMIN)=> GRANT all ADMIN TO NEWADMIN WITH GRANT OPTION;

配置和运行漏洞评估

漏洞评估在Guardium设备上运行。 该设备可以部署为硬件设备或虚拟设备,也可以部署为VMware虚拟机。 这不会影响漏洞评估的配置或功能。 有关如何安装和部署Guar​​dium设备的详细信息,请参阅安装指南

假定具有基本配置的Guardium设备可用。 还假定了解Guardium设备基础知识,例如如何访问设备。

可以通过设备的Web界面访问漏洞评估。 登录到Web界面,然后选择“ 评估/强化”选项卡,然后选择“ 漏洞评估”选项卡。 如图1所示,可以通过此门户访问配置和评估结果。

图1.漏洞评估界面
该图显示了漏洞评估界面

漏洞评估评估数据库配置和用户权利。 有关数据库这些方面的信息可从系统表或在OS级别访问的文件和脚本中获得。 只要提供有效的凭据,就可以通过数据库连接访问存储在系统表中的信息。 通过脚本和文件可用的配置将要求在操作系统级别具有更高的特权访问。

为了在OS级别提供访问权限,部署了配置审核系统(CAS)。 CAS客户端是安装在数据服务器上的小型软件代理,它定期轮询相关的配置文件或OS脚本输出,并将数据发送到在Guardium设备上运行的CAS服务器。 漏洞评估使用此信息来提供对数据库系统的全面评估。

CAS客户端代理具有简单的命令行安装。 通过调用安装脚本并提供Java™和安装目录的路径来执行安装。 请注意,必须在Netezza设备上安装Java Runtime Environment。 安装必须在root帐户下运行。 图2显示了CAS客户端代理安装的示例。

图2. CAS安装
该图显示了CAS的安装

安装后,需要编辑guard_tap.ini配置文件。 可以在CAS安装目录中的%cas_install_dir%/ etc / guard_tap.ini下找到它。 必须编辑两个条目:sqlguard_ip,它是Guardium设备的IP地址。 和tap_ip,这是主机Netezza设备的IP地址。 这些参数最初设置为NULL。 在图3中,guard_tap.ini的sqlguard_ip和tap_ip条目被编辑为有效IP地址。

图3.编辑guard_tap.ini配置文件
该图显示了编辑guard_tap.ini配置文件

要验证CAS客户端代理的状态,请以管理员身份登录并在管理控制台的“本地分接头”下检查“ CAS状态”。 图4显示了已安装和配置的CAS客户端代理的状态。

图4. CAS状态
该图显示了CAS状态

现在,我们将继续配置漏洞评估。 以Guardium用户身份登录后,通过依次单击“ 评估/ Harden”选项卡,“ 漏洞评估”来访问“漏洞评估”应用程序,然后定义要评估的数据库。

在“安全评估查找器”面板上,单击“ 新建” 。 这将打开Security Assessment Builder,如图5所示。

图5.安全评估生成器
该图显示了安全评估生成器

输入合适的描述。 您可以忽略观察到的测试参数。 观察到的测试使用审计数据,仅当使用S-TAP软件代理和适当安装的安全策略执行数据库活动监视时,审计数据才可用。 对于这种情况,假定Netezza设备上未部署Guar​​dium数据库活动监视(DAM)。

为了运行数据库评估,需要具有有效凭证的数据源。 要配置数据源,请点击添加数据源 。 在“数据源查找器”面板中,单击“ 新建” 。 输入有权访问系统表的用户的数据库凭据。 Guardium提供了一个脚本,该脚本使用运行漏洞评估测试所需的最低特权来创建Netezza用户。 这些脚本可作为“数据库用户角色定义”软件包的一部分下载。 图6显示了示例数据源定义。

图6.数据源定义
该图显示了数据源定义

除了数据库连接之外,我们还需要指定CAS要监视的数据库和OS对象。 来自CAS监控项目的数据将用于评估测试。 Guardium为要由CAS监视的每个数据环境提供了一组项目。 这些集称为模板。

要应用CAS模板,请在“安全评估生成器”面板中单击“ CAS支持 ”。 打开CAS评估支持后,从“ 选择模板集”下拉菜单中选择“ UNIX / Netezza评估” ,然后单击“ 添加” 。 模板集将添加到“当前实例监视”部分下,如图7所示。单击“ 保存”以保存配置。

图7. CAS评估支持
该图显示了CAS评估支持

在此阶段,我们准备选择和配置要针对Netezza设备运行的测试。

作为评估的一部分,可以选择运行许多测试。 在“安全评估生成器”中单击“ 配置测试 ”将弹出“评估测试选择”面板。 每个数据库平台都有一组测试。 选择一个测试,然后单击“ 添加选择”以将该测试添加到顶部的“安全评估测试”部分。 图8显示了所有用于评估的Netezza特定测试。

图8.评估测试选择
该图显示了CAS评估测试的选择

可以调整某些测试以覆盖默认设置,或为用户/组特权评估添加例外。 例如,调整授予用户和/或组的Global admin特权提供了分配例外组的选项,如图9所示。这使我们可以指定一个我们选择具有全局admin特权的用户列表。 ,即Netezza受信任的用户。 因此,这些具有全局管理员特权的用户不会触发此评估测试的失败。

图9.调优评估测试
该图显示了调整评估测试

我们将为所有测试选择默认设置,然后运行评估。 要运行评估,请选择在Security Assessment Finder中创建的漏洞评估(如图10所示),然后选择Now Now Now

图10.运行评估
该图显示了运行评估

评估状态显示在“ Guardium作业队列”下,显示在“安全评估查找器”右侧的面板中。 图11显示了进行中的评估。 评估完成后,状态将更改为“完成”。

图11. Guardium作业队列中的评估
该图显示了Guardium作业队列中的评估

评估完成后,在“安全评估查找器”中选择评估,然后单击“ 查看结果” 。 图12显示了漏洞评估报告的示例。

图12.评估结果
该图显示了评估结果

根据评估结果给出及格分数。 每个测试都会通过或失败,如果无法完成,则将其标记为错误。 测试失败还包括有关如何解决导致测试失败的问题的建议。 接下来,我们将解决这些失败测试的数量,以提高Netezza设备的安全性并减少其漏洞。

解决Netezza设备漏洞

在这里,我们讨论并解决由Guardium漏洞评估确定的某些漏洞。 根据您的环境,您可能不需要解决所有遇到的漏洞,而可以定义异常。

密码长度

Guardium强调的第一个安全问题是缺少最小密码长度。 Netezza设备具有良好的默认安全设置,但是在具有大量用户和更广泛访问权限的环境中,可能有必要实施一组密码控件。

图13.密码长度
该图显示了密码长度

Netezza提供以下功能:

  • 强制设置最小密码长度
  • 加强密码复杂性
  • 多次尝试登录失败后锁定用户帐户
  • 在指定时间段后强制更改密码
  • 限制用户访问特定时间段

用户身份验证也可以移交给LDAP服务器-例如,对所有用户帐户具有一致的密码控制。 但这超出了本文的范围。

如前所述,Netezza是建立在PostgreSQL数据库上的,因此难怪您会在PostgreSQL配置文件中找到许多所需的更改。 要更改最小密码长度,您需要以nz用户身份连接到Netezza主机。 导航到包含配置文件,日志文件,系统目录等的文件夹: cd /nz/data

现在,我们需要修改postgresql.conf文件。 例如,使用VI,您将在文件末尾附近找到参数:

#password_length = 4      # minimum value is 4

取消注释该参数并将该值设置为最小值8,以满足Guardium要求:

password_length = 8      # minimum value is 4

保存文件后,您需要重新启动Netezza数据库软件以启用设置:

[nz@netezza data]$ nzstop;nzstart

无效尝试

Guardium检测到的第二项设置为漏洞是无效尝试设置。 强制执行此操作可确保在一定数量的错误登录尝试后,用户将被锁定。 这样可以确保在暴力攻击中不会猜出密码不安全的用户。

图14.无效的尝试
该图显示了无效尝试

可以在同一配置文件postgresql.conf中找到该设置,类似于最小密码长度。 默认情况下,该设置为禁用:

#invalid_attempts = 0     # zero - no limit

通过删除#字符取消注释该行,并将其值更改为3以满足Guardium要求:

invalid_attempts = 3     # zero - no limit

和以前一样,您需要重新启动Netezza设备才能启用此设置:

[nz@netezza data]$ nzstop;nzstart

如果用户三次输入错误的密码,则该帐户将被锁定,并且需要管理员使用以下命令将其解锁:

SYSTEM(ADMIN)=> alter user %username% reset account;

密码验证不使用明文

图15.密码认证不使用明文
该图显示了密码身份验证未使用明文

这一发现实际上更为复杂。 Netezza允许您为不同的IP范围指定不同的连接类型。 您可以指定是否以明文形式或哈希形式传输密码,还可以指定IP范围是否必须使用安全的加密SSL连接进行连接。 连接类型存储在/nz/data/pg_hba.conf文件中,可以在此处直接进行编辑。 但这是不鼓励的。 相反,您应该使用Netezza提供SQL管理命令来管理连接类型。

要显示当前定义的连接,您需要以管理员身份连接到Netezza设备。 运行以下命令以显示所有可用的连接类型:

SYSTEM(ADMIN)=> show connection;

在新系统上,您应该看到类似以下的内容:

SYSTEM(ADMIN)=> show connection;
CONNID | CONNTYPE | CONNDB | CONNIPADDR |   CONNIPMASK    | CONNAUTH
-------+----------+--------+------------+-----------------+----------
     1 | local    | all    |            |                 | trust
     2 | host     | all    | 127.0.0.1  | 255.255.255.255 | password
     3 | host     | all    | 0.0.0.0    | 0.0.0.0         | md5
(3 rows)

可以为同一IP范围定义多种连接类型。 在这种情况下,将使用第一个配件条目。 在我们的示例中,我们有三种类型:内部本地类型,来自localhost的用户的明文密码身份验证以及来自计算机外部的用户的md5哈希身份验证。

您可以忽略本地连接,因为Netezza在内部使用了本地连接。 Guardium抱怨连接类型2中来自localhost的明文(密码)身份验证。这没有明显的安全风险,因为没有通过网络传输密码。 因此,我们可以为此漏洞定义一个例外。

另一种选择是将连接2的连接类型也更改为md5。 我们将这样做来演示如何使用连接类型。 牢记连接顺序很重要。 将应用与来电IP地址匹配的从顶部开始的第一个连接。 首先具有更多限制连接类型很重要。 第二个问题是没有ALTER CONNECTION TYPE命令。 因此,无法更新第二个连接类型。 我们只能将其删除并再次添加。 这将更改连接的顺序。

为了保持连接顺序并更新连接类型2,我们需要删除并重新创建连接类型3以保持顺序不变。 删除连接类型2和3:

SYSTEM(ADMIN)=> drop connection 3;
SYSTEM(ADMIN)=> drop connection 2;

现在,使用更改为CONNAUTH md5重新创建连接类型2:

SET CONNECTION HOST DATABASE 'all' IPADDR '127.0.0.1' IPMASK '255.255.255.255' AUTH md5;

并重新创建连接类型3:

SET CONNECTION HOST DATABASE 'all' IPADDR '0.0.0.0' IPMASK '0.0.0.0' AUTH md5;

现在,您已将所有连接(甚至是本地连接)的授权更改为MD5。

图16.授予公共的对象特权
该图显示了授予公共的对象特权

Netezza中的PUBLIC组是一个特殊的用户组,其中包含系统的所有用户。 所有用户都可以使用添加到该组的任何特权。 通常,您应该具有与PUBLIC组关联的尽可能少的特权。 要查看与PUBLIC组关联的特权,请从nzsql执行以下命令:

SYSTEM(ADMIN)=> \dpg PUBLIC
Group object permissions for group 'PUBLIC'
Database Name |           Object Name            | L S I U D T L A D B L G O E
C R X A | D G U T E X Q Y V M I B R C S H F A L P N S
---------------+----------------------------------+-----------------------------
--------+---------------------------------------------
 GLOBAL        | _V_JDBC_TABLETYPES2              | X X
        |
 GLOBAL        | _V_GROUP_PRIV                    | X X
        |
 GLOBAL        | _V_USER_PRIV                     | X X
                ...

我们可以看到,默认情况下,PUBLIC组可以读取大量视图。 其中一些似乎包含敏感信息,例如表名,用户特权,甚至是在系统中运行的查询。 这显然是违反安全性的,因为查询可能包含敏感信息,例如在WHERE条件下。 但是,当您从视图中选择数据时,Netezza确保没有用户可以访问他不应该看到的信息。 视图为每个用户返回不同的信息,并且不会显示用户不应访问的信息。

这些视图对于与JDBC,ODBC等的连接以及NZAdmin图形用户客户端的使用是必需的,并且不应从PUBLIC组中删除。 我们将为这些对象添加一个例外到Guardium VA。 这是可取的,因为我们仍然想警告添加到PUBLIC组的任何其他特权,并且可能向每个用户提供对敏感信息的访问。

要查看未通过此测试的对象的完整列表,请单击“ 授予公共测试标题的对象特权”

图17.授予公共的对象特权
该图显示了授予公共的对象特权

要为这些对象创建例外,请从“ 评估测试选择”列表中选择“ 授予公共(Netezza)测试的对象特权评估测试调整” 。 从“例外”组下拉菜单中选择“ Netezza允许的公共拨款”

图18.测试调整
该图显示了测试调整

单击下拉菜单右侧的小图标可打开组编辑器。 将图22所示的列表中的对象添加到该组,如图24所示。保存带有添加的异常组的测试,然后重新运行Vulnerability Assessment测试。 添加到组中的对象将从测试中排除,但其他未通过此测试的对象将被标记。

图19.异常组
该图显示了例外组

我们研究了Guardium在一个空系统中识别出的一些漏洞。 其中一些可以很容易地解决; 其他不是真正的漏洞,可以放在例外列表中。 在进行了这些初始修改之后,我们可以定期运行漏洞评估报告,并会收到有关添加到系统的任何漏洞的通知。

审核Netezza使用权利

漏洞评估可以检测不安全的用户权限,并提出有关提高用户和组权限的建议。 但是,需要不断审核用户权利。 Guardium权利报告简化了对各种用户特权的检查和审核。 可以通过“ 查看”选项卡访问权利报告。

图20.数据库权利报告
该图显示了数据库权利报告

以下是Netezza特定的数据库权利报告的列表:

  • Netezza Obj Privs授予
  • Netezza Admin(按数据库用户名)
  • Netezza Obj按数据库用户名专有
  • Netezza Obj按集团划分
  • 授予Netezza Admin Privs
  • Netezza组/角色授予用户
  • Netezza Global Admin面向用户和组
  • Netezza Global Obj面向用户和群体
  • Netezza Admin按数据库用户名组专有
  • Netezza管理员按组划分

权利信息基于相关系统表中的数据。 因此,要填充权利报告,需要具有适当凭据的数据源来访问这些系统表。 为了配置数据上传,请打开“ 监视/审计 选项卡下的“ 构建报告”选项卡,然后单击“ 定制表构建器”

图21.报告构建选项
Image shows Reporting               building options

Select a desired entitlement report from the list and click Upload Data .

Figure 22. Custom tables
Image shows Custom tables

Add a data source by clicking Add Datasource and selecting an existing data source or creating a new data source by entering credentials with access to relevant systems tables. Use the Scheduling tool to schedule data import frequency, or click Run Once Now for ad-hoc data upload. The figure below shows a sample configured Import Data panel.

Figure 23. Uploading data
Image shows Uploading data

The report will be populated with data from the Netezza appliance. The figure below shows an example of the Netezza Group/Role Granted to User report populated with sample entitlement data.

Figure 24. Populated entitlement report
Image shows Populated entitlement report

We are now able to audit the user configuration and ensure that any changes made are acceptable.

Conclusion and outlook

In this article, we have explained the basic concepts of securing a Netezza appliance with Guardium. We have described the basic Netezza security model and have provided an example for an initial security setup. We then configured and executed a Guardium Vulnerability Assessment of the Netezza appliance, and discussed and solved a number of the identified vulnerabilities. Finally, we went through the Guardium entitlement reports.

Together, vulnerability assessments and entitlement reports allow a company to monitor and identify potentially dangerous changes to the Netezza security setup that might put sensitive customer information at risk. The article has covered the basic aspects of securing a Netezza appliance with Guardium. More advanced topics would be implementing LDAP authentication, row-level security or SSL encryption in Netezza, and the implementation of auditing and more advanced Guardium features, such as S-GATE Termination for restricting access to sensitive information.


翻译自: https://www.ibm.com/developerworks/data/library/techarticle/dm-1210guardiumnetezza/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值