aws black belt tech シリーズ 2015 aws cloudtrail & aws config

59
AWS CloudTrail & AWS Config 2015/07/15 AWS Black Belt Tech Webinar 2015 アマゾンデータサービスジャパン株式会社 パートナー ソリューション アーキテクト 酒徳 知明

Upload: amazon-web-services-japan

Post on 10-Aug-2015

2.114 views

Category:

Technology


4 download

TRANSCRIPT

AWS CloudTrail & AWS Config

2015/07/15

AWS Black Belt Tech Webinar 2015

アマゾンデータサービスジャパン株式会社

パートナー ソリューション アーキテクト 酒徳 知明

2

Agenda

• AWS CloudTrailについて – 概要

– AWS CloudTrailの要点

– 利用ケース

• AWS Configについて – 概要

– AWS Configの要点

– 利用ケース

• まとめ

CloudTrail

4

AWS CloudTrailとは

ユーザによるAPIの発行

各リージョンのAWSリソースの呼び出し

CloudTrailがAPIコールをロギング

ユーザの操作を管理

5

CloudTrailの特徴

• 概要 – AWSアカウントの操作をロギングするサービス

– 管理コンソール、コマンドライン、3rd party等APIコールされるイベントが対象ロギングの対象

– S3にロギングデータを保存

– SNS(Simple Notification Service)で通知可能

– CloudTrail 自体は無料(※別途Amazon S3 / SNSの使用料金が必要)

• ユースケース – コンプライアンス準拠

– リソースのライフサイクル管理

– 運用上のトラブルシューティング

– セキュリティ面の分析

6

CloudTrailでロギング可能なサービス

http://docs.aws.amazon.com/awscloudtrail/latest/userguide/what_is_cloud_trail_supported_services.html

Compute • Amazon Elastic Compute Cloud (EC2) • Auto Scaling • Elastic Load Balancing • Amazon EC2 Container Service • AWS Lambda Database • Amazon Relational Database Service • Amazon ElastiCache • Amazon Redshift • Amazon DynamoDB

Deployment and Management • AWS Elastic Beanstalk • AWS OpsWorks • AWS CloudFormation • AWS CodeDeploy • AWS CodePipeline • Amazon API Gateway

Storage and Content Delivery

• AWS Storage Gateway

• Amazon Glacier

• Amazon CloudFront

Networking

• Amazon Virtual Private Cloud

• AWS Direct Connect

• Amazon Route 53

Administration and Security • AWS Identity and Access Management • AWS CloudTrail • Amazon CloudWatch • AWS Key Management Service • AWS Security Token Service • AWS CloudHSM

• AWS Config • AWS Directory Service

Analytics • Amazon Elastic MapReduce • Amazon Kinesis • AWS Data Pipeline

Enterprise Applications

• Amazon WorkDocs

• Amazon WorkSpaces Application Services • Amazon Simple Queue Service • Amazon Simple Workflow Service • Amazon Elastic Transcoder • Amazon CloudSearch • Amazon Simple Email Service Mobile Services

• Amazon Simple Notification Service

※2015年7月15日時点

7

AWS CloudTrailの設定

S3 / SNSの設定

CloudWatch Logsの設定

8

ログファイルの保存先

• ログファイルは命名規則の元ある特定のパスで保存されます

• S3 バケットに約 5 分ごとにログファイルを送信します。

• そのアカウントに対して API の呼び出しがない場合は、ログファイルを送信しません。

9

AWS CloudTrailによりロギングされるイベント

API call Event Non-API call Event

• サポート サービスから発行されるAPI StartInstances CreateKeyPair

• ユーザのサインイン アクティビテイ AWS マネジメント コンソール AWS ディスカッション フォー

ラム

10

CloudTrailイベントから取得できる情報

• 誰がAPIコールを発行したのか

• いつAPIコールが発行されたのか

• どのAPIコールが発行されたのか

• どのAWSリソースから発行されたのか

• どのAWSリソースに対して発行されたのか

11

誰がAPIコールを発行したのか①

IAMユーザ “Bob”のユーザ情報

"userIdentity“: { "accessKeyId":"AKEXAMPLE123EJVA", "accountId":“123456789012", "arn":"arn:aws:iam::123456789012:user/Bob", "principalId":"AIEXAMPLE987ZKLALD3HS", "type":"IAMUser", "userName":“Bob" }

12

誰がAPIコールを発行したのか②

フェデレーションユーザ “Alice”のユーザ情報

"userIdentity": { "type":"FederatedUser", "principalId":"123456789012:Alice", "arn":"arn:aws:sts::123456789012:federated-user/Alice", "accountId":"123456789012", "accessKeyId":"ASEXAMPLE1234WTROX8F", "sessionIssuer":{ "type":"IAMUser", "accountId":"123456789012", "userName":“Bob" } }

13

いつAPIコールが発行されたのか どのAPIコールが発行されたのか

ISO8601フォーマットでの記載

"eventTime":"2014-11-29T05:58:13Z“

APIコールの名前とターゲット情報を記載

"eventSource":"signin.amazonaws.com"

"eventName":"ConsoleLogin"

14

どのAWSリソースから発行されたのか

リクエスターのIPアドレス、APIが発行されたリージョンの情報を記載

"awsRegion":"us-east-1",

"sourceIPAddress":"ec2.amazonaws.com"

15

蓄積したJSONファイルの扱い方

可視化 (長期)

文字列検索 (中期)

アラート (短期)

16

CloudWatch Logs Metric Filter の利用

• CloudTrail と CloudWatch Logs の連携 – CloudTrailのログをJSON形式でCloudWatch Logsに転送

– アカウント内でコールされた特定のAPIを監視し、呼ばれたときに電子メール通知を受けることが可能

CloudTrail CloudWatch Logs CloudWatch Logs

Metric Filter

17

CloudWatch Logs Metric Filter の利用

• 特定文字列のエントリ頻度によりアラーム作成が可能

18

Metric Filters サンプル

• アカウントrootログインの監視 { ($.eventName = "ConsoleLogin") && ($.userIdentity.type = "Root") }

• 認証失敗の監視 {$.errorCode = "AccessDenied" || $.errorCode = "UnauthorizedOperation"}

• 特定インスタンスタイプのEC2が作成されたかの監視 {$.eventName = "RunInstances" && ($.requestParameters.instanceType = “*.8xlarge" || $.requestParameters.instanceType = “*.4xlarge"}

• セキュリティグループ変更の監視 {($.eventName = "AuthorizeSecurityGroupIngress") || ($.eventName = "AuthorizeSecurityGroupEgress") || ($.eventName = "RevokeSecurityGroupIngress" ||($.eventName = "RevokeSecurityGroupEgress") || ($.eventName = "CreateSecurityGroup") || ($.eventName = "DeleteSecurityGroup")}

19

CloudWatchアラーム CloudFormationテンプレート

http://aws.typepad.com/aws_japan/2015/03/cloudtrail-integration-with-cloudwatch-in-four-more-regions.html

CloudFormationをつかったメトリック フィルタの自動作成

20

AWS CloudTrailの設定

21

AWS CloudTrail API Activity Lookup

• CloudTrailコンソールまたはAWS SDK, AWS CLIからAPIアクティビティを検索する機能

• 東京リージョンでも利用可能

• CloudTrailが有効にするだけで自動で利用可能

• 最新の7日間のAPIアクティビティの検索

http://aws.typepad.com/aws_japan/2015/03/new-aws-api-activity-lookup-in-cloudtrail.html

22

AWS CloudTrail API Activity Lookup

$ aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=RunInstances --start-time 2015-05-16 --end-time 2015-05-16

23

API Activity Lookupの制限事項①

http://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-supported-services.html

Compute • Amazon Elastic Compute Cloud (EC2) • Auto Scaling • Elastic Load Balancing • Amazon EC2 Container Service • AWS Lambda Database • Amazon Relational Database Service • Amazon ElastiCache • Amazon Redshift • Amazon DynamoDB

Deployment and Management • AWS Elastic Beanstalk • AWS OpsWorks • AWS CloudFormation • AWS CodeDeploy • AWS CodePipeline • Amazon API Gateway

Storage and Content Delivery

• AWS Storage Gateway

• Amazon Glacier

• Amazon CloudFront

Networking

• Amazon Virtual Private Cloud

• AWS Direct Connect

• Amazon Route 53

Administration and Security • AWS Identity and Access Management • AWS CloudTrail • Amazon CloudWatch • AWS Key Management Service • AWS Security Token Service • AWS CloudHSM

• AWS Config

• AWS Directory Service

• AWS Management Console Sign-in Service

Analytics • Amazon Elastic MapReduce • Amazon Kinesis • AWS Data Pipeline

Enterprise Applications

• Amazon WorkDocs

• Amazon WorkSpaces Application Services • Amazon Simple Queue Service • Amazon Simple Workflow Service • Amazon Elastic Transcoder • Amazon CloudSearch • Amazon Simple Email Service Mobile Services

• Amazon Simple Notification Service

※2015年7月15日時点

24

API Activity Lookupの制限事項②

• Time Range検索 – 過去 7 日間の AWS アカウント内

のリソースの作成、変更、削除に関する API アクティビティ

• Filter検索 – 検索できる属性の制限

• User name

• Event name

• Resource type

• Resource name

25

Amazon CloudSearch, Amazon Elastic Beanstalk

https://medium.com/aws-activate-startup-blog/searching-cloudtrail-logs-easily-with-amazon-cloudsearch-2d716e23efee

CloudTrail Amazon SNS Topics Amazon SQS Queue AWS ElasticBeanstalk

Worker Role

Amazon S3 Backet

Amazon

CloudSearch

② ③ ④

⑤ ⑥

26

AWS Elastic Beanstalk Worker Tier

• SQSに登録されたタスクを 非同期処理するTier

• SQSメッセージは自動的にHTTPエンドポイントにPOST

• 200 OKならDelete Message

• エラー応答ならリトライ

Webアプリを実装するだけでSQSを使った非同期処理Workerを実装

27

Amazon CloudSearch, Amazon Lambda

CloudTrail

Amazon Lambda

Amazon S3 Bucket

Amazon

CloudSearch

28

ElasticSearch, Kibana, Amazon Lambda

CloudTrail ElasticSearch Amazon S3 Backet

① ② ③ ④

Logstash Amazon Lambda

29

for(var i = 0; i < records.length; i++){

var record = records[i];

var header = {

"index":{

"_index": ES_INDEX,

"_type": ES_TYPE,

"_id": record.eventTime + "-" + record.requestID

}

};

var searchRecord = {

"usertype" : record.userIdentity.type,

"arn" : record.userIdentity.arn,

"username" : record.userIdentity.userName,

"eventtime" : record.eventTime,

"eventsource" : record.eventSource,

"eventname" : record.eventName,

"awsregion" : record.awsRegion,

"sourceipaddress" : record.sourceIPAddress,

"eventid" : record.eventID,

"logfilename" : logFileName

};

searchRecords.push(header);

searchRecords.push(searchRecord);

};

Lambda Code s3.getObject({

Bucket : bucket,

Key : key

}, function(err,data) {

if(err){

context.done('error','error getting file' + err);

} else {

var contentType = data.ContentType;

var contentEncoding = data.ContentEncoding;

if (contentType === "application/json"

&& contentEncoding === "gzip") {

var logFileName = key.substr(key.lastIndexOf("/") + 1);

var buf = data.Body;

zlib.gunzip(buf, function(_, dezipped) {

var json = JSON.parse(dezipped.toString('utf-8'));

sendToES(context,region,logFileName,json);

});

}

}

});

};

//bulk send to Elasticsearch

function sendToES(context,region,logFileName,json){

var records = json.Records;

var searchRecords = [];

30

蓄積したJSONファイルの扱い方

可視化 (長期)

文字列検索 (中期)

アラート (短期)

31

CloudTrail パートナー ソリューション

コンサルティング・パートナー テクノロジー・パートナー

32

Splunk Dashboard

33

AWS Config

AWS Configとは

• AWSリソースのレポジトリ情報を取得し、リソースの設定履歴を監査、リソース構成の変更を通知することができるフルマネージドサービス

• ユースケース • セキュリティ分析:Am I safe?

• 監査・コンプライアンス:Where is the evidence?

• 変更管理:What will this change affect?

• トラブルシューティング:What has changed?

• ディスカバリー:What resources exist?

変更・更新 記録 構成変更

ヒストリ

ストリーム

スナップショット (ex. 2014-11-05)

AWS Config

36

AWS Config

Configuration Stream Configuration Snapshot Configuration History

• リソースが作成、変更、または構成項目を削除されるたびに、作成され、構成ストリームに追加される

• SNSトピック連携可能

• あるポイントでのコンフィグレーション アイテムの集合

• 自動で定期的あるいは変更トリガで作成され、Amazon S3にエクスポートされる

• 設定履歴は、任意の期間における各リソースタイプの構成要素の集合

• リソースの設定履歴を、指定したS3バケットに保存

Snapshot @ 2014-11-12, 2:30pm

37

AWS Configが対応しているAWSリソース

• 現在AWS Configが対応しているのは下記4サービス

Amazon EC2 Instance, ENI...

Amazon EBS Volumes

AWS CloudTrail Amazon VPC VPC, Subnet...

※2015年7月15日時点

38

AWS Configで管理できるAWSリソース

Resource Type Resource

Amazon EC2 EC2 Instance

EC2 Elastic IP (VPC only)

EC2 Security Group

EC2 Network Interface

Amazon EBS EBS Volume

Amazon VPC VPCs

Network ACLs

Route Table

Subnet

VPN Connection

Internet Gateway

Customer Gateway

VPN Gateway

AWS CloudTrail Trail

39

リレーションシップ

• アカウント内のAWSリソース間の関係

• 双方向の依存関係が自動的に割り当てられる Example:

セキュリティ グループ“sg-10dk8ej” とEC2 インスタンス “i-123a3d9”

は互いに関連関係にあります

40

リレーションシップ Resource Relationship Related Resource

CustomerGateway is attached to VPN Connection

Elastic IP (EIP) is attached to Network Interface

is attached to Instance

Instance contains Network Interface

is attached to ElasticIP (EIP)

is contained in Route Table

is associated with Security Group

is contained in Subnet

is attached to Volume

is contained in Virtual Private Cloud (VPC)

InternetGateway is attached to Virtual Private Cloud (VPC)

… …. …..

http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html

AWS Configリソース検索

選択リソースの情報

構成詳細

リレーション

変更

リソース構成変更例 • インスタンスタイプの変更(m3.xlarge → m3.medium)

• EBSボリュームの追加

EC2

m3.xlarge

EC2

m3.medium

30GB

リソース情報(構成詳細)

リソース情報(リレーション)

リソース情報(変更)

47

ロギングするサービスの選択

• 構成変更をロギングするサービスを選択できるようになりました

48

AWS Config リレーションシップ

Security Group

EIP

ENI

EBS VPC

Route Table

NACL

Subnet VPN

IGW

CGW

EC2

49

AWS Configから見るリソースのリレーション

$ aws configservice get-resource-config-history --resource-type AWS::EC2::Instance --resource-id i-cbe78721 --region us-east-1 { "configurationItems": [ { "configurationItemCaptureTime": 1427432204.542, "resourceCreationTime": 1417001136.0, "availabilityZone": "us-east-1c", "tags": { "Name": "cwl-sqlserver" }, "resourceType": "AWS::EC2::Instance", "resourceId": "i-cbeXXXXX", "configurationStateId": "547", "relatedEvents": [], "relationships": [ { "resourceType": "AWS::EC2::EIP", "resourceId": "eipalloc-e6dcXXXX", "relationshipName": "Is attached to ElasticIp" },

{ "resourceType": "AWS::EC2::NetworkInterface", "resourceId": "eni-8270XXXX", "relationshipName": "Contains NetworkInterface" }, { "resourceType": "AWS::EC2::SecurityGroup", "resourceId": "sg-53f9XXXX", "relationshipName": "Is associated with SecurityGroup" }, { "resourceType": "AWS::EC2::Subnet", "resourceId": "subnet-a1dbXXXX", "relationshipName": "Is contained in Subnet" }, { "resourceType": "AWS::EC2::Volume", "resourceId": "vol-592aXXXX", "relationshipName": "Is attached to Volume" }, ・・・・

50

AWS Config リレーションシップ

Security Group

wfront-6171

wfront-6172

wfront-6173

・・・

AWS Config

cli/sdk/metadata

cli/sdk/metadata

cli/sdk/metadata

51

AWS Configからのスナップショットの取得 $ aws configservice deliver-config-snapshot --delivery-channel-name default --region us-east-1 { "configSnapshotId": "5b662925-a6e0-4d19-a156-0151d932XXXX" } $ aws configservice describe-delivery-channel-status --region us-east-1 { "DeliveryChannelsStatus": [ { "configStreamDeliveryInfo": { "lastStatusChangeTime": 1431767053.909, "lastStatus": "SUCCESS" }, "configHistoryDeliveryInfo": { "lastSuccessfulTime": 1431699583.504, "lastStatus": "SUCCESS", "lastAttemptTime": 1431699583.504 }, "configSnapshotDeliveryInfo": { "lastSuccessfulTime": 1431769523.567, "lastStatus": "SUCCESS", "lastAttemptTime": 1431769523.567 }, "name": "default"

52

AWS Config パートナー

53

Logstorageによる可視化

54

まとめ

• AWS CloudTrailはユーザのオペレーションを記録

• AWS Configはユーザオペレーションにより変更のあったAWSリソースを記録

• AWS CloudTrailもAWS ConfigもJSONで履歴を管理するため、用途に応じた管理が必要

55

Q&A

次回Webinarのお申し込み

http://aws.amazon.com/jp/event_schedule/

57

公式Twitter/Facebook AWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを 日々更新しています!

もしくは http://on.fb.me/1vR8yWm

AWS運用コミュニティ ~クラウドによる、クラウドのための、クラウド運用管理~

AWS上に構築されたシステムの

運用管理のベストプラクティスを集約!

http://aws.typepad.com/aws_partner_sa/2015/

06/aws-ops.html

@opsjaws

59

ご参加ありがとうございました。