Slide 1

Slide 1 text

Mamoru Ohashi @mamohacy @mamohacy @NERF22#20150915 管理統制もLambdaで! 〜 AWSによるAWS⾃⾝の管理統制の⾃動化 〜 2016.01.21

Slide 2

Slide 2 text

@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

Slide 3

Slide 3 text

@mamohacy 2 私の所属部⾨の担当業務 @NERF22#20150915 AWSまわりの各種管理統制 ・アカウント管理 ・セキュリテイガバナンス ・利⽤料⾦管理 メンバー少ない(15システム/⽉600万円 → 5⼈でメンテ) 運⽤の⾃動化・監査の⾃動化は必須(やんないと死ぬ・・・) 監査⾃動化+メール通知+ChatOps このへんに 使ってます︕

Slide 4

Slide 4 text

@mamohacy 3 セキュリティガバナンス︖ @NERF22#20150915 "' #( QK* QK 3 +J4F7 PA)J4F7 +/,6, <5BDI $ DI -2 $ %'D;1C=H +!&9>=H M5GL:.:=H M5GL: %'D; R0?@ SN8OE

Slide 5

Slide 5 text

@mamohacy 4 【参考】CloudTrailフィルタ • CloudTrailのログ内容をリアルタイムでフィルタリング • 条件⼀致したレコードが⾒つかった際に既定のアクションを実⾏ • アクションにはメール発出の他に⾃作プログラムの起動も指定可能 CloudTrail CloudWatch Logs CloudWatch Metrics Filter + +

Slide 6

Slide 6 text

@mamohacy 5 発生内容 検知手段 対策 IAMユーザーへのアクセス権限設定の追加・変更・削除 CloudTrailフィルタ メール通知 IAMグループへのアクセス権限設定の追加・変更・削除 CloudTrailフィルタ メール通知 IAMアカウント管理統制 IAM User 追加/更新 削除(紐付けの解除) IAM Group 所属 IAM Policy 追加/更新 削除(紐付けの解除) (アクセス権限設定) 作成 削除 除外 IAMユーザーの追加と削除ならびにグループへの所属と除外は権限としてデフォルト許可。 それ以外の操作は運⽤で禁⽌とするが、万が⼀実⾏された場合に備えこれを検知できる仕組みも具備する。

Slide 7

Slide 7 text

@mamohacy 6 How to Use Lambda!? 当部のアカウント 開発部のアカウント @virginia @virginia @tokyo 共通機能 共通機能 不正な権限操作が⾏われていないか︖ そもそもIAMの権限にIAMの権限操作を 付与していない(rootアカウントだけが可能) 我々が操作するときは周知して実⾏する JSON->TXT変換 アカウント名付与 当部運⽤者へ メール通知

Slide 8

Slide 8 text

@mamohacy 7 発生内容 検知手段 対策 rootアカウントによるマネジメントコンソールへのログイン CloudTrailフィルタ メール通知 IAMアカウントによるマネジメントコンソールへの連続ログイン失敗 CloudTrailフィルタ メール通知 不許可ロケーションからのログイン IAMポリシー設定 ブロック(※) 不正ログイン対策 User User User rootログインの成功 IAMログインの連続失敗(3回) 不許可ロケーションからのログイン ※マネジメントコンソールへのログインは可能だがAWSの全リソースにアクセス不可状態となる

Slide 9

Slide 9 text

@mamohacy 8 How to Use Lambda!? 当部のアカウント 開発部のアカウント @virginia @virginia @tokyo 共通機能 共通機能 IAMログインの 失敗を検知 同⼀ユーザー &n分間で x回連続︖ JSON->TXT変換 アカウント名付与 当部運⽤者へ メール通知 個別機能 共通機能

Slide 10

Slide 10 text

@mamohacy 9 発生内容 検知方法/対策 通知方法 ログの不正読み取り SSE-KMSによる暗号化 ブロック ログの不正削除 削除時のMFA必須化設定 バケットポリシー設定 ブロック ログの不正改竄、持ち出し IAMアカウントのアクセス権限設定 ブロック CloudTrailログへのアクセス権限設定変更 独自構築(※1) ブロック&メール通知 CloudTrailログ保全 User 不正読み取り 不正削除/不正改竄 不正改竄・不正持出し アクセス権限設定変更 CloudTrailログ 暗号化 ※2︓アクセス権限設定のログを定期検査し、異常が⾒つかった時点で強制的に元の権限に戻したうえメール通知も⾏う CloudTrailログは旧来でいうところのカメラ映像や⼊退室ログに相当するため改竄や持ち出しについても厳重に管理します (永年保存)

Slide 11

Slide 11 text

@mamohacy 10 How to Use Lambda!? 当部のアカウント 開発部のアカウント @virginia @virginia @tokyo 共通機能 共通機能 • 1⽇1回定期実⾏ • CloudTrail関連の権限が付与さ れていないか、全ポリシー/ ロール/アタッチ状態をチェッ ク • 問題があれば強制排除&SNS 呼び出し JSON->TXT変換 アカウント名付与 当部運⽤者へ メール通知 個別機能

Slide 12

Slide 12 text

@mamohacy 11 料⾦管理 @NERF22#20150915 11 全管理対象アカウントの料⾦を常時監視 ・予算との乖離がないか︖ ・急激な利⽤費上昇がないか ・⼀定⾦額を超えてからでは遅い ⽇々のチェックが重要、だけど・・ 毎回コストエクスプローラーでちまちま・・とかやってられ ない︕

Slide 13

Slide 13 text

@mamohacy 12 How to Use Lambda!? • 1⽇1回定期実⾏ • Billingを取得する別のLambda FunctionをInvoke • 受け取った値を整形して WebHookをCall(Curl) CloudWatchのBilling情報を取得 して返すだけ 各アカウント 1つのチャネルにアカウント毎に その⽇の料⾦が吐き出される ・前々⽇との伸び率 ・前⽇の費⽤ ・前々⽇の費⽤ ・当⽉の合計費⽤

Slide 14

Slide 14 text

@mamohacy 13 まとめと感想 uSNS->Lambdaの組合せは⾄る所で使える魔法の杖 u処理の細かい単位でLambdaを組んでいくのはあり • 合計値算出処理 • JSON->TXTパース • etc u同期処理が深くなるのはバッドプラクティス︖