SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Copyright © 2016 TIS Inc. All rights reserved.
戦略技術センター
高橋和也
機械学習を用いた
AWS CloudTrailログの積極的活用
July Tech Festa 2016
2016/07/24
Copyright © 2016 TIS Inc. All rights reserved. 1
はじめに
 本日の話
 インフラエンジニアと機械学習
 Amazon MLを用いて試行錯誤しながらログデータを機械学習させてみ
た事例
 機械学習に触れてみて感じたこと
 以下は出てきません
 機械学習の理論やアルゴリズムの話
 機械学習を活用して効果を挙げた事例
 色々試してみたけれど、今のところ成功したかというと・・・
Copyright © 2016 TIS Inc. All rights reserved. 2
自己紹介
 発表者
 高橋和也
 TIS株式会社 戦略技術センター所属
 インフラ関連技術の活用に向けた検証や開発等を担当
 主な経歴
 社内システム運用
 各種クラウドサービスの検証
 Zabbixの拡張ツールであるHyClopsの開発
 クラウドオーケストレーションツールCloudConductorの開発
 機械学習の経験は無し
 今年の4月から着手
Copyright © 2016 TIS Inc. All rights reserved. 3
背景
Copyright © 2016 TIS Inc. All rights reserved. 4
機械学習に対する期待の高まり
 データ分析・活用の手段として機械学習に注目が集まっている
 少し前からある事例
 大量の購買データをリコメンドに利用
 大量のセンサデータを障害予測に利用
 ディープラーニングの登場でさらに適用範囲は拡大
 解決したい問題にあわせて与える学習データを人が調整するのではなく、
大量に蓄積されたデータを大規模環境で学習させて法則を見つけ出す
 法則を言語化しづらい画像認識などでも活躍
 でも大量のデータを持っていない企業には縁が無い?
 本当に大量にデータが無いといけないのか?
 本当にインフラエンジニアは知らなくてよいのか?
まずは手元のデータで何ができて、何が足りないのか試してみよう
Copyright © 2016 TIS Inc. All rights reserved. 5
インフラエンジニアの身近にあるデータといえば
 運用現場に眠る様々なログ
 ログを残しておくことは運用上重要
 現在の状態の把握
 問題発生の検出
 問題の原因切り分け
 監査証跡
 運用現場には大量のログデータが蓄積されている
 AWS上だけでも様々なログが記録されている
 CloudTrail: AWSのAPI呼び出しログ
 VPC Flow Logs: VPC上のリソースの通信ログ
 S3 Bucket Logging: S3のアクセスログ
 CloudWatch Logs: 各サーバから収集したログやLambda Functionの実行ログ
 でも普段から人がログに目を通す余裕は無い
Copyright © 2016 TIS Inc. All rights reserved. 6
ログデータの特徴
 どのような特徴を持っているか
 データ量がそれなりに多い
 日常的に利用されるシステムのアクセスログは、不特定多数のユーザを対象
としていなくても長期間集めればある程度のボリュームになる
 製品毎に一定のフォーマットに従って出力されている
 機械学習を適用するためのデータ加工がしやすい
 一度うまくいけば同一製品/機器を使う他の運用現場にもノウハウを
横展開しやすい
 長期間にわたり保管されている
 思い立ってからデータを集め始めなくても過去のデータを活用できる
 人が全部目を通すのは大変
 何か問題が起きない限り確認されないログも多い
Copyright © 2016 TIS Inc. All rights reserved. 7
これまでのログデータ活用: 監視
 ログデータは監視対象としても重要
 障害につながるエラーログの検出
 バッチ処理等の成功/失敗の確認
 想定外のアクセスの検出
 ログ監視は監視ルールのメンテナンスが大変
 出力されるログメッセージを事前に把握する必要がある
 ログレベルが出力される場合は比較的監視しやすいが、そうでない場合は
出力されるメッセージ内容の把握が必要
 めったに出ないログメッセージは事前に調べるのが難しい
 バージョンアップ等で変更があるとまた対応が必要
 環境によって注視すべきログが異なる場合が多い
機械学習を使ってルールを置き換えられないか
Copyright © 2016 TIS Inc. All rights reserved. 8
これまでのログデータ活用: 可視化
 ログの検索・可視化が簡単に実現可能な時代に
 Elastic Stack, Splunk, etc.
 AWSであればAmazon Elasticsearch Service (Amazon ES)
 可視化することでログの傾向を短時間で確認可能
 例: 過去1週間のアクセスログ件数の推移
 例: 権限不足により拒否された操作ログを種別毎に抽出
 しかし可視化した結果をどう判断するかはまだ人に委ねられている
 例: このアクセス傾向は普段通りなのか、普段と異なるのか
 例: この拒否された操作は問題ないのか、攻撃の兆候なのか
機械学習を使って自動的に判断できないか
Copyright © 2016 TIS Inc. All rights reserved. 9
機械学習に触れてみよう
Copyright © 2016 TIS Inc. All rights reserved. 10
機械学習とは?
 機械学習に対して持っていた漠然としたイメージ
 数式がたくさん出てきて統計学の知識が必要。難しそう。
 大規模な並列分散処理を行う環境が必要。手が出しにくい。
 しかし今ならクラウドサービスがある
 理論やアルゴリズムを知らなくてもとりあえずは使える
 覚えるのは詰まってからでも遅くない
 自前で環境を用意する必要が無い
 試行錯誤する段階では財布にやさしい
 機械学習関連のクラウドサービスの例
 Amazon Machine Learning
 Azure Machine Learning
 Google Prediction API / Cloud Machine Learning
Copyright © 2016 TIS Inc. All rights reserved. 11
機械学習でできること
 教師あり学習
 入力と対応する答えの例を大量に与えると、その法則を学習して
他の入力に対しても答えを導き出す
 例: あるアクセスログを見て、通常のアクセスか不審なアクセスか分類
 例: バッチ処理の入力データを見て、そのデータの処理にかかる時間を推定
 学習データの答えは事前に用意しておく必要がある
 教師なし学習
 大量の入力を与えると、それらの入力から関係性を見出す
 例: 似た入力をまとめて複数のクラスタにグルーピングする
 学習データに答えは用意しなくて良いが、機械学習から得られた結果が
妥当かどうかは人が解釈する必要がある
Copyright © 2016 TIS Inc. All rights reserved. 12
今回の題材: AWS CloudTrailのログを用いた操作主体分類
 AWS CloudTrailのログには様々なAPI呼び出しが記録される
 人による操作
 Management Console
 CLI
 連携させた外部サービス/スクリプトによる操作
 AccessKey/SecretKeyによるスクリプト/外部ツール連携
 Instance ProfileによるEC2インスタンス内からのAPI呼び出し
 SAMLによる外部サービス連携
 何らかのEventと連動したLambda Functionからの操作
 AWS Config Rules
 AWS CloudWatch Event
 その他 S3/SNS/DynamoDB/CloudWatch Logs等との連携
それぞれで傾向は異なるため、操作主体を区別して可視化したい
Copyright © 2016 TIS Inc. All rights reserved. 13
ログの特徴
 同一の操作でも操作主体や対象サービスによってログ内容が異なる
 ec2:RunInstancesの場合
 人がManagementConsoleから起動した場合
 sourceIPAddress: 接続元IP
 userAgent: signin.amazonaws.com
 人がSwitchRoleした後ManagementConsoleから起動した場合
 sourceIPAddress: 接続元IP
 userAgent: console.ec2.amazonaws.com
 人がManagementConsoleからMarketplaceのAMIを起動した場合
 sourceIPAddress: marketplace.amazonaws.com
 userAgent: marketplace.amazonaws.com
 スクリプトからSDKを使って起動した場合
 sourceIPAddress: 接続元IP
 userAgent: 利用したツールやSDKのuserAgent
 上記のような傾向は対象サービス毎にさらに少しずつ異なる
Copyright © 2016 TIS Inc. All rights reserved. 14
現状の課題
 ルールベースでログから操作主体を区別するのが難しい
 どんなログであれば人による操作なのか
 Management Consoleでの操作の場合
 userAgent = "signin.amazonaws.com"の場合?
 他にも"AWS CloudWatch Console"とか"[S3Console/0.4]"とか色々ある
 これからも新サービスが出るたびに増え続ける
 ルール化できないこともない気がするが、ルールのメンテナンスで
挫折することが目に見えている
 結局使われているUser/Role名を見て判断する
 このアカウントではこのUser/Roleはこの用途で使われているはず
 この判断基準だと運用ルールに依存し、横展開が難しい
 さらにRoleを追加するたびにフィルタルールの更新が必要に
Amazon MLを試してみよう
Copyright © 2016 TIS Inc. All rights reserved. 15
今回用意した学習データ
 検証用AWSアカウントのCloudTrailログ
 対象データ: 2016年6月に記録されたログ
 対象データ件数: 7467件 (重複排除後)
 学習用データ(70%): 5235件
 評価用データ(30%): 2232件
Copyright © 2016 TIS Inc. All rights reserved. 16
前準備: 学習データの整形
 CloudTrailのログをAmazon ML用に整形
 JSONで記述されているログをCSV形式に変換
 今回はアカウントの運用ルールに左右されにくい属性のみを利用
 その他の属性はラベル付け時には参照したが、学習データには含めていない
属性名 データ例
awsRegion ap-northeast-1
eventName RunInstances
eventSource ec2.amazonaws.com
eventType AwsApiCall
sourceIPAddress 52.197.67.xxx, lambda.amazonaws.com
userAgent awslambda-worker
userIdentity.accessKeyId (先頭4文字) AKIA, ASIA
userIdentity.invokedBy signin.amazonaws.com, (空値)
userIdentity.type IAMUser, AssumedRole
Copyright © 2016 TIS Inc. All rights reserved. 17
前準備: ラベルの付与
 手作業で答えとなるラベルを付与
 今回は以下の4カテゴリに分類
 Human (人による操作)
 Script (スクリプトや外部ツールによる操作)
 AWSLambda (Lambda Functionによる操作)
 AWSService (AWSの他のサービスによる操作)
 分類毎のデータの分布
Copyright © 2016 TIS Inc. All rights reserved. 18
Amazon ML: DataSource登録
 先ほど用意したCSVファイルをDataSourceとして登録
 S3上にファイルを格納してファイルパスを指定
 この後デフォルト設定で進めるなら、データは事前にシャッフルしておく
 データの各属性のタイプを指定
 Binary, Number, Text, Categorical
 今回はUserAgentとSourceIPAddressがText、それ以外はCategorical
 最後に機械学習で推定したい属性を指定
Copyright © 2016 TIS Inc. All rights reserved. 19
Amazon ML: Model作成
 どのような学習モデルを
生成するかを設定
 今回はデフォルト設定を
利用
 今回は目的変数が
Categoricalなので、
多項分類が行われる
 データは学習用(70%)と
評価用(30%)に分割
 後は評価用データを用い
てEvaluationまで実施
してくれる
 簡単!
Copyright © 2016 TIS Inc. All rights reserved. 20
Amazon ML: Evaluation結果の確認
 評価結果
 同一アカウント、同一時期であればそれなりには分類できそう
 分割した評価データ(左)では高い精度で分類できている
 追加で翌月のログ2週間分もラベルを付与して評価した場合(右)は
Scriptに関してはうまく分類できていないデータがあった
 外した5件は学習データに含まれていなかったツールのログだった
Copyright © 2016 TIS Inc. All rights reserved. 21
Amazon ML: 追加の評価
 では別のAWSアカウントのログの場合はどうなるか
 開発に利用している別のAWSアカウントのログを1日分だけ
借りてきて同様にラベルを付与
 データ数3771件、このアカウントではAWS Lambdaは利用していない
 評価結果は微妙な結果に
 学習データには無かったスクリプトや外部ツールの分類精度が低い
 しかし初出のスクリプト全てが分類できなかったわけではない
 学習データには無かったCloudFormationから間接的に呼び出されるAPI呼
び出しの分類精度が低い
Copyright © 2016 TIS Inc. All rights reserved. 22
評価結果を踏まえた改善
 評価結果が出てからが機械学習の本番
 機械学習を動かしてみるだけであれば、知識が無くても簡単
 結果を解釈してどのように改善していくかは、知識が無いと厳しい
 試してみたけれどぱっとしない結果のまま詰まってしまう
 今回はどのように改善すべきか
 学習データの多様性の向上
 そもそも複数のアカウントへの適用を想定するのであれば、
学習データも用途が異なる複数のアカウントから集めるべき
 最も確実だと思われるが、手作業でのラベルの付与作業が負担に
 ラベル付与を半自動化する仕組みが無いと厳しい
 使い方の転換
 学習データの元となったアカウントであれば精度が出るのであれば、
まずはそのアカウントだけでしばらく運用し、他の課題を洗い出す
もう少し腰を据えて学習データをためる
仕組みを作ってみよう
Copyright © 2016 TIS Inc. All rights reserved. 23
その他の試行錯誤してみた例
Copyright © 2016 TIS Inc. All rights reserved. 24
行き詰った事例1: 普段行われない外部への通信の検出
 目的
 AWSのVPC Flow Logsを使うと通信ログを記録することができる
 InboundはSecurityGroupでしっかり塞いでいるが、Outboundの通信
は検証用アカウントなので厳密に制御していない
 常時稼動させているサーバの過去の通信ログを学習すれば、そのサーバ
が普段行わない不審な外部通信を見つけられないか
 結果 (Azure MLでAnomaly Detectionを利用)
 アクセス先が一定でないサーバでは、頻度の低い通信が検出される
 正常な通信も不審な通信もHTTP(S)通信にしか見えず、傾向が出にくい
 これはデータがより蓄積されれば、用途によってはパケット数や転送データ
量で区別できるようになる可能性はある
 アクセス先が一定なサーバであれば、ホワイトリストを作った方が早い
Copyright © 2016 TIS Inc. All rights reserved. 25
行き詰った事例2: 定常的なログと例外的なログの分類
 目的
 定常運用中のサーバは出力されるログもある程度一定である
 エラーログは監視で検知するが、その他の例外的なログは拾っていない
 過去のログメッセージを学習させれば、普段出ていないINFOや
WARNINGのログをうまく分類できるのでは無いか
 結果
 過去にも出ていて学習データに含まれていた例外的ログに関しては
メッセージが一部変化していてもほぼ正確に分類できる
 学習データに含まれていない初出のログメッセージは分類が安定しない
 普段発生しないログメッセージを学習データに含めるのは難しい
Copyright © 2016 TIS Inc. All rights reserved. 26
行き詰った事例の共通点
 単一のデータだけを見てできることを考えている
 人が判断する場合、一種類のデータだけを見て判断することは少ない
 複数のログを確認して総合的に考える
 運用設計の内容も踏まえて考える
 メンテナンスなどのイベントも把握している
 その時世の中で流行っている攻撃方法の特性も考慮する
 データを見て適用先を考えていると、目的がぶれやすい
 どのような課題を解決したいのかを決め、そのためにどのようなデータ
が役立ちそうか考えるべき
 複数のデータが役立ちそうなら組み合わせてみる
 判断に前提知識が必要そうであれば、事前に学習データに組み込んでみる
 課題解決に必要なデータが足りなければ、まずはためる仕組みから
 人が気付いていない法則を学習させるためには、
多様性が保たれた大量の学習データを用意することが前提
Copyright © 2016 TIS Inc. All rights reserved. 27
機械学習に触れてみて感じたこと
Copyright © 2016 TIS Inc. All rights reserved. 28
機械学習に触れてみて (1/2)
 人は様々な情報を組み合わせて判断を下している
 今回のCloudTrailログを用いた例の場合
 環境特有の知識
 このIAM Roleはこの目的に使用している
 このIPアドレスは社内からのアクセスである
 過去に起こったイベントの知識
 この機能はこの頃から使い始めた
 こうした情報は機械学習で扱いやすい形式になっていない
 Excelの設計書等にしか記載されていなかったり
 本当に機械学習に代替させたい問題の答えは、扱いやすいデータと
して記録できていない
 教師あり学習では答えは事前に用意しなければいけない
 答えに相当する、人の判断結果は意外と記録されていない
 記録されていてもフォーマットが一定でない
Copyright © 2016 TIS Inc. All rights reserved. 29
機械学習に触れてみて (2/2)
 実際に機械学習に触れてみると、データに対する意識が変わる
 色々学習させてみると、こういう属性も取得してあればよかったのに
と思うようになる
 例: Apacheのアクセスログにこういう情報も含めておけばよかった
 例: rsyslogの標準フォーマットではログに年の情報がなかった
 重要なのは頻度の低い事象の記録
 よく起こる事象はルールベースでも対応しやすい
 学習データに無い事象に機械学習で対応させるのは難しい
 少なくとも似た事象のデータが含まれていないと推測できない
 単一のPJや組織で記録しているデータにはそれほど多様性は無い
Copyright © 2016 TIS Inc. All rights reserved. 30
機械学習との付き合い方
 まずは試してみて、普段の業務におけるデータの捉え方を見直す
良い機会とする
 今見直しておけば、1年後にはデータの量や質に差がつく
 何か人が判断を下したときは、その時の情報と下した判断結果を
扱いやすい形式で残しておこう
 今まで短期間分しか残していなかったログももう少しためてみよう
 小さな問題から補助的に適用してみる
 手元にあるそれほど多くないデータだけでもできることはある
 過去に起こった事と同じ内容であれば高い精度で推定できる
 新しく起こったことでも、それを再学習させれば次からは推定できる
 ただし目的意識は明確に
 目的を明確にしておかないと、何をKPIとして結果を評価すべきかが
定まらない
 別の方法で達成可能であるのであればそれで構わない
Copyright © 2016 TIS Inc. All rights reserved. 31
まとめ
 インフラエンジニアにも機械学習は無縁では無い
 運用現場には様々なログデータが存在する
 知らなければどう活用してよいか検討できない
 機械学習は怖くない
 知識がなくても初期設定で動かしてみるだけなら簡単
 どう活用するかのアイデアと、対象領域に関する知識が重要に
 まずは試してみてどのようなものか知ろう
 多分最初から役に立つものは作れない
 ルールベースでも日常的な運用の大部分はカバーできている
 非日常的なイベントを機械学習で解決するにはデータが足りない
 データをためる仕組みを作るためには、知ることが重要
 こういうデータもあればよかったという気付きが1年後の改善へ
ご清聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

Running Containers Without Servers: Introduction to AWS Fargate - SRV214 - At...
Running Containers Without Servers: Introduction to AWS Fargate - SRV214 - At...Running Containers Without Servers: Introduction to AWS Fargate - SRV214 - At...
Running Containers Without Servers: Introduction to AWS Fargate - SRV214 - At...Amazon Web Services
 
【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話
【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話
【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話Hibino Hisashi
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13Amazon Web Services Japan
 
障害に備えたアーキテクチャを考える
障害に備えたアーキテクチャを考える障害に備えたアーキテクチャを考える
障害に備えたアーキテクチャを考えるYoshii Ryo
 
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems ManagerAmazon Web Services Japan
 
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったことAWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったことTakayuki Ishikawa
 
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜Mamoru Ohashi
 
わかりづらいS3クロスアカウントアクセス許可に立ち向かおう
わかりづらいS3クロスアカウントアクセス許可に立ち向かおうわかりづらいS3クロスアカウントアクセス許可に立ち向かおう
わかりづらいS3クロスアカウントアクセス許可に立ち向かおうTakashi Toyosaki
 
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編日本マイクロソフト株式会社
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAmazon Web Services Japan
 
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFSAmazon Web Services Japan
 
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep diveAmazon Web Services Japan
 
ビズリーチにおけるEMR(AWS)活用事例
ビズリーチにおけるEMR(AWS)活用事例ビズリーチにおけるEMR(AWS)活用事例
ビズリーチにおけるEMR(AWS)活用事例Shin Takeuchi
 
AWS IoT サービス アップデートのご紹介
AWS IoT サービス アップデートのご紹介AWS IoT サービス アップデートのご紹介
AWS IoT サービス アップデートのご紹介Amazon Web Services Japan
 
とある脆弱性の永い議論
とある脆弱性の永い議論とある脆弱性の永い議論
とある脆弱性の永い議論Mtikutea
 
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)NTT DATA Technology & Innovation
 
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDutyAmazon Web Services Japan
 
CloudFormation/SAMのススメ
CloudFormation/SAMのススメCloudFormation/SAMのススメ
CloudFormation/SAMのススメEiji KOMINAMI
 
クラウド上のデータ活用デザインパターン
クラウド上のデータ活用デザインパターンクラウド上のデータ活用デザインパターン
クラウド上のデータ活用デザインパターンAmazon Web Services Japan
 

Mais procurados (20)

Running Containers Without Servers: Introduction to AWS Fargate - SRV214 - At...
Running Containers Without Servers: Introduction to AWS Fargate - SRV214 - At...Running Containers Without Servers: Introduction to AWS Fargate - SRV214 - At...
Running Containers Without Servers: Introduction to AWS Fargate - SRV214 - At...
 
【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話
【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話
【第20回セキュリティ共有勉強会】Amazon FSx for Windows File Serverをセキュリティ観点で試してみたお話
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
障害に備えたアーキテクチャを考える
障害に備えたアーキテクチャを考える障害に備えたアーキテクチャを考える
障害に備えたアーキテクチャを考える
 
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
 
AWS Black Belt Online Seminar Amazon Aurora
AWS Black Belt Online Seminar Amazon AuroraAWS Black Belt Online Seminar Amazon Aurora
AWS Black Belt Online Seminar Amazon Aurora
 
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったことAWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
 
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜
ぼくらのアカウント戦略〜マルチアカウントでのガバナンスと権限管理の全て〜
 
わかりづらいS3クロスアカウントアクセス許可に立ち向かおう
わかりづらいS3クロスアカウントアクセス許可に立ち向かおうわかりづらいS3クロスアカウントアクセス許可に立ち向かおう
わかりづらいS3クロスアカウントアクセス許可に立ち向かおう
 
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
 
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
20201028 AWS Black Belt Online Seminar Amazon CloudFront deep dive
 
ビズリーチにおけるEMR(AWS)活用事例
ビズリーチにおけるEMR(AWS)活用事例ビズリーチにおけるEMR(AWS)活用事例
ビズリーチにおけるEMR(AWS)活用事例
 
AWS IoT サービス アップデートのご紹介
AWS IoT サービス アップデートのご紹介AWS IoT サービス アップデートのご紹介
AWS IoT サービス アップデートのご紹介
 
とある脆弱性の永い議論
とある脆弱性の永い議論とある脆弱性の永い議論
とある脆弱性の永い議論
 
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
 
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
 
CloudFormation/SAMのススメ
CloudFormation/SAMのススメCloudFormation/SAMのススメ
CloudFormation/SAMのススメ
 
クラウド上のデータ活用デザインパターン
クラウド上のデータ活用デザインパターンクラウド上のデータ活用デザインパターン
クラウド上のデータ活用デザインパターン
 

Semelhante a 機械学習を用いたAWS CloudTrailログの積極的活用

DevSecOps in Multi Account
DevSecOps in Multi AccountDevSecOps in Multi Account
DevSecOps in Multi AccountTomoaki Sakatoku
 
AWS + MLflow + SageMakerの環境を動かしてみたお話
AWS + MLflow + SageMakerの環境を動かしてみたお話AWS + MLflow + SageMakerの環境を動かしてみたお話
AWS + MLflow + SageMakerの環境を動かしてみたお話ItohHiroki
 
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証y_taka_23
 
sitTokyo2023_App&Dev_01_ariyama.pptx
sitTokyo2023_App&Dev_01_ariyama.pptxsitTokyo2023_App&Dev_01_ariyama.pptx
sitTokyo2023_App&Dev_01_ariyama.pptxyuichiariyama
 
導入事例_継続的セキュリティチェック成功体験
導入事例_継続的セキュリティチェック成功体験導入事例_継続的セキュリティチェック成功体験
導入事例_継続的セキュリティチェック成功体験Yoshii Ryo
 
転移学習ランキング・ドメイン適応
転移学習ランキング・ドメイン適応転移学習ランキング・ドメイン適応
転移学習ランキング・ドメイン適応Elpo González Valbuena
 
「これ危ない設定じゃないでしょうか」とヒアリングするための仕組み @AWS Summit Tokyo 2018
「これ危ない設定じゃないでしょうか」とヒアリングするための仕組み @AWS Summit Tokyo 2018「これ危ない設定じゃないでしょうか」とヒアリングするための仕組み @AWS Summit Tokyo 2018
「これ危ない設定じゃないでしょうか」とヒアリングするための仕組み @AWS Summit Tokyo 2018cyberagent
 
Amazon WorkSpaces導入のコツと活用事例
Amazon WorkSpaces導入のコツと活用事例Amazon WorkSpaces導入のコツと活用事例
Amazon WorkSpaces導入のコツと活用事例Serverworks Co.,Ltd.
 
AmazonManagedGrafanaを使ってAWSマルチアカウントで監視ダッシュボード構築してみた
AmazonManagedGrafanaを使ってAWSマルチアカウントで監視ダッシュボード構築してみたAmazonManagedGrafanaを使ってAWSマルチアカウントで監視ダッシュボード構築してみた
AmazonManagedGrafanaを使ってAWSマルチアカウントで監視ダッシュボード構築してみたtakaakiinada
 
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonightAmazon Web Services Japan
 
DEIM2019 楽天技術研究所の研究とケーススタディ(推薦システム)
DEIM2019 楽天技術研究所の研究とケーススタディ(推薦システム)DEIM2019 楽天技術研究所の研究とケーススタディ(推薦システム)
DEIM2019 楽天技術研究所の研究とケーススタディ(推薦システム)Sho Nakamura
 
cloudpack監視・運用保守のなかで生まれた自社開発の取り組みと知見
cloudpack監視・運用保守のなかで生まれた自社開発の取り組みと知見cloudpack監視・運用保守のなかで生まれた自社開発の取り組みと知見
cloudpack監視・運用保守のなかで生まれた自社開発の取り組みと知見shuichi takahashi
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発Amazon Web Services Japan
 
Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理Amazon Web Services Japan
 
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法Amazon Web Services Japan
 
データ分析チームの振り返り
データ分析チームの振り返りデータ分析チームの振り返り
データ分析チームの振り返りSatoshi Noto
 
データレイクを基盤としたAWS上での機械学習サービス構築
データレイクを基盤としたAWS上での機械学習サービス構築データレイクを基盤としたAWS上での機械学習サービス構築
データレイクを基盤としたAWS上での機械学習サービス構築Amazon Web Services Japan
 

Semelhante a 機械学習を用いたAWS CloudTrailログの積極的活用 (20)

DevSecOps in Multi Account
DevSecOps in Multi AccountDevSecOps in Multi Account
DevSecOps in Multi Account
 
AWS + MLflow + SageMakerの環境を動かしてみたお話
AWS + MLflow + SageMakerの環境を動かしてみたお話AWS + MLflow + SageMakerの環境を動かしてみたお話
AWS + MLflow + SageMakerの環境を動かしてみたお話
 
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
 
JJUG CCC 2014 ATL
JJUG CCC 2014 ATLJJUG CCC 2014 ATL
JJUG CCC 2014 ATL
 
sitTokyo2023_App&Dev_01_ariyama.pptx
sitTokyo2023_App&Dev_01_ariyama.pptxsitTokyo2023_App&Dev_01_ariyama.pptx
sitTokyo2023_App&Dev_01_ariyama.pptx
 
GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)GraphQL入門 (AWS AppSync)
GraphQL入門 (AWS AppSync)
 
導入事例_継続的セキュリティチェック成功体験
導入事例_継続的セキュリティチェック成功体験導入事例_継続的セキュリティチェック成功体験
導入事例_継続的セキュリティチェック成功体験
 
転移学習ランキング・ドメイン適応
転移学習ランキング・ドメイン適応転移学習ランキング・ドメイン適応
転移学習ランキング・ドメイン適応
 
「これ危ない設定じゃないでしょうか」とヒアリングするための仕組み @AWS Summit Tokyo 2018
「これ危ない設定じゃないでしょうか」とヒアリングするための仕組み @AWS Summit Tokyo 2018「これ危ない設定じゃないでしょうか」とヒアリングするための仕組み @AWS Summit Tokyo 2018
「これ危ない設定じゃないでしょうか」とヒアリングするための仕組み @AWS Summit Tokyo 2018
 
Amazon WorkSpaces導入のコツと活用事例
Amazon WorkSpaces導入のコツと活用事例Amazon WorkSpaces導入のコツと活用事例
Amazon WorkSpaces導入のコツと活用事例
 
AmazonManagedGrafanaを使ってAWSマルチアカウントで監視ダッシュボード構築してみた
AmazonManagedGrafanaを使ってAWSマルチアカウントで監視ダッシュボード構築してみたAmazonManagedGrafanaを使ってAWSマルチアカウントで監視ダッシュボード構築してみた
AmazonManagedGrafanaを使ってAWSマルチアカウントで監視ダッシュボード構築してみた
 
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
[CTO Night & Day 2019] よくある課題を一気に解説!御社の技術レベルがアップする 2019 秋期講習 #ctonight
 
DEIM2019 楽天技術研究所の研究とケーススタディ(推薦システム)
DEIM2019 楽天技術研究所の研究とケーススタディ(推薦システム)DEIM2019 楽天技術研究所の研究とケーススタディ(推薦システム)
DEIM2019 楽天技術研究所の研究とケーススタディ(推薦システム)
 
cloudpack監視・運用保守のなかで生まれた自社開発の取り組みと知見
cloudpack監視・運用保守のなかで生まれた自社開発の取り組みと知見cloudpack監視・運用保守のなかで生まれた自社開発の取り組みと知見
cloudpack監視・運用保守のなかで生まれた自社開発の取り組みと知見
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
 
Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理
 
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
20180619 AWS Black Belt Online Seminar データレイク入門: AWSで様々な規模のデータレイクを分析する効率的な方法
 
データ分析チームの振り返り
データ分析チームの振り返りデータ分析チームの振り返り
データ分析チームの振り返り
 
Serverless Application Security on AWS
Serverless Application Security on AWSServerless Application Security on AWS
Serverless Application Security on AWS
 
データレイクを基盤としたAWS上での機械学習サービス構築
データレイクを基盤としたAWS上での機械学習サービス構築データレイクを基盤としたAWS上での機械学習サービス構築
データレイクを基盤としたAWS上での機械学習サービス構築
 

機械学習を用いたAWS CloudTrailログの積極的活用

  • 1. Copyright © 2016 TIS Inc. All rights reserved. 戦略技術センター 高橋和也 機械学習を用いた AWS CloudTrailログの積極的活用 July Tech Festa 2016 2016/07/24
  • 2. Copyright © 2016 TIS Inc. All rights reserved. 1 はじめに  本日の話  インフラエンジニアと機械学習  Amazon MLを用いて試行錯誤しながらログデータを機械学習させてみ た事例  機械学習に触れてみて感じたこと  以下は出てきません  機械学習の理論やアルゴリズムの話  機械学習を活用して効果を挙げた事例  色々試してみたけれど、今のところ成功したかというと・・・
  • 3. Copyright © 2016 TIS Inc. All rights reserved. 2 自己紹介  発表者  高橋和也  TIS株式会社 戦略技術センター所属  インフラ関連技術の活用に向けた検証や開発等を担当  主な経歴  社内システム運用  各種クラウドサービスの検証  Zabbixの拡張ツールであるHyClopsの開発  クラウドオーケストレーションツールCloudConductorの開発  機械学習の経験は無し  今年の4月から着手
  • 4. Copyright © 2016 TIS Inc. All rights reserved. 3 背景
  • 5. Copyright © 2016 TIS Inc. All rights reserved. 4 機械学習に対する期待の高まり  データ分析・活用の手段として機械学習に注目が集まっている  少し前からある事例  大量の購買データをリコメンドに利用  大量のセンサデータを障害予測に利用  ディープラーニングの登場でさらに適用範囲は拡大  解決したい問題にあわせて与える学習データを人が調整するのではなく、 大量に蓄積されたデータを大規模環境で学習させて法則を見つけ出す  法則を言語化しづらい画像認識などでも活躍  でも大量のデータを持っていない企業には縁が無い?  本当に大量にデータが無いといけないのか?  本当にインフラエンジニアは知らなくてよいのか? まずは手元のデータで何ができて、何が足りないのか試してみよう
  • 6. Copyright © 2016 TIS Inc. All rights reserved. 5 インフラエンジニアの身近にあるデータといえば  運用現場に眠る様々なログ  ログを残しておくことは運用上重要  現在の状態の把握  問題発生の検出  問題の原因切り分け  監査証跡  運用現場には大量のログデータが蓄積されている  AWS上だけでも様々なログが記録されている  CloudTrail: AWSのAPI呼び出しログ  VPC Flow Logs: VPC上のリソースの通信ログ  S3 Bucket Logging: S3のアクセスログ  CloudWatch Logs: 各サーバから収集したログやLambda Functionの実行ログ  でも普段から人がログに目を通す余裕は無い
  • 7. Copyright © 2016 TIS Inc. All rights reserved. 6 ログデータの特徴  どのような特徴を持っているか  データ量がそれなりに多い  日常的に利用されるシステムのアクセスログは、不特定多数のユーザを対象 としていなくても長期間集めればある程度のボリュームになる  製品毎に一定のフォーマットに従って出力されている  機械学習を適用するためのデータ加工がしやすい  一度うまくいけば同一製品/機器を使う他の運用現場にもノウハウを 横展開しやすい  長期間にわたり保管されている  思い立ってからデータを集め始めなくても過去のデータを活用できる  人が全部目を通すのは大変  何か問題が起きない限り確認されないログも多い
  • 8. Copyright © 2016 TIS Inc. All rights reserved. 7 これまでのログデータ活用: 監視  ログデータは監視対象としても重要  障害につながるエラーログの検出  バッチ処理等の成功/失敗の確認  想定外のアクセスの検出  ログ監視は監視ルールのメンテナンスが大変  出力されるログメッセージを事前に把握する必要がある  ログレベルが出力される場合は比較的監視しやすいが、そうでない場合は 出力されるメッセージ内容の把握が必要  めったに出ないログメッセージは事前に調べるのが難しい  バージョンアップ等で変更があるとまた対応が必要  環境によって注視すべきログが異なる場合が多い 機械学習を使ってルールを置き換えられないか
  • 9. Copyright © 2016 TIS Inc. All rights reserved. 8 これまでのログデータ活用: 可視化  ログの検索・可視化が簡単に実現可能な時代に  Elastic Stack, Splunk, etc.  AWSであればAmazon Elasticsearch Service (Amazon ES)  可視化することでログの傾向を短時間で確認可能  例: 過去1週間のアクセスログ件数の推移  例: 権限不足により拒否された操作ログを種別毎に抽出  しかし可視化した結果をどう判断するかはまだ人に委ねられている  例: このアクセス傾向は普段通りなのか、普段と異なるのか  例: この拒否された操作は問題ないのか、攻撃の兆候なのか 機械学習を使って自動的に判断できないか
  • 10. Copyright © 2016 TIS Inc. All rights reserved. 9 機械学習に触れてみよう
  • 11. Copyright © 2016 TIS Inc. All rights reserved. 10 機械学習とは?  機械学習に対して持っていた漠然としたイメージ  数式がたくさん出てきて統計学の知識が必要。難しそう。  大規模な並列分散処理を行う環境が必要。手が出しにくい。  しかし今ならクラウドサービスがある  理論やアルゴリズムを知らなくてもとりあえずは使える  覚えるのは詰まってからでも遅くない  自前で環境を用意する必要が無い  試行錯誤する段階では財布にやさしい  機械学習関連のクラウドサービスの例  Amazon Machine Learning  Azure Machine Learning  Google Prediction API / Cloud Machine Learning
  • 12. Copyright © 2016 TIS Inc. All rights reserved. 11 機械学習でできること  教師あり学習  入力と対応する答えの例を大量に与えると、その法則を学習して 他の入力に対しても答えを導き出す  例: あるアクセスログを見て、通常のアクセスか不審なアクセスか分類  例: バッチ処理の入力データを見て、そのデータの処理にかかる時間を推定  学習データの答えは事前に用意しておく必要がある  教師なし学習  大量の入力を与えると、それらの入力から関係性を見出す  例: 似た入力をまとめて複数のクラスタにグルーピングする  学習データに答えは用意しなくて良いが、機械学習から得られた結果が 妥当かどうかは人が解釈する必要がある
  • 13. Copyright © 2016 TIS Inc. All rights reserved. 12 今回の題材: AWS CloudTrailのログを用いた操作主体分類  AWS CloudTrailのログには様々なAPI呼び出しが記録される  人による操作  Management Console  CLI  連携させた外部サービス/スクリプトによる操作  AccessKey/SecretKeyによるスクリプト/外部ツール連携  Instance ProfileによるEC2インスタンス内からのAPI呼び出し  SAMLによる外部サービス連携  何らかのEventと連動したLambda Functionからの操作  AWS Config Rules  AWS CloudWatch Event  その他 S3/SNS/DynamoDB/CloudWatch Logs等との連携 それぞれで傾向は異なるため、操作主体を区別して可視化したい
  • 14. Copyright © 2016 TIS Inc. All rights reserved. 13 ログの特徴  同一の操作でも操作主体や対象サービスによってログ内容が異なる  ec2:RunInstancesの場合  人がManagementConsoleから起動した場合  sourceIPAddress: 接続元IP  userAgent: signin.amazonaws.com  人がSwitchRoleした後ManagementConsoleから起動した場合  sourceIPAddress: 接続元IP  userAgent: console.ec2.amazonaws.com  人がManagementConsoleからMarketplaceのAMIを起動した場合  sourceIPAddress: marketplace.amazonaws.com  userAgent: marketplace.amazonaws.com  スクリプトからSDKを使って起動した場合  sourceIPAddress: 接続元IP  userAgent: 利用したツールやSDKのuserAgent  上記のような傾向は対象サービス毎にさらに少しずつ異なる
  • 15. Copyright © 2016 TIS Inc. All rights reserved. 14 現状の課題  ルールベースでログから操作主体を区別するのが難しい  どんなログであれば人による操作なのか  Management Consoleでの操作の場合  userAgent = "signin.amazonaws.com"の場合?  他にも"AWS CloudWatch Console"とか"[S3Console/0.4]"とか色々ある  これからも新サービスが出るたびに増え続ける  ルール化できないこともない気がするが、ルールのメンテナンスで 挫折することが目に見えている  結局使われているUser/Role名を見て判断する  このアカウントではこのUser/Roleはこの用途で使われているはず  この判断基準だと運用ルールに依存し、横展開が難しい  さらにRoleを追加するたびにフィルタルールの更新が必要に Amazon MLを試してみよう
  • 16. Copyright © 2016 TIS Inc. All rights reserved. 15 今回用意した学習データ  検証用AWSアカウントのCloudTrailログ  対象データ: 2016年6月に記録されたログ  対象データ件数: 7467件 (重複排除後)  学習用データ(70%): 5235件  評価用データ(30%): 2232件
  • 17. Copyright © 2016 TIS Inc. All rights reserved. 16 前準備: 学習データの整形  CloudTrailのログをAmazon ML用に整形  JSONで記述されているログをCSV形式に変換  今回はアカウントの運用ルールに左右されにくい属性のみを利用  その他の属性はラベル付け時には参照したが、学習データには含めていない 属性名 データ例 awsRegion ap-northeast-1 eventName RunInstances eventSource ec2.amazonaws.com eventType AwsApiCall sourceIPAddress 52.197.67.xxx, lambda.amazonaws.com userAgent awslambda-worker userIdentity.accessKeyId (先頭4文字) AKIA, ASIA userIdentity.invokedBy signin.amazonaws.com, (空値) userIdentity.type IAMUser, AssumedRole
  • 18. Copyright © 2016 TIS Inc. All rights reserved. 17 前準備: ラベルの付与  手作業で答えとなるラベルを付与  今回は以下の4カテゴリに分類  Human (人による操作)  Script (スクリプトや外部ツールによる操作)  AWSLambda (Lambda Functionによる操作)  AWSService (AWSの他のサービスによる操作)  分類毎のデータの分布
  • 19. Copyright © 2016 TIS Inc. All rights reserved. 18 Amazon ML: DataSource登録  先ほど用意したCSVファイルをDataSourceとして登録  S3上にファイルを格納してファイルパスを指定  この後デフォルト設定で進めるなら、データは事前にシャッフルしておく  データの各属性のタイプを指定  Binary, Number, Text, Categorical  今回はUserAgentとSourceIPAddressがText、それ以外はCategorical  最後に機械学習で推定したい属性を指定
  • 20. Copyright © 2016 TIS Inc. All rights reserved. 19 Amazon ML: Model作成  どのような学習モデルを 生成するかを設定  今回はデフォルト設定を 利用  今回は目的変数が Categoricalなので、 多項分類が行われる  データは学習用(70%)と 評価用(30%)に分割  後は評価用データを用い てEvaluationまで実施 してくれる  簡単!
  • 21. Copyright © 2016 TIS Inc. All rights reserved. 20 Amazon ML: Evaluation結果の確認  評価結果  同一アカウント、同一時期であればそれなりには分類できそう  分割した評価データ(左)では高い精度で分類できている  追加で翌月のログ2週間分もラベルを付与して評価した場合(右)は Scriptに関してはうまく分類できていないデータがあった  外した5件は学習データに含まれていなかったツールのログだった
  • 22. Copyright © 2016 TIS Inc. All rights reserved. 21 Amazon ML: 追加の評価  では別のAWSアカウントのログの場合はどうなるか  開発に利用している別のAWSアカウントのログを1日分だけ 借りてきて同様にラベルを付与  データ数3771件、このアカウントではAWS Lambdaは利用していない  評価結果は微妙な結果に  学習データには無かったスクリプトや外部ツールの分類精度が低い  しかし初出のスクリプト全てが分類できなかったわけではない  学習データには無かったCloudFormationから間接的に呼び出されるAPI呼 び出しの分類精度が低い
  • 23. Copyright © 2016 TIS Inc. All rights reserved. 22 評価結果を踏まえた改善  評価結果が出てからが機械学習の本番  機械学習を動かしてみるだけであれば、知識が無くても簡単  結果を解釈してどのように改善していくかは、知識が無いと厳しい  試してみたけれどぱっとしない結果のまま詰まってしまう  今回はどのように改善すべきか  学習データの多様性の向上  そもそも複数のアカウントへの適用を想定するのであれば、 学習データも用途が異なる複数のアカウントから集めるべき  最も確実だと思われるが、手作業でのラベルの付与作業が負担に  ラベル付与を半自動化する仕組みが無いと厳しい  使い方の転換  学習データの元となったアカウントであれば精度が出るのであれば、 まずはそのアカウントだけでしばらく運用し、他の課題を洗い出す もう少し腰を据えて学習データをためる 仕組みを作ってみよう
  • 24. Copyright © 2016 TIS Inc. All rights reserved. 23 その他の試行錯誤してみた例
  • 25. Copyright © 2016 TIS Inc. All rights reserved. 24 行き詰った事例1: 普段行われない外部への通信の検出  目的  AWSのVPC Flow Logsを使うと通信ログを記録することができる  InboundはSecurityGroupでしっかり塞いでいるが、Outboundの通信 は検証用アカウントなので厳密に制御していない  常時稼動させているサーバの過去の通信ログを学習すれば、そのサーバ が普段行わない不審な外部通信を見つけられないか  結果 (Azure MLでAnomaly Detectionを利用)  アクセス先が一定でないサーバでは、頻度の低い通信が検出される  正常な通信も不審な通信もHTTP(S)通信にしか見えず、傾向が出にくい  これはデータがより蓄積されれば、用途によってはパケット数や転送データ 量で区別できるようになる可能性はある  アクセス先が一定なサーバであれば、ホワイトリストを作った方が早い
  • 26. Copyright © 2016 TIS Inc. All rights reserved. 25 行き詰った事例2: 定常的なログと例外的なログの分類  目的  定常運用中のサーバは出力されるログもある程度一定である  エラーログは監視で検知するが、その他の例外的なログは拾っていない  過去のログメッセージを学習させれば、普段出ていないINFOや WARNINGのログをうまく分類できるのでは無いか  結果  過去にも出ていて学習データに含まれていた例外的ログに関しては メッセージが一部変化していてもほぼ正確に分類できる  学習データに含まれていない初出のログメッセージは分類が安定しない  普段発生しないログメッセージを学習データに含めるのは難しい
  • 27. Copyright © 2016 TIS Inc. All rights reserved. 26 行き詰った事例の共通点  単一のデータだけを見てできることを考えている  人が判断する場合、一種類のデータだけを見て判断することは少ない  複数のログを確認して総合的に考える  運用設計の内容も踏まえて考える  メンテナンスなどのイベントも把握している  その時世の中で流行っている攻撃方法の特性も考慮する  データを見て適用先を考えていると、目的がぶれやすい  どのような課題を解決したいのかを決め、そのためにどのようなデータ が役立ちそうか考えるべき  複数のデータが役立ちそうなら組み合わせてみる  判断に前提知識が必要そうであれば、事前に学習データに組み込んでみる  課題解決に必要なデータが足りなければ、まずはためる仕組みから  人が気付いていない法則を学習させるためには、 多様性が保たれた大量の学習データを用意することが前提
  • 28. Copyright © 2016 TIS Inc. All rights reserved. 27 機械学習に触れてみて感じたこと
  • 29. Copyright © 2016 TIS Inc. All rights reserved. 28 機械学習に触れてみて (1/2)  人は様々な情報を組み合わせて判断を下している  今回のCloudTrailログを用いた例の場合  環境特有の知識  このIAM Roleはこの目的に使用している  このIPアドレスは社内からのアクセスである  過去に起こったイベントの知識  この機能はこの頃から使い始めた  こうした情報は機械学習で扱いやすい形式になっていない  Excelの設計書等にしか記載されていなかったり  本当に機械学習に代替させたい問題の答えは、扱いやすいデータと して記録できていない  教師あり学習では答えは事前に用意しなければいけない  答えに相当する、人の判断結果は意外と記録されていない  記録されていてもフォーマットが一定でない
  • 30. Copyright © 2016 TIS Inc. All rights reserved. 29 機械学習に触れてみて (2/2)  実際に機械学習に触れてみると、データに対する意識が変わる  色々学習させてみると、こういう属性も取得してあればよかったのに と思うようになる  例: Apacheのアクセスログにこういう情報も含めておけばよかった  例: rsyslogの標準フォーマットではログに年の情報がなかった  重要なのは頻度の低い事象の記録  よく起こる事象はルールベースでも対応しやすい  学習データに無い事象に機械学習で対応させるのは難しい  少なくとも似た事象のデータが含まれていないと推測できない  単一のPJや組織で記録しているデータにはそれほど多様性は無い
  • 31. Copyright © 2016 TIS Inc. All rights reserved. 30 機械学習との付き合い方  まずは試してみて、普段の業務におけるデータの捉え方を見直す 良い機会とする  今見直しておけば、1年後にはデータの量や質に差がつく  何か人が判断を下したときは、その時の情報と下した判断結果を 扱いやすい形式で残しておこう  今まで短期間分しか残していなかったログももう少しためてみよう  小さな問題から補助的に適用してみる  手元にあるそれほど多くないデータだけでもできることはある  過去に起こった事と同じ内容であれば高い精度で推定できる  新しく起こったことでも、それを再学習させれば次からは推定できる  ただし目的意識は明確に  目的を明確にしておかないと、何をKPIとして結果を評価すべきかが 定まらない  別の方法で達成可能であるのであればそれで構わない
  • 32. Copyright © 2016 TIS Inc. All rights reserved. 31 まとめ  インフラエンジニアにも機械学習は無縁では無い  運用現場には様々なログデータが存在する  知らなければどう活用してよいか検討できない  機械学習は怖くない  知識がなくても初期設定で動かしてみるだけなら簡単  どう活用するかのアイデアと、対象領域に関する知識が重要に  まずは試してみてどのようなものか知ろう  多分最初から役に立つものは作れない  ルールベースでも日常的な運用の大部分はカバーできている  非日常的なイベントを機械学習で解決するにはデータが足りない  データをためる仕組みを作るためには、知ることが重要  こういうデータもあればよかったという気付きが1年後の改善へ