如何用H2o保证数据安全

244 阅读5分钟

用H2o保护数据安全

H2O是一个与包括Python在内的许多编码语言兼容的库。这个库可以用来分析描述性和预测性趋势。

它与Python中的其他机器学习库类似。包括安全的选项是一个隐藏的优势,许多Python库可能不包括。

继续阅读,了解在使用H2O和Python时,如何在整个数据分析周期内实现安全。

简介

数据分析领域的安全问题对内部和外部都很重要。

虽然网络周围的网络安全保护增加了稳定性,但编码程序中的数据似乎仍然很脆弱。网络威胁和攻击是不可预测的,然而,本教程展示了在数据访问开始之前、期间和之后需要考虑的几种安全预防措施之一。

在本教程中,同时介绍了Python编程中一个名为H2O的模块和bash命令。记住,本教程是在root

本教程将H2O作为与数据分析周期有关的模块,从数据分析周期的各个阶段考虑安全性。安全性考虑了以下几个方面:H2O实例、数据文件和数据库。

前提条件

  1. Linux计算机操作系统(OS)或具有root 授权的Linux容器(本教程使用[Kali Linux]。
  2. 基本的Bash知识。
  3. Python(最好是3.3以上,本教程使用3.9)。
  4. 关于[如何安装H2O],[如何创建H2O实例],以及[如何创建安全文件]的前期知识
  5. Bash安装。H2O, Java,keytools, 和一个Linux文本编辑器。
  6. H2O的Python安装。
  7. 一些Java编码知识。
  8. 能上网的互联网浏览器。

安装

本节要强调的是,Bash适合于本教程。

可以理解的是,个人可能没有一个Linux操作系统。解决这个兼容性问题的几个办法之一是完成一个容器的成功安装。有一些选择,如Ubuntu LTS或Kali Linux。

这两个选项都能够发挥作用,然而,某些选项是用于特定目的的。Kali Linux以道德笔测试而闻名,而Ubuntu LTS是个人之间普遍使用的版本。

为了使任何安全机制变得稳定,认证文件的生成是必要的。

实例内部安全

一个明显的SSL内部安全变化是当false变成true,如下图所示。

Connection without internal security: false

没有内部安全的连接。

按照Standalone/AWS和Java的指示后,会出现一个专门用于H2O的特定URL的信息,可以用来h2o.init()

Connection with internal security: true

有内部安全的连接。

数据访问不是通用的。如果使用数据库,权限也可以限制谁在登录时和活动状态下可以获得特定的数据访问权。

数据文件安全

文件权限是访问数据文件的几个选项之一。

读、写和执行都是可以实现的默认设置。密码保护也是另一个可以根据角色分配的文件保护器。作为提醒,下面的代码是许多执行权限的方法之一。

下面这段代码指定了阅读的组权限。

import os, sys, stat
os.chmod(“./filename.csv”,  stat.S_IRGRP)

下面这段代码可以将filename.csv移动到一个离线文件夹,并且在任何时候都不能再在线访问。

将文件移动到不同的在线文件夹位置,没有一般的访问权限是另一个选择。

mv ./filename.csv ./offline/

定量的安全测量可以取决于与恢复、损失和技术成本相关的数据集价值。

数据库安全

虽然大多数专家都知道100%的安全和预防技术不是经常可以做到的,但在停止在线服务之前,一些简单的预防解决方案是可以做到的。

具有许多变化的SQL可以出现成为一种著名的数据库语言。SQL注入可以成为一种网络攻击技术,以获得访问和控制,数据库内的数据集表。一个简单的解决方案是限制用户输入。

在H2O实例内读取数据文件之前,很可能该数据文件来自于数据库。

例如,下面的if-then语句可以检测出经常使用的SQL关键词和组合。

如果一个用Java编写的数据库连接到H2,下面这段代码可以检测并拒绝基本的SQL注入攻击。

import static java.lang.System.in;
import java.util.Scanner;
public class Check
{
    public static void main(String[] args)
    {
      Scanner scnr = new Scanner(in);
      String input;
      String alter;
      String drop;
      String insert;
          System.out.println(“Please enter input: “);
          input = scnr.nextLine().toLowerCase();
          if (!input.contains(“alter “) && !input.contains(“drop”) && !input.contains(“insert”) && !input.contains(“select”)) {
                System.out.println("Valid input. Thank you.");
                }
                // Continue with processing data.
            else {
                System.out.println("Invalid input. Try again.");
                // Discontinue procedure to process data.
            }
    }
}

这个Java应用程序可以用于真实的SQL注入场景。用alter,drop, 和insert 提到的任何间距组合的输入都会导致错误信息的出现。

例如,用select 检索数据。

输入。

select table

输出。

Invalid input. Try again.

包括所有面向SQL的命令,以阻止每一次负面影响的尝试是有益的。另一个有用的提示是对库进行进一步研究,如评估源代码。

内置代码的库有可能纳入恶意活动,如内存问题

总结

技术网络攻击可以(也将会)增加,因为技术的复杂性允许存在漏洞。

有许多机制可以确保和保护数据。当攻击成功时,理想的做法是保持替代选择,以管理风险并从影响中恢复。

保护数据是保持数据安全的一种方法。

经验之谈

  • 提高安全性可以从编码程序开始。
  • H2O允许安全选项。
  • 网络攻击是可以用对策来预防的。
  • 应考虑影响,以从网络攻击中恢复。
  • Linux系统和Linux容器可以包括安全和保护。