Amazon Web Services ブログ

AWS Security Hub が一般公開に

私は開発者です。少なくとも、管理者であることは受け入れているつもりです。確かに私は情報セキュリティの専門家ではありません。私の書き込みや設定が原因でセキュリティ上の問題が発生したため、これまでに 1 回以上呼び出されたことがあります。実験のためにシステムがデプロイを頻繁に行えるようにして、ゲートキーパーを取り除くときに、時々準拠していないリソースがこっそり侵入しようとします。こういった理由から、私は AWS Security Hub のようなツールが好きです。AWS Security Hub は、コンプライアンスチェックを自動化し、さまざまなサービスから総合的な洞察を得られるサービスです。このようなガードレールが確実に軌道に乗るように設置すれば、もっと自信を持って実験できるようになります。そして、複数のシステムからのコンプライアンス検出結果を 1 か所にまとめて表示することで、情報セキュリティでのセルフサービスがより快適だということがわかります。

クラウドコンピューティングで、コンプライアンスとセキュリティに関して責任を共有するモデルがあります。AWS はクラウドセキュリティを管理します。データセンターのセキュリティから仮想化レイヤーおよびホストオペレーティングシステムに至るまで、すべてが管理対象になります。お客様はクラウドのセキュリティを管理します。ゲストオペレーティングシステム、システム設定、および安全なソフトウェア開発方法について取り扱います。

現在、AWS Security Hub はプレビューされていません。一般的な用途では使用できるため、クラウド内のセキュリティ状態を理解するのに役立ちます。これは AWS アカウント間で機能し、多くの AWS サービスおよびサードパーティー製品と統合します。また、Security Hub API を使用して独自の統合を作成することもできます。

はじめに

AWS Security Hub を有効にすると、IAM サービスリンクロールを介してアクセス許可が自動的に作成されます。自動化された継続的なコンプライアンスチェックがすぐに始まります。コンプライアンス標準はこれらのコンプライアンスチェックとルールを決定します。利用可能な最初のコンプライアンス標準は、インターネットセキュリティセンター (CIS) AWS Foundations Benchmark です。今年はさらに標準を追加する予定です。

これらのコンプライアンスチェックの結果は、検出結果と呼びます。それぞれの検出結果から、問題の重要度、報告されたシステム、影響を受けたリソース、その他の役立つメタデータを把握できます。たとえば、root アカウントに対して多要素認証を有効にしなければならないこと、90 日間使用されていない資格情報が無効になっていることがわかります。

集計ステートメントとフィルターを使用して、検出結果を洞察に分類できます。

統合

コンプライアンス標準の検出結果に加えて、AWS Security Hub はさまざまなサービスからデータを集計して正規化します。これは、、AWS Guard DutyAmazon InspectorAmazon Macie、および 30 の AWS パートナーセキュリティソリューションによる検出結果の中央リソースです。

AWS Security Hub では、カスタムシステムまたは専用システムからの検出結果のインポートもサポートしています。検出結果は、形式を AWS Security Finding Format JSON オブジェクトに設定する必要があります。こちらは私が作成したオブジェクトの例で、形式の最小要件を満たしています。お客様のアカウントで操作するには、AwsAccountIdProductArn を切り替えます。カスタム検出結果の ProductArn を取得するには、次の文字列の REGIONACCOUNT_ID を置き換えます。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"
    }]
}

その後、この JSON ファイルを読み取り、AWS JavaScript SDK を介して AWS Security Hub に送信するために、importFindings.js という名前の簡単な node.js スクリプトを作成しました。

const fs    = require('fs');        // ファイルシステムとの相互作用
const util  = require('util');      // 約束を使用して fs API をラップ
const AWS   = require('aws-sdk');   // AWS SDK をロード

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

// Security Hub クライアントを作成
const sh = new AWS.SecurityHub();

// readFile をラップすると、約束を返して待つことができます 
const readFile = util.promisify(fs.readFile);

async function getFindings(path) {
    try {
        // ファイルの読み取りを待ちます...
        let fileData = await readFile(path);

        // ...JSON として解析して返します
        return JSON.parse(fileData);
    }
    catch (error) {
        console.error(error);
    }
}

async function importFindings() {
    // ファイルから結果を読み込みます
    const findings = await getFindings('./findings.json');

    try {
        // AWS Security Hub BatchImportFindings エンドポイントの呼び出し
        response = await sh.batchImportFindings(findings).promise();
        console.log(response);
    }
    catch (error) {
        console.error(error);
    }
}

// 連動しました!
importFindings();

ノード importFindings.js をすばやく実行すると、{ FailedCount: 0, SuccessCount: 1, FailedFindings: [] } になります。そして今、Security Hub コンソールでカスタム検出結果を確認できます。

カスタムアクション

AWS Security Hub はカスタムアクションを使用して、レスポンスと修復のワークフローを統合できます。カスタムアクションでは、CloudWatch イベントを生成するために選択した検出結果のバッチを使用します。CloudWatch ルールでは、これらのイベントで、チャットシステムやページングツールを介した通知の送信、または視覚化サービスへのイベントの送信などの他のアクションをトリガーできます。

まず、AWS セキュリティコンソールから [設定] を開き、[カスタムアクション] を選択します。カスタムアクションを追加して 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 に送信されます。それらのイベントがルールと一致すると、イベントターゲットを呼び出します。

重要事項

  • Security Hub コンプライアンスチェックを実行するには、AWS Config を有効にする必要があります。
  • AWS Security Hub は本日から、米国東部 (バージニア北部)米国東部 (オハイオ)米国西部 (オレゴン)米国西部 (北カリフォルニア)カナダ (中部)南米 (サンパウロ)欧州 (アイルランド)欧州 (ロンドン)欧州 (パリ)欧州 (フランクフルト)アジアパシフィック (シンガポール)アジアパシフィック (東京)アジアパシフィック (シドニー)アジアパシフィック (ソウル)アジアパシフィック (ムンバイ) の 15 か所のリージョンでご利用いただけます。
  • AWS Security Hub は、データが生成されたリージョンの外部にデータを転送しません。複数リージョンのデータは統合されていません。

AWS Security Hub は、私が運営する AWS アカウントの大部分ですでに有効にする予定のサービスタイプです。今年より多いコンプライアンス標準が利用可能になるにつれて、多くのツールボックスの中で標準的なツールになると期待しています。30 日間の無料お試し版がありますので、ぜひお試しください。コストの見積もりを入手できます。いつものように、お客様のフィードバックをお待ちしています。AWS Security Hub の使用方法をお聞かせください。ご連絡お待ちしています。構築をお楽しみください!

— Brandon