亚马逊AWS官方博客

AWS Security Hub 现已正式发布

我是一名开发人员,或者至少我在被任命成为一名经理时这样告诫自己。我绝对不是一位信息安全专家。在我的职业生涯中,我不止一次被寻呼,因为我编写或配置的内容引起了安全问题。当系统启用频繁部署并删除网关守卫以进行试验时,有时会出现不兼容的资源。这便是我喜欢 AWS Security Hub 等工具的原因,该工具是一种服务,支持自动执行合规性检查以及聚合了来自各种服务的见解。建立这样的防护机制可确保事情按既定计划进行,这样我可以更自信地进行试验。此外,还可以集中查看多个系统的合规性检测结果,当我采用自助方式时,信息安全更助我一臂之力。

通过云计算,我们在合规性和安全性方面有一个责任共担模式。AWS 处理云安全性:从数据中心到虚拟化层和主机操作系统的所有对象的安全性。客户处理云的安全性:宾客操作系统 (GOS)、系统配置和安全软件开发实践。

目前,AWS Security Hub 已从预览版升级为正式发行,可帮助您了解云中的安全状态。它可跨 AWS 账户运行,并与许多 AWS 服务和第三方产品集成。您也可以使用 Security Hub API 创建自己的集成。

开始使用

启用 AWS Security Hub 时,将通过 IAM 服务相关角色自动创建权限。自动化持续合规性检查将立即开始。合规性标准确定了这些合规性检查和规则。第一个可用的合规性标准是 Center for Internet Security (CIS) AWS Foundations Benchmark。今年我们将增加更多的标准。

这些合规性检查的结果称为检测结果。每个检测结果都会告知您问题的严重性、报告该问题的系统、受影响的资源以及许多其他有用的元数据。例如,可能会显示这样一个检测结果,它告知您应该为根账户启用多重验证,或者有一些凭证已经 90 天没有使用,应该撤销。

可以使用聚合语句和筛选条件将检测结果分组为见解

集成

除了合规性标准检测结果外,AWS Security Hub 还可聚合和标准化来自各种服务的数据。它是一个中央资源,集中了来自 AWS Guard DutyAmazon InspectorAmazon Macie 以及 30 个 AWS 合作伙伴安全解决方案的检测结果。

AWS Security Hub 还支持从自定义系统或专有系统导入检测结果。检测结果必须格式化为 AWS Security Finding Format JSON 对象。下面是我创建的一个对象示例,它满足格式的最低要求。要将其用于您的账户,请切换出 AwsAccountIdProductArn。要获取自定义检测结果的 ProductArn,请替换以下字符串中的 REGIONACCOUNT_IDarn:aws:securityhub:REGION:ACCOUNT_ID:product/ACCOUNT_ID/default

{
    "Findings": [{
        "AwsAccountId": "12345678912",
        "CreatedAt": "2019-06-13T22:22:58Z",
        "Description": "This is a custom finding from the API",
        "GeneratorId": "api-test",
        "Id": "us-east-1/12345678912/98aebb2207407c87f51e89943f12b1ef",
        "ProductArn": "arn:aws:securityhub:us-east-1:12345678912:product/12345678912/default",
        "Resources": [{
            "Type": "Other",
            "Id": "i-decafbad"
        }],
        "SchemaVersion": "2018-10-08",
        "Severity": {
            "Product": 2.5,
            "Normalized": 11
        },
        "Title": "Security Finding from Custom Software",
        "Types": [
            "Software and Configuration Checks/Vulnerabilities/CVE"
        ],
        "UpdatedAt": "2019-06-13T22:22:58Z"
    }]
}

然后,我编写了一个名为 importFindings.js 的快速 node.js 脚本来读取这个 JSON 文件,并通过 AWS JavaScript 开发工具包将其发送到 AWS Security Hub。

const fs    = require('fs');        // For file system interactions
const util  = require('util');      // To wrap fs API with promises
const AWS   = require('aws-sdk');   // Load the AWS SDK

AWS.config.update({region: 'us-east-1'});

// Create our Security Hub client
const sh = new AWS.SecurityHub();

// Wrap readFile so it returns a promise and can be awaited 
const readFile = util.promisify(fs.readFile);

async function getFindings(path) {
    try {
        // wait for the file to be read...
        let fileData = await readFile(path);

        // ...then parse it as JSON and return it
        return JSON.parse(fileData);
    }
    catch (error) {
        console.error(error);
    }
}

async function importFindings() {
    // load the findings from our file
    const findings = await getFindings('./findings.json');

    try {
        // call the AWS Security Hub BatchImportFindings endpoint
        response = await sh.batchImportFindings(findings).promise();
        console.log(response);
    }
    catch (error) {
        console.error(error);
    }
}

// Engage!
importFindings();

快速运行 node importFindings.js 将生成 { FailedCount: 0, SuccessCount: 1, FailedFindings: [] }。现在,我可以在 Security Hub 控制台中看到我的自定义发现结果:

自定义操作

AWS Security Hub 可以通过使用自定义操作集成响应和补救工作流。通过自定义操作,可使用一批选定的检测结果生成 CloudWatch 事件。通过 CloudWatch 规则,这些事件可以触发其他操作,例如通过聊天系统或寻呼工具发送通知,或向可视化服务发送事件。

首先,我们在 AWS Security 控制台中打开设置,并选择自定义操作。添加自定义操作并记下 ARN。

然后,我们使用在事件模式中作为资源创建的自定义操作创建 CloudWatch 规则,如下所示:

{
  "source": [
    "aws.securityhub"
  ],
  "detail-type": [
    "Security Hub Findings - Custom Action"
  ],
  "resources": [
    "arn:aws:securityhub:us-west-2:123456789012:action/custom/DoThing"
  ]
}

我们的 CloudWatch 规则可以有许多不同类型的目标,例如 Amazon Simple Notification Service (SNS) 主题、Amazon Simple Queue Service (SQS) 队列和 AWS Lambda 函数。实施我们的操作和规则后,我们就可以选择检测结果,然后从“操作”下拉列表中选择我们的操作。这会将选择的检测结果发送到 Amazon CloudWatch Events。这些事件将与我们的规则匹配,且事件目标将被调用。

重要说明

  • 必须启用 AWS Config 才能运行 Security Hub 合规性检查。
  • AWS Security Hub 现已在 15 个区域推出:美国东部(弗吉尼亚北部)美国东部(俄亥俄)美国西部(俄勒冈)美国西部(加利福尼亚北部)加拿大(中部)南美洲(圣保罗)欧洲(爱尔兰)欧洲(伦敦)欧洲(巴黎)欧洲(法兰克福)亚太地区(新加坡)亚太地区(东京)亚太地区(悉尼)亚太地区(首尔)以及亚太地区(孟买)
  • AWS Security Hub 不会将数据传输到生成数据的区域之外。数据不会跨多个区域整合。

AWS Security Hub 已经是我将在大多数由我操作的 AWS 账户中启用的服务类型。今年,随着更多合规性标准即将推出,我预计它将成为许多工具箱中的标准工具。可以免费试用 30 天,因此您可以试用一下,估算一下您将需要的成本。一如既往,我们希望听到您的反馈,并了解您如何使用 AWS Security Hub。保持联系,快乐构建!

— Brandon