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

AWS Config アプリケーションのログの収集

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

ログ タイプ

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

前提条件

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

  1. AWS Config で SNS 通知を有効にします。
  2. Sumo Logic の Hosted Collector と HTTP Source を追加します。
  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 を参照してください。

Collector の設定

Sumo Logic で、Hosted Collector を作成します。Source Category には aws_config という名前を付けてください。

Source の設定

次に、HTTP Source を設定します。

  1. 以下の Source フィールドを設定します。
    1. Name (名前): (必須) 例: AWS Config
    2. Source Category。(必須) 例: aws_config。適切な Source Category の作成については、「ベスト プラクティス」を参照してください。
  2. [Advanced (詳細)] セクションを設定します。
    1. Enable Timestamp Parsing (タイムスタンプ parse の有効化)。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 Source アドレス URL をコピーします。

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

Hosted Collector と HTTP Source を設定したら、AWS Config の SNS 通知にサブスクライブできます。

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

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

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

  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

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