Mamoru Ohashi
@mamohacy
@mamohacy@NERF22#20150915
管理統制もLambdaで!
~ AWSによるAWS自身の管理統制の自動化 ~
2016.01.21
@mamohacy 1
大橋 衛(オオハシマモル)
1974/10/01(41歳)
AWS Solution Archtect(associate)
ずっとエンタープライズ畑
アプリ開発エンジニア12年
インフラ設計エンジニア4年
2013年 AWSに出会い衝撃を受ける
2016年1月より某社にて
AWSコンサル/セキュリティ監査業務に
従事
家族:妻、娘2人
趣味:スノーボード、読書
絶賛本名プレイ中
@mamohacy
http://blog.mamohacy.tribrid-
jp.com/
自己紹介
@NERF22#20150915
@mamohacy 2
私の所属部門の担当業務
@NERF22#20150915
AWSまわりの各種管理統制
・アカウント管理
・セキュリテイガバナンス
・利用料金管理
メンバー少ない(15システム/月600万円 → 5人でメンテ)
運用の自動化・監査の自動化は必須(やんないと死ぬ・・・)
監査自動化+メール通知+ChatOps
このへんに
使ってます!
@mamohacy 3
セキュリティガバナンス?
@NERF22#20150915
14
:作業責任範囲
アプリ/Config
ミドルウェア
OS
仮想ネットワーク
仮想サーバ
AWS
セキュリティ管理部門
開発主管部門
AWS
当部
AWSアカウント発⾏⾏⾏代
⾏
⾏⾏
AWS
システム
監視
社内
システム
セキュリティ監査対応⽀⽀援
AWSインフラ設計⽀⽀援
セキュリティ監査
侵⼊⼊検
知
脆弱性診断
@mamohacy 4
【参考】CloudTrailフィルタ
• CloudTrailのログ内容をリアルタイムでフィルタリング
• 条件一致したレコードが見つかった際に既定のアクションを実行
• アクションにはメール発出の他に自作プログラムの起動も指定可能
CloudTrail CloudWatch
Logs
CloudWatch
Metrics Filter
+ +
@mamohacy 5
発生内容 検知手段 対策
IAMユーザーへのアクセス権限設定の追加・変更・削除 CloudTrailフィルタ メール通知
IAMグループへのアクセス権限設定の追加・変更・削除 CloudTrailフィルタ メール通知
IAMアカウント管理統制
IAM User
IAM Group
所属
IAM Policy
(アクセス権限設定)
作成 削除
除外
IAMユーザーの追加と削除ならびにグループへの所属と除外は権限としてデフォルト許可。
それ以外の操作は運用で禁止とするが、万が一実行された場合に備えこれを検知できる仕組みも具備する。
@mamohacy 6
How to Use Lambda!?
当部のアカウント開発部のアカウント
@virginia @virginia
@tokyo
共通機能 共通機能
不正な権限操作が行われていないか?
そもそもIAMの権限にIAMの権限操作を
付与していない(rootアカウントだけが可能)
我々が操作するときは周知して実行する
JSON->TXT変換
アカウント名付与
当部運用者へ
メール通知
@mamohacy 7
発生内容 検知手段 対策
rootアカウントによるマネジメントコンソールへのログイン CloudTrailフィルタ メール通知
IAMアカウントによるマネジメントコンソールへの連続ログイン失敗 CloudTrailフィルタ メール通知
不許可ロケーションからのログイン IAMポリシー設定 ブロック(※)
不正ログイン対策
User
User
User
rootログインの成功
IAMログインの連続失敗(3回)
不許可ロケーションからのログイン
※マネジメントコンソールへのログインは可能だがAWSの全リソースにアクセス不可状態となる
@mamohacy 8
How to Use Lambda!?
当部のアカウント開発部のアカウント
@virginia @virginia@tokyo
共通機能 共通機能
IAMログインの
失敗を検知
同一ユーザー
&n分間で
x回連続?
JSON->TXT変換
アカウント名付与
当部運用者へ
メール通知
個別機能共通機能
@mamohacy 9
発生内容 検知方法/対策 通知方法
ログの不正読み取り SSE-KMSによる暗号化 ブロック
ログの不正削除 削除時のMFA必須化設定
バケットポリシー設定
ブロック
ログの不正改竄、持ち出し IAMアカウントのアクセス権限設定 ブロック
CloudTrailログへのアクセス権限設定変更 独自構築(※1) ブロック&メール通知
CloudTrailログ保全
User
不正読み取り
不正削除/不正改竄
不正改竄・不正持出し
アクセス権限設定変更CloudTrailログ
暗号化
※2:アクセス権限設定のログを定期検査し、異常が見つかった時点で強制的に元の権限に戻したうえメール通知も行う
CloudTrailログは旧来でいうところのカメラ映像や入退室ログに相当するため改竄や持ち出しについても厳重に管理します
(永年保存)
@mamohacy 10
How to Use Lambda!?
当部のアカウント開発部のアカウント
@virginia @virginia@tokyo
共通機能 共通機能
• 1日1回定期実行
• CloudTrail関連の権限が付与さ
れていないか、全ポリシー/
ロール/アタッチ状態をチェッ
ク
• 問題があれば強制排除&SNS
呼び出し
JSON->TXT変換
アカウント名付与
当部運用者へ
メール通知
個別機能
@mamohacy 11
料金管理
@NERF22#20150915 11
全管理対象アカウントの料金を常時監視
・予算との乖離がないか?
・急激な利用費上昇がないか
・一定金額を超えてからでは遅い
日々のチェックが重要、だけど・・
毎回コストエクスプローラーでちまちま・・とかやってられ
ない!
@mamohacy 12
How to Use Lambda!?
• 1日1回定期実行
• Billingを取得する別のLambda
FunctionをInvoke
• 受け取った値を整形して
WebHookをCall(Curl)
CloudWatchのBilling情報を取得
して返すだけ
各アカウント
1つのチャネルにアカウント毎に
その日の料金が吐き出される
・前々日との伸び率
・前日の費用
・前々日の費用
・当月の合計費用
@mamohacy 13
まとめと感想
SNS->Lambdaの組合せは至る所で使える魔法の杖
処理の細かい単位でLambdaを組んでいくのはあり
• 合計値算出処理
• JSON->TXTパース
• etc
同期処理が深くなるのはバッドプラクティス?

管理統制もLambdaで!

Editor's Notes

  • #4 HaaS〜SaaSの違い