Compliance-Checks automatisiert durchführen Erste Schritte mit dem AWS Security Hub

Autor / Redakteur: Bertram Dorn / Peter Schmitz |

In Entwicklungsumgebungen, in denen schnelle und häufige Deployments die Regel sind, schleichen sich leicht unbemerkt Fehler in den Code. Der AWS Security Hub ermöglicht automatisierte Compliance-Checks und liefert aggregierte Informationen zu einer Reihe von Cloud-Services.

Anbieter zum Thema

Der Security Hub soll AWS-Kunden einen umfassenden Überblick über wichtige Sicherheitsmeldungen und den Compliance-Status mehrerer AWS-Konten liefern.
Der Security Hub soll AWS-Kunden einen umfassenden Überblick über wichtige Sicherheitsmeldungen und den Compliance-Status mehrerer AWS-Konten liefern.
(Logo: AWS)

Nach der Aktivierung des AWS Security Hub werden automatisch Berechtigungen über IAM-Service-verknüpfte Rollen erstellt. Damit starten unmittelbar automatisierte und kontinuierliche Compliance-Kontrollen für die einzelnen AWS Account Konfigurationen. Dabei greift der Dienst auf so genannte „Compliance-Standards“ zu, in denen die Kontrollparameter und Regeln festgelegt sind. Als erster, voreingestellter Compliance-Standard ist der „Center for Internet Security (CIS) AWS Foundations Benchmark“ verfügbar. Weitere Standards werden im Laufe des Jahres hinzugefügt.

Die Ergebnisse dieser Compliance-Checks sowie die von den teilnehmenden Diensten an Security Hub gesendeten Informationen werden als Befunde (Findings) bezeichnet. Jeder Befund liefert Informationen darüber, wie das Problem klassifiziert ist, welches System oder welcher Dienst die Auffälligkeit gemeldet hat, welche Ressourcen es betrifft sowie viele weitere nützliche Metadaten. So wird möglicherweise angezeigt, dass die Multi-Faktor-Authentifizierung für ein Root-Konto aktiviert werden sollte. Oder dass es Anmeldeinformationen gibt, die seit 90 Tagen nicht mehr verwendet wurden und die widerrufen werden sollten. Die einzelnen Befunde können mit Hilfe von Aggregationsanweisungen und Filtern zu „Insights“ zusammengefasst werden.

Bildergalerie
Bildergalerie mit 7 Bildern

Zusätzlich zu den Ergebnissen der Compliance-Standards aggregiert und normalisiert der AWS Security Hub auch Daten aus einer Vielzahl von Diensten. Es handelt sich darüber hinaus um eine zentrale Quelle für Befunde von AWS Guard Duty, Amazon Inspector, Amazon Macie sowie von 30 Sicherheitslösungen von AWS-Partnern aus dem Umfeld der Sicherheitssoftware und -Dienstleistungen.

Der AWS Security Hub unterstützt zusätzlich den Import von Ergebnissen aus eigenen, proprietären Systemen. Die Ergebnisse müssen als AWS Security Finding Format JSON-Objekte formatiert werden. Der Code unten zeigt ein Beispiel für ein Objekt, das die Mindestanforderungen für das Format erfüllt. Damit es für ein Konto funktioniert, müssen die AwsAccountId und die ProductArn gesetzt sein. Um einen ProductArn für eigene Befunde zu erhalten, müssen die Parameter REGION und ACCOUNT_ID im folgenden String angepasst werden:

arn: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"
  }]
}

Über das folgende node.js-Skript namens importFindings.js wird diese JSON-Datei gelesen und über das AWS JavaScript SDK an den AWS Security Hub geschickt.

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();

Ein schneller Durchlauf von node importFindings.js führt dann zu { FailedCount: 0, SuccessCount: 1, FailedFindings: [] }. Das Ergebnis erscheint dann in der Security Hub-Konsole.

Bildergalerie
Bildergalerie mit 7 Bildern

Benutzerdefinierte Aktionen

Der AWS Security Hub kann durch die Verwendung von benutzerdefinierten Aktionen in Response- und Korrektur-Workflows integriert werden. Bei benutzerdefinierten Aktionen wird ein Batch ausgewählter Befunde verwendet, um CloudWatch-Events zu generieren. Mit CloudWatch-Regeln können diese Events andere Aktionen auslösen, beispielsweise das Senden von Benachrichtigungen über ein Chatsystem oder Paging-Tool oder das Senden von Events an eine Visualisierungslösung oder ein übergeordnetes SIEM System. Die Einstellungen dazu befinden sich in der AWS Security Console unter Benutzerdefinierte Aktionen.

Aus solchen Aktionen kann eine CloudWatch-Regel entstehen. Sie basiert auf einer Ressource des zuvor angelegten Event-Patterns.

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

Eine solche CloudWatch-Regel kann viele verschiedene Arten von Zielen haben, zum Beispiel Amazon Simple Notification Service (SNS) Topics, Amazon Simple Queue Service (SQS) Queues und AWS-Lambda-Funktionen. Sobald die Aktion beziehungsweise Regel umgesetzt ist, lassen sich die Befunde und entsprechend auszuführende Aktionen aus einer Dropdown-Liste auswählen. Dadurch werden die ausgewählten Befunde an Amazon CloudWatch Events gesendet. Diese Ereignisse entsprechen der zuvor festgelegten Regel, und die zum Event gehörenden Targets werden aufgerufen.

Über den Autor: Bertram Dorn ist Principal Solutions Architect Security and Compliance bei Amazon Web Services.

(ID:46216240)