View
41
Download
0
Category
Preview:
Citation preview
AWS CloudTrail & AWS Config
2015/07/15
AWS Black Belt Tech Webinar 2015
アマゾンデータサービスジャパン株式会社
パートナー ソリューション アーキテクト 酒徳 知明
2
Agenda
• AWS CloudTrailについて – 概要
– AWS CloudTrailの要点
– 利用ケース
• AWS Configについて – 概要
– AWS Configの要点
– 利用ケース
• まとめ
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日時点
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"
16
CloudWatch Logs Metric Filter の利用
• CloudTrail と CloudWatch Logs の連携 – CloudTrailのログをJSON形式でCloudWatch Logsに転送
– アカウント内でコールされた特定のAPIを監視し、呼ばれたときに電子メール通知を受けることが可能
CloudTrail CloudWatch Logs 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をつかったメトリック フィルタの自動作成
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 = [];
AWS Configとは
• AWSリソースのレポジトリ情報を取得し、リソースの設定履歴を監査、リソース構成の変更を通知することができるフルマネージドサービス
• ユースケース • セキュリティ分析:Am I safe?
• 監査・コンプライアンス:Where is the evidence?
• 変更管理:What will this change affect?
• トラブルシューティング:What has changed?
• ディスカバリー:What resources exist?
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
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"
54
まとめ
• AWS CloudTrailはユーザのオペレーションを記録
• AWS Configはユーザオペレーションにより変更のあったAWSリソースを記録
• AWS CloudTrailもAWS ConfigもJSONで履歴を管理するため、用途に応じた管理が必要
55
Q&A
次回Webinarのお申し込み
http://aws.amazon.com/jp/event_schedule/
56
Webinar資料の配置場所
• AWS クラウドサービス活用資料集 – http://aws.amazon.com/jp/aws-jp-introduction/
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
Recommended