jaws-ug cli専門支部 #16...

20
CDPにIAM関連のデザインパターンが 無いので提案してみる JAWS-UG CLI #16 LT 2015/03/30 Nobuhiro Nakayama

Upload: nobuhiro-nakayama

Post on 17-Jul-2015

98 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

CDPにIAM関連のデザインパターンが無いので提案してみる

JAWS-UG CLI #16 LT

2015/03/30

Nobuhiro Nakayama

Page 2: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

me.json

{

"name“ : "Nobuhiro Nakayama",

"favorite aws services“ : [

"Storage Gateway",

"Directory Service",

"IAM"

],

"certifications“ : [

"AWS Certified Solutions Architect-Associate",

"AWS Certified SysOps Administrator-Associate",

"Microsoft Certified Solutions Expert : Server Infrastructure",

"Microsoft Certified Solutions Expert : SharePoint“

“IPA : Network Specialist”

“IPA : Information Security Specialist”

]

}

2015/3/30 2

Page 3: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

目次

• CDP(クラウドデザインパターン)

• 「サービス・リソースを保護するパターン」のご提案

2015/3/30 3

Page 4: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

#17でManaged Policy入門の講師をします

• 波田野さん以外が講師をするのは初・・・ ((((;゚Д゚))))

• Qiitaでハンズオン資料を作成中

• そのとき、「CDPに参考になりそうなデザインパターンあるかも!」と思って調べてみた。

2015/3/30 4

Page 5: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

2015/3/30 5

出典 http://aws.clouddesignpattern.org/images/a/ac/Cdp-overview-org.png

Page 6: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

無かった・・・

2015/3/30 6

Page 7: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

提案だ!

2015/3/30 7

Page 8: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

とりあえず、提案してみる

1. Black List

2. White List

3. Resource Protection

4. Single Responsibility IAM Group

2015/3/30 8

Page 9: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

Black List

• 概要

• 広い範囲のアクションを許可する権限と併せて、特定のアクションを禁止する権限を設定

• アクセス可否の決定ロジック

明示的なDeny > 明示的なAllow > デフォルトDeny

2015/3/30 9

Page 10: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

Black List 設定例(1)

{

"Version": "2012-10-17",

"Statement": [

{

"Action": "ec2:*",

"Effect": "Allow",

"Resource": "*"

}

]

}

2015/3/30 10

明示的に広範囲のActionをAllowを設定し、

Page 11: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

Black List 設定例(2)

{

"Version": "2012-10-17",

"Statement": [

{

"Effect": "Deny",

"Action": [

"ec2:TerminateInstances"

],

"Condition": {

"StringEquals": {

"ec2:Region": "ap-northeast-1"

}

},

"Resource": [

"*"

]

}

]

}

2015/3/30 11

AllowしたActionの一部をDenyする。

Page 12: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

White List

• 概要

• 特定のアクションを許可する権限を設定

2015/3/30 12

Page 13: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

White List 設定例(1)

{

"Version": "2012-10-17",

"Statement": [

{

"Effect": "Allow",

"Action": [

"ec2:RebootInstances",

"ec2:StartInstances",

"ec2:StopInstances"

],

"Resource": [

"*"

]

}

]

}

2015/3/30 13

明示的に狭い範囲のActionをAllowする。

Page 14: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

Resource Protection

• 概要

• 重要なリソースの削除や変更を禁止する権限を設定

• EC2やRDSインスタンス、EBSボリューム

• EIP(一度リリースすると、同じEIPを確保するのはほぼ不可能)

• Hosted Zone(権威サーバのホスト名が変わる)

• S3バケット、ファイル(監査ログの改ざん、請求明細の消失、など)

• ResourceやConditionを利用

• Black Listの亜種

• Blue-Green Deploymentとかやってるとこには向かないかも?

• メリット・このパターンのねらい

• 誤操作や悪意をもった操作に対してリソースを保護

2015/3/30 14

Page 15: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

Resource Protection 設定例(1)

{

"Version": "2012-10-17",

"Statement": [

{

"Effect": “Allow",

"Action": [

“rds:*"

],

"Resource": [

“*"

]

}

]

}

2015/3/30 15

明示的に広範囲のActionをAllowし、

Page 16: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

Resource Protection 設定例(2)

{

"Version": "2012-10-17",

"Statement": [

{

"Effect": "Deny",

"Action": [

"rds:DeleteDBInstance"

],

"Resource": [

"arn:aws:rds:ap-northeast-1:************:db:myinstance"

]

}

]

}

2015/3/30 16

特定のリソース/条件に対するActionをDenyする。

Page 17: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

Single Responsibility IAM Group

• 概要

• 役割や機能単位でグループとポリシーを定義

• SRP(Single Responsibility Principle)のようなもの

• “A class should have only one reason to change.”

• グループにアタッチできるManaged Policyの上限は2つだが、単一の役割であれば十分なはず

• Managed Policyを利用することで、変更管理がしやすくなる(バージョン管理、ロールバック、など)

• ユーザは、担当する役割のグループに所属

• グループを分割しすぎると、グループに所属するユーザの管理が煩雑になるので注意が必要

• IAMユーザをIAMグループから削除し忘れる、など

• メリット・このパターンのねらい

• Managed Policyの新機能を生かしやすい(アタッチできる上限にひっかかりにくい)

• 複数バージョンの保持が可能

• ロールバックが簡単(Default Versionの変更)

• (うまく設計できれば)グループと役割が1:1になるで、わかりやすい。

• (たぶん)ポリシーが長くなりにくい

2015/3/30 17

Page 18: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

Single Responsibility IAM Group

管理者(全ての権限)

監査(CloudTraliのログ

を閲覧)

監視(CloudWatchの読

み取り権限)

運用(EC2インスタンスの起動・停止・再起

動)

User01 ○

User02 ○

User03 ○

User04 ○ ○

2015/3/30 18

各役割毎にグループとポリシーを定義

Page 19: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

まとめ

• IAMを含んだデザインパターンが欲しい!

• デザインパターンとして明文化されていると、事故が減るのでは?

• CDPって、どなたかメンテしてるんでしょうか?

• 目黒支部の発足でメンテされるようになるといいなー・・・

• CloudTrail(とCloudWatchLogs)、Assume Role、Federation認証なども絡めたパターンも検討したい

• 次回の本編で(可能な範囲で)具体的な設計パターンについて議論できたらいいなーと思っています!

2015/3/30 19

Page 20: JAWS-UG CLI専門支部 #16 CDPにIAM関連のデザインパターンが無いので提案してみる

2015/3/30 20