管理統制もLambdaで!

14
Mamoru Ohashi @mamohacy @mamohacy @NERF22#20150915 管管管管管 Lambda 管 ! AWS ににに AWS ににににににににににに 2016.01.21

Transcript of 管理統制もLambdaで!

Page 1: 管理統制もLambdaで!

Mamoru Ohashi@mamohacy

@mamohacy@NERF22#20150915

管理統制も Lambda で !~  AWS による AWS 自身の管理統制の自動化 ~

2016.01.21

Page 2: 管理統制もLambdaで!

@mamohacy@NERF22#20150915 2

大橋 衛 ( オオハシマモル )1974/10/01(41 歳 )AWS Solution Archtect(associate)

ずっとエンタープライズ畑アプリ開発エンジニア 12 年インフラ設計エンジニア 4 年2013 年 AWS に出会い衝撃を受ける2016 年 1 月より某社にてAWS コンサル / セキュリティ監査業務に従事家族:妻、娘2人趣味:スノーボード、読書

絶賛本名プレイ中

@mamohacy

http://blog.mamohacy.tribrid-jp.com/

自己紹介

Page 3: 管理統制もLambdaで!

@mamohacy@NERF22#20150915 3

私の所属部門の担当業務

AWS まわりの各種管理統制・アカウント管理・セキュリテイガバナンス・利用料金管理

メンバー少ない (15 システム / 月 600 万円 →  5 人でメンテ)運用の自動化・監査の自動化は必須(やんないと死ぬ・・・)監査自動化+メール通知+ ChatOps

このへんに

使ってます!

Page 4: 管理統制もLambdaで!

@mamohacy@NERF22#20150915 4

セキュリティガバナンス?

Page 5: 管理統制もLambdaで!

@mamohacy 5

【参考】 CloudTrail フィルタ

• CloudTrail のログ内容をリアルタイムでフィルタリング• 条件一致したレコードが見つかった際に既定のアクションを実行• アクションにはメール発出の他に自作プログラムの起動も指定可能

CloudTrail CloudWatchLogs

CloudWatchMetrics Filter

+ +

Page 6: 管理統制もLambdaで!

@mamohacy 6

発生内容 検知手段 対策

IAM ユーザーへのアクセス権限設定の追加・変更・削除 CloudTrail フィルタ メール通知

IAM グループへのアクセス権限設定の追加・変更・削除 CloudTrail フィルタ メール通知

IAM アカウント管理統制

IAM User

追加 / 更新削除 ( 紐付けの解除 )

IAM Group

所属

IAM Policy

追加 / 更新

削除 ( 紐付けの解除 )

(アクセス権限設定)

作成 削除

除外

IAM ユーザーの追加と削除ならびにグループへの所属と除外は権限としてデフォルト許可。それ以外の操作は運用で禁止とするが、万が一実行された場合に備えこれを検知できる仕組みも具備する。

Page 7: 管理統制もLambdaで!

@mamohacy 7

How to Use Lambda!?当部のアカウント開発部のアカウン

@virginia @virginia

@tokyo

共通機能 共通機能

不正な権限操作が行われていないか?そもそも IAM の権限に IAM の権限操作を付与していない (root アカウントだけが可能)我々が操作するときは周知して実行する JSON->TXT 変換

アカウント名付与当部運用者へメール通知

Page 8: 管理統制もLambdaで!

@mamohacy 8

発生内容 検知手段 対策

root アカウントによるマネジメントコンソールへのログイン CloudTrail フィルタ メール通知

IAM アカウントによるマネジメントコンソールへの連続ログイン失敗

CloudTrail フィルタ メール通知

不許可ロケーションからのログイン IAM ポリシー設定 ブロック(※ )

不正ログイン対策

User

User

User

root ログインの成功

IAM ログインの連続失敗 (3 回 )

不許可ロケーションからのログイン

※ マネジメントコンソールへのログインは可能だが AWS の全リソースにアクセス不可状態となる

Page 9: 管理統制もLambdaで!

@mamohacy 9

How to Use Lambda!?当部のアカウント開発部のアカウン

@virginia @virginia@tokyo

共通機能 共通機能

IAM ログインの失敗を検知

同一ユーザー& n 分間でx 回連続?

JSON->TXT 変換アカウント名付与

当部運用者へメール通知

個別機能共通機能

Page 10: 管理統制もLambdaで!

@mamohacy 10

発生内容 検知方法 / 対策 通知方法

ログの不正読み取り SSE-KMS による暗号化 ブロック

ログの不正削除 削除時の MFA 必須化設定バケットポリシー設定

ブロック

ログの不正改竄、持ち出し IAM アカウントのアクセス権限設定

ブロック

CloudTrail ログへのアクセス権限設定変更 独自構築(※1) ブロック&メール通知

CloudTrail ログ保全

User

不正読み取り

不正削除 / 不正改竄

不正改竄・不正持出し

アクセス権限設定変更CloudTrail ログ

暗号化

※ 2:アクセス権限設定のログを定期検査し、異常が見つかった時点で強制的に元の権限に戻したうえメール通知も行う

CloudTrail ログは旧来でいうところのカメラ映像や入退室ログに相当するため改竄や持ち出しについても厳重に管理します

(永年保存)

Page 11: 管理統制もLambdaで!

@mamohacy 11

How to Use Lambda!?当部のアカウント開発部のアカウン

@virginia @virginia@tokyo

共通機能 共通機能

• 1日 1 回定期実行• CloudTrail関連の権限が付与

されていないか、全ポリシー / ロール / アタッチ状態をチェック

• 問題があれば強制排除& SNS呼び出し

JSON->TXT 変換アカウント名付与

当部運用者へメール通知

個別機能

Page 12: 管理統制もLambdaで!

@mamohacy@NERF22#20150915 12

料金管理

12

全管理対象アカウントの料金を常時監視・予算との乖離がないか?・急激な利用費上昇がないか・一定金額を超えてからでは遅い

日々のチェックが重要、だけど・・毎回コストエクスプローラーでちまちま・・とかやってられない!

Page 13: 管理統制もLambdaで!

@mamohacy 13

How to Use Lambda!?

• 1日 1 回定期実行• Billing を取得する別の

Lambda Function を Invoke• 受け取った値を整形して

WebHook を Call(Curl)

CloudWatch の Billing情報を取得して返すだけ

各アカウント1つのチャネルにアカウント毎にその日の料金が吐き出される・前々日との伸び率・前日の費用・前々日の費用・当月の合計費用

Page 14: 管理統制もLambdaで!

@mamohacy 14

まとめと感想

SNS->Lambda の組合せは至る所で使える魔法の杖処理の細かい単位で Lambda を組んでいくのはあり

• 合計値算出処理• JSON->TXTパース• etc

同期処理が深くなるのはバッドプラクティス?