メインコンテンツまでスキップ
Sumo Logic Japanese

AWS Config のログの収集

Amazon Web Services (AWS) Config は、AWS アカウントに属するリソースへの変更をトラッキングするために使用できるシンプルな Web サービス インターフェイスを提供します。AWS Config 用 Sumo Logic アプリケーションが提供する変更通知には、リソースの設定やリソースの変更に関する情報のスナップショットが含まれます。このアプリケーションでは、事前定義済みのライブ ダッシュボード、インタラクティブ ダッシュボード、およびフィルタを使用して、環境を視覚化することにより、全体的な使用状況をリアルタイムで分析できます。

ログ タイプ

AWS Config 用 Sumo Logic アプリケーションは、AWS Config の Simple Notification Service (SNS) による JSON 形式の通知を利用します。

前提条件

AWS Config 用 Sumo Logic アプリケーションを使用するには、事前に以下の手順を実行する必要があります。

  1. AWS Config で SNS 通知を有効にします。
  2. Sumo Logic のホスト型コレクタと HTTP ソースを追加します。
  3. AWS Config で SNS 通知にサブスクライブします。
  4. 省略可能: AWS Config ログのパーティションを作成します。

AWS Config での SNS 通知の有効化

AWS Config の SNS 通知を有効にするには、次の手順を実行します。

  1. AWS マネジメント コンソールにサインインします。
  2. [Management Tools (マネジメント ツール)] の下で [Get Started (開始)] をクリックしてから [Config] をクリックします。
  3. [Set up AWS Config (AWS Config のセットアップ)] ページで、[Amazon SNS Topic (Amazon SNS トピック)] の下にある [Enable Configuration changes and notifications to be streamed to an Amazon SNS topic (設定の変更と通知を Amazon SNS トピックにストリーミングする)] を選択します。 

  1. [Create new topic (新規トピックの作成)] を選択して [Continue (続行)] をクリックします。

  2. 「AWS Config is requesting permissions to read your resources’ configuration (AWS Config があなたのリソース設定を読み取る権限をリクエストしています)」というページが表示されたら [Allow (許可)] をクリックします。これにより、AWS Config が Amazon SNS で配信するためにリソース設定を読み取ることができるようになります。
  3. 省略可能: [View Details (詳細の表示)]  セクションを展開して、AWS Config が使用する IAM ロールとポリシーを設定します。

SNS の詳細については、http://docs.aws.amazon.com/sns/latest/dg/GettingStarted.html を参照してください。

コレクタの設定

Sumo Logic で、ホスト型コレクタを作成します。ソース カテゴリには aws_config という名前を付けてください。

ソースの設定

次に、HTTP ソースを設定します。

  1. 以下のソース フィールドを設定します。
    1. Name (名前)。(必須) 例: AWS Config
    2. Source Category (ソース カテゴリ)。(必須) 例: aws_config。適切なソース カテゴリの作成については、「ベスト プラクティス」を参照してください。
  2. [Advanced (詳細)] セクションを設定します。
    1. Enable Timestamp Parsing (タイムスタンプ パースの有効化)。true
    2. Time Zone (タイムゾーン)。ログ ファイルのタイム ゾーンを使用します。
    3. Timestamp Format (タイムスタンプ フォーマット)。自動検出。
    4. Enable Multiline Processing (複数行の処理の有効化)
      1. Detect Messages Spanning Multiple Lines (複数行にわたるメッセージを検出する)。False
    5. Enable One Message Per Request (リクエストごとに 1 つのメッセージを有効にする)。true
  3. [Save (保存)] をクリックします。 

次のセクションで使用しますので、HTTP ソース アドレス URL をコピーします。

SNS 通知へのサブスクライブ

ホスト型コレクタと HTTP ソースを設定したら、AWS Config の SNS 通知にサブスクライブできます。

  1. AWS マネジメント コンソールで、[SNS] > [Topics (トピック)] に移動します。
  2. SNS 通知を有効にしたときに作成したトピックのチェックボックスをオンにします。
  3. [Amazon SNS] の下にある [Actions (アクション)] メニューで [Subscribe to Topic (トピックにサブスクライブ)] を選択します。
  4. [Protocol (プロトコル)] の下で [HTTPS] を選択し、[Endpoint (エンドポイント)] フィールドに Sumo Logic HTTP ソース URL を貼り付けます。
  5. [Create Subscription (Subscriptionを作成)] をクリックします。

数分で確認リクエストが Sumo Logic に送信されます。Sumo Logic で、_sourceCategory="aws_config" のようなクエリが入った HTTP ソースからの新しいメッセージを検索します。

次のように、メッセージの JSON フィールドである SubscribeURL をパースして、クリップボードにコピーします。 

  1. AWS マネジメント コンソールで、[SNS] > [Topics (トピック)] を選択します。
  2. [Amazon SNS] の下にある [Actions (アクション)] [Confirm a subscription (サブスクリプションを確認)] を選択します。
  3. SubscribeURL を [Subscription confirmation URL (サブスクリプション確認 URL)] フィールドに貼り付けて [Confirm subscription (サブスクリプションを確認)] をクリックします。

SNS の詳細については、Amazon ドキュメントを参照してください。

省略可能: AWS Config ログのパーティションを作成します。

AWS Config の変更は頻繁に行われないため、Sumo Logic ではログ用のパーティションの作成をお勧めしています。特にアカウントのデータ量が多い場合は、パーティションによって検索パフォーマンスを高めることができます。

「パーティションの作成」の手順に従ってパーティションを作成します。インデックスには aws_config という名前を付けてください。ルーティング式では、メッセージを AWS Config から分離するためのクエリ (例: _sourceCategory=aws_config) を入力します。

ログ メッセージのサンプル

{ "Type": "Notification", "MessageId": "23accff0-e8cf-5071-8208-8194ed32e94c", "TopicArn": "arn:aws:sns:us-west-1:012345678910:sumo-testing-config-topic", "Subject": "[AWS Config:us-west-1] AWS::EC2::NetworkAcl acl-979f62f3 Updated in Account 012345678910", "Message": "{\"configurationItemDiff\":{\"changedProperties\":{\"Configuration.Entries.1\":{\"previousValue\":null,\"updatedValue\":{\"ruleNumber\":100,\"protocol\":\"-1\",\"ruleAction\":\"allow\",\"egress\":false,\"cidrBlock\":\"0.0.0.0/0\",\"icmpTypeCode\":null,\"portRange\":null},\"changeType\":\"CREATE\"},\"Configuration.Entries.0\":{\"previousValue\":{\"ruleNumber\":100,\"protocol\":\"-1\",\"ruleAction\":\"deny\",\"egress\":false,\"cidrBlock\":\"0.0.0.0/0\",\"icmpTypeCode\":null,\"portRange\":null},\"updatedValue\":null,\"changeType\":\"DELETE\"}},\"changeType\":\"UPDATE\"},\"configurationItem\":{\"configurationItemVersion\":\"1.0\",\"configurationItemCaptureTime\":\"2017-02-24T18:34:32.932UTC\",\"configurationStateId\":64,\"relatedEvents\":[\"3d7cbf2c-95e5-4361-bba9-328fae229a6b\"],\"awsAccountId\":\"012345678910\",\"configurationItemStatus\":\"OK\",\"resourceId\":\"acl-80cbc6f2\",\"ARN\":\"arn:aws:ec2:us-west-1:012345678910:network-acl/acl-979f62f3\",\"awsRegion\":\"us-west-1\",\"availabilityZone\":\"Multiple Availability Zones\",\"configurationStateMd5Hash\":\"8f09d8d531df99b9342e42b4944fdea4\",\"resourceType\":\"AWS::EC2::NetworkAcl\",\"resourceCreationTime\":null,\"tags\":{\"Name\":\"Test-NetworkAcl29\"},\"relationships\":[{\"resourceId\":\"subnet-7c4af186\",\"resourceType\":\"AWS::EC2::Subnet\",\"name\":\"Is attached to Subnet\"},{\"resourceId\":\"vpc-0a013c2e\",\"resourceType\":\"AWS::EC2::VPC\",\"name\":\"Is contained in Vpc\"}],\"configuration\":{\"networkAclId\":\"acl-979f62f3\",\"vpcId\":\"vpc-0002f464\",\"isDefault\":true,\"entries\":[{\"egress\":true,\"ruleNumber\":100,\"protocol\":\"-1\",\"ruleAction\":\"allow\",\"cidrBlock\":\"0.0.0.0/0\",\"icmpTypeCode\":null,\"portRange\":null},{\"egress\":true,\"ruleNumber\":32767,\"protocol\":\"-1\",\"ruleAction\":\"deny\",\"cidrBlock\":\"0.0.0.0/0\",\"icmpTypeCode\":null,\"portRange\":null},{\"egress\":false,\"ruleNumber\":100,\"protocol\":\"-1\",\"ruleAction\":\"allow\",\"cidrBlock\":\"0.0.0.0/0\",\"icmpTypeCode\":null,\"portRange\":null},{\"egress\":false,\"ruleNumber\":32767,\"protocol\":\"-1\",\"ruleAction\":\"deny\",\"cidrBlock\":\"0.0.0.0/0\",\"icmpTypeCode\":null,\"portRange\":null}],\"associations\":[{\"networkAclAssociationId\":\"aclassoc-0bb0606d\",\"networkAclId\":\"acl-979f62f3\",\"subnetId\":\"subnet-e0c822dd\"}],\"tags\":[{\"key\":\"Name\",\"value\":\"Test-NetworkAcl29\"}]}},\"notificationCreationTime\":\"2017-02-24T18:34:32.932UTC\",\"messageType\":\"ConfigurationItemChangeNotification\",\"recordVersion\":\"1.2\"}", "Timestamp": "2017-02-24T18:34:32.932UTC", "SignatureVersion": "1", "Signature": "KHYHMQEABbTnlmwnJSHPiMlxCqwFmkIlSdRMvtW30VgbHnqMUPJ0QMS6S9qU4o8/Hp0R2GMvdxeDAo6/jDa/FSE1wGMxRAdbhyI8eBIeOOkOn7Eiy9C2ZyLrcJvSYwMLMBQDVfyDmUZVILbLb3kXFZGi3sogKpNX/mPlajA4UYOLs5OT9cql++8gHl1cdpZnF+Nh2v1CfKCK+j/Fvx9l30yUTaPwAeApF1+v2jjvsvQ1bUYr+SPJdU/eXxNQkRg+eu4ihM0uxbpltYhU8asfYBbtAm1fEWcKglN1Nv++hIDlv0JBOjK7KeY8Ys/UKwjUgBLRllV3gHjphqMd/91zPw==", "SigningCertURL": "https://sns.us-west-1.amazonaws.com/SimpleNotificationService-bb750dd426d95ee9390147a5624348ee.pem", "UnsubscribeURL": "https://sns.us-west-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-1:012345678910:sumo-testing-config-topic:2b6cadac-fe50-442b-af34-470e4021df16" }

クエリのサンプル

最新のリソース変更 (アプリケーションから)

_sourceCategory=AWS_Config Notification ConfigurationItemChangeNotification
| json "Message", "Type" 
| where type == "Notification"
| json field=message "messageType","configurationItem" as messageType, single_message 
| where messageType = "ConfigurationItemChangeNotification" 
| json field=single_message "resourceId", "resourceType", "configurationItemStatus", "awsAccountId" as ResourceId, ResourceType, Status, AWSAccountID
//| where Status = "OK"
// Look up Name stored in tag with key “Name” for each resource. Schedule the ‘ResourceNames Lookup Table Generator’ search to keep this file up to date.
//| lookup idAndName from /shared/AWSConfig/ResourceNames on resourceType=resourceType, resourceId=resourceId | if(isNull(idAndName), resourceId, idAndName) as resourceId | fields - idAndName
| sort by _messageTime desc

AWS リージョン別の設定アクティビティ (アプリケーションから)

_sourceCategory=AWS_Config Notification ConfigurationItemChangeNotification
| json "Message", "Type" as single_message, type | where type == "Notification"
| json field=single_message "configurationItem.awsRegion" as awsRegion
| where awsRegion != "Not Applicable"
| "" as location
| if (awsRegion = "us-east-1", "38.55,-77.89", location) as location // Northern Virginia
| if (awsRegion = "us-west-1", "43.96,-121.70", location) as location // Oregon
| if (awsRegion = "us-west-2", "39.06,-121.54", location) as location // Northern California
| if (awsRegion = "us-gov-west-1", "44.34,-118.61", location) as location // ?? Also Oregon ??
| if (awsRegion = "eu-west-1", "53.31,-7.91", location) as location // Ireland
| if (awsRegion = "eu-central-1", "50.12,8.67", location) as location // Frankfurt
| if (awsRegion = "ap-southeast-1", "1.29,103.85", location) as location // Singapore
| if (awsRegion = "ap-southeast-2", "-33.85,151.15", location) as location // Sydney
| if (awsRegion = "ap-northeast-1", "35.68,139.75", location) as location // Tokyo
| if (awsRegion = "sa-east-1", "-23.57,-46.63", location) as location // Sao Paulo
| split location delim=',' extract 1 as latitude, 2 as longitude
| count by latitude, longitude
| sort _count

  • この記事は役に立ちましたか?