はじめに
みなさんはASFF(AWS Security Finding Format)をご存じでしょうか?
ASFFは、セキュリティ検出結果を詳細に記述するためにAWSが定めた標準形式です。
今回はASFFの中でも最上位属性について解説します。
ASFFとは
ASFFは、AWSのセキュリティサービスが生成するセキュリティ情報を統一フォーマットで表現するための形式です。
さまざまなAWSサービスからのセキュリティアラートや検出結果のフォーマットを定めることで、情報を統一化して一元的に管理しやすくしています。
実際にASFFによって統一したフォーマットを利用したセキュリティアラートや検出結果を見ることができる主なサービスは、2025年2月現在以下の通りです。
AWSサービス名 | AWSサービスの利用目的 |
---|---|
Amazon GuardDuty | 脅威検出サービス |
Amazon Inspector | 自動セキュリティ評価サービス |
AWS Config | リソース設定の監視と管理 |
AWS Firewall Manager | セキュリティポリシー管理サービス |
AWS Macie | データ保護サービス(S3) |
AWS Systems Manager | 運用データの統合管理 |
AWS Security Hub | セキュリティアラートの統合管理 |
こちらの公式ページにて、ASFFが使用できるサービスの全体像がありますので、そちらもご参照ください。
必須のASFF最上位属性とは
AWSサービスからのセキュリティアラートや検出結果の報告において必須の要素として定義されている項目のことです。
今回はAWS Security Hubで必要とされている必須のASFF最上位属性について例として記載します。
各属性がサンプルJSONでどのように表現されているかを確認するため、後述の実例と合わせてご覧ください。
AWS Security Hubに必要なASFFの最上位属性
AWS Security Hubに必要なASFFの最上位属性を簡潔にまとめると以下の通りです。
- AwsAccountId: 検出結果が適用されるAWSアカウントID
- CreatedAt: 検出結果が作成された日時
- Description: 検出結果の説明
- GeneratorId: 検出結果を生成したソリューションの識別子
- Id: 検出結果の一意の識別子
- ProductArn: 検出結果を生成した製品のAmazonリソースネーム(ARN)
- Resources: 検出結果が参照するリソースの詳細
- SchemaVersion: 検出結果で利用しているASFFのスキーマバージョン
- Severity: 検出結果の緊急度
- Title: 検出結果のタイトル
- Types: 検出結果がどのカテゴリーに属したものなのか
- UpdatedAt: 検出結果の最終更新日時
こちらの公式ページでは、AWS Security Hubのコントロール検出結果のサンプルが公開されています。以下に、サービスマネージドスタンダードのAWS Control Towerのサンプル結果を例として、上記の最上位属性がどのように使われているか確認してみましょう。
サンプルJSONにおける最上位属性の実例
{ "SchemaVersion": "2018-10-08", "Id": "arn:aws:securityhub:us-east-1:123456789012:subscription/service-managed-aws-control-tower/v/1.0.0/CloudTrail.2/finding/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "ProductArn": "arn:aws:securityhub:us-east-1::product/aws/securityhub", "GeneratorId": "service-managed-aws-control-tower/v/1.0.0/CloudTrail.2", "AwsAccountId": "123456789012", "Types": [ "Software and Configuration Checks/Industry and Regulatory Standards" ], "Title": "CT.CloudTrail.2 CloudTrail should have encryption at-rest enabled", "Description": "This AWS control checks whether AWS CloudTrail is configured to use the server side encryption (SSE) AWS Key Management Service (AWS KMS) customer master key (CMK) encryption. The check will pass if the KmsKeyId is defined.", "Resources": [ { "Type": "AwsAccount", "Id": "AWS::::Account:123456789012", "Partition": "aws", "Region": "us-east-1" } ] }
- SchemaVersion: ASFFのスキーマバージョン。2025年2月現在は、2018-10-08です。
- Id: この識別子は以下の情報を含みます:
- AWS Security Hubにサブスクライブされている
- AWS Control Towerのマネージドルールを使用
- ルールのバージョンは1.0.0
- CloudTrail.2という特定のセキュリティチェックから検出された結果です
- ProductArn: 検出結果を生成した製品のAmazonリソースネーム(ARN)です。ProductArnの値は、対象のサービスによって以下のように設定されます:
- AWS Security Hubと統合済みのAWSサービス:'product/aws company-id'の形式
- AWS Security Hubと未統合のAWSサービス:サードパーティー製品として扱われ、値の変更が可能
- GeneratorId: 検出結果を生成したソリューションの識別子です。"Id"とほぼ同等の意味です。
- AwsAccountId: 検出結果が適用されるAWSアカウントIDです。
- Types: 検出結果がどのカテゴリーに属したものなのかです。AWSにて用意された基本的なセキュリティのベストプラクティスにカテゴライズされたことになります。
- Title: 検出結果のタイトルです。Security Hub controls for CloudTrailで検知しているので、CloudTrailのログファイルを保管する際に、暗号化によるセキュリティ強化をベストプラクティスに合わせることになります。
- Description: 検出結果の説明です。"Title"で示した内容を準拠させるための具体的な方法が記載されています。
- Resources: 検出結果が参照するリソースの詳細です。
終わりに
ASFFは最上位属性だけでも有用な情報がいくつも含まれています。
AWS Security Hubを利用する上で必ず何度も見ることになるものなので、ASFFに触れるきっかけとなれば幸いです。