Slide 1

Slide 1 text

AWS IAMだけでなんとかする、 最低限のガードレール クラスメソッド株式会社 コンサルティング部 ちゃだいん

Slide 2

Slide 2 text

目次 ● そもそもガードレールとは ● 最低限防ぎたいこと ● 実装方法のフローチャート ● 1. MFAの強制 ● 2. 特定のアクションを禁止する ● 3. IAMロール作成はOK、IAMユーザー作成はNG

Slide 3

Slide 3 text

自己紹介 ● 名前: ちゃだいん ● 所属: AWS事業本部 コンサルティング部 ● 役割: ソリューションアーキテクト ● ジョイン: 2019.1~ ● Fav: クラフトビール(IPA)、茶碗蒸し

Slide 4

Slide 4 text

そもそもガードレールとは

Slide 5

Slide 5 text

ガードレール? ● セキュリティ・ガバナンスに関する新めの概念(守り→攻め) ● ゲートからガードレールへ ○ いままで:ゲート(都度関所のように止めていた) ○ これから:ガードレール(基本自由、でも立ち入り禁止区域には入れない) ● ビジネスや開発のスピードを止めず、必要十分なセキュリティ・ガバナンスを担保す る方法 ● むしろ、ガードレールがない道路より、ガードレールがある道路の方がスピードを出 せるはず(崖から落ちる心配をしないでOK)

Slide 6

Slide 6 text

● 予防的ガードレール ○ 禁止事項を未然に防止する ○ IAMポリシー ○ SCP ● 発見的ガードレール ○ 禁止事項を事後検出する ○ Security Hub ○ Configルール 2つのガードレールの概念

Slide 7

Slide 7 text

最低限防ぎたいこと

Slide 8

Slide 8 text

● アクセスキーの漏洩 ● 基本設定の変更・削除 ● クラウド破産 ● 権限昇格 ● ... ワークロード、ユースケース、組織文化によって様々 最低限防ぎたいことの例

Slide 9

Slide 9 text

実装方法のフローチャート

Slide 10

Slide 10 text

超カンタンなフローチャート マルチアカウント戦略 やりたい? or Organizations 使いたい? No Yes ● IAMポリシー ● パーミッションバウンダリー ● スイッチロール ● Organizations ● SCP ● AWS SSO マルチアカウントじゃない or マルチアカウントだけど、Organizations使わない(使えない) マルチアカウントで、 Organizations使いたい

Slide 11

Slide 11 text

今回紹介するのはこちら マルチアカウント戦略 やりたい? or Organizations 使いたい? No Yes ● IAMポリシー ● パーミッションバウンダリー ● スイッチロール ● Organizations ● SCP ● AWS SSO マルチアカウントじゃない or マルチアカウントだけど、Organizations使わない(使えない) マルチアカウントで、 Organizations使いたい

Slide 12

Slide 12 text

ただし... マルチアカウント戦略 やりたい? or Organizations 使いたい? No Yes ● IAMポリシー ● パーミッションバウンダリー ● スイッチロール ● Organizations ● SCP ● AWS SSO マルチアカウントじゃない or マルチアカウントだけど、Organizations使わない(使えない) マルチアカウントで、 Organizations使いたい 正直、今回やる「最低限のガードレール」は、 Organizations/SCP/AWS SSOを使う方がカンタン&オススメ。 ただし、全ての利用者で Organizationsが利用できる訳ではない ので、今回のパターン( IAMだけでなんとかする パターン) をご 紹介します。

Slide 13

Slide 13 text

Organizations使わないで IAMだけでなんとかするパターン

Slide 14

Slide 14 text

元ネタのブログ 「最低限のガードレールを考慮したシンプルな IAM 設計を CloudFormation でデプロイ する | DevelopersIO」より引用 https://dev.classmethod.jp/articles/build-simple-guardrail-iam-design-pattern-by- cfn/

Slide 15

Slide 15 text

構成図

Slide 16

Slide 16 text

構成図(シンプル版)

Slide 17

Slide 17 text

技術要素 ● IAM ポリシー ● パーミッションバウンダリー ● スイッチロール

Slide 18

Slide 18 text

最低限防ぎたいこと 1. MFAの強制 2. 特定のアクションを禁止する(例:Config/CloudTrailの変更・削除) 3. IAMロール作成はOK、IAMユーザー作成はNG

Slide 19

Slide 19 text

1. MFAの強制

Slide 20

Slide 20 text

1. MFAの強制 IAMロールに付与する信頼ポリシーに条件を追加し、 MFA認証済みのIAMユーザーのみスイッチロールできるようにする 開発者には、ログイ ン時の仮想MFAを設 定をしてもらう

Slide 21

Slide 21 text

1. MFAの強制

Slide 22

Slide 22 text

1. MFAの強制

Slide 23

Slide 23 text

1. MFAの強制

Slide 24

Slide 24 text

2. 特定のアクションの禁止

Slide 25

Slide 25 text

2. 特定のアクションを禁止する(例:Config/CloudTrail) IAMロールに付与するユーザーポリシーにフルアクセス、 パーミッションバウンダリーに特定のアクション禁止を記述する

Slide 26

Slide 26 text

パーミッションバウンダリー(Permissions Boundary) 引用元)IAM エンティティのアクセス許可の境界 - AWS https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_boundaries.html

Slide 27

Slide 27 text

Tips: IAMポリシーの基本(権限の勝ち負け)

Slide 28

Slide 28 text

2. 特定のアクションを禁止する(例:Config/CloudTrail) IAMロールに付与するユーザーポリシーにフルアクセス、 パーミッションバウンダリーに特定のアクション禁止を記述する

Slide 29

Slide 29 text

2.1 パーミッションバウンダリーで特定のアクションを禁止 パーミッションバウンダリー パーミッションバウンダリー

Slide 30

Slide 30 text

2.1 パーミッションバウンダリーで特定のアクションを禁止 パーミッションバウンダリー ①全て「許可」 ②一部のIAMアクションを 「禁止」 ③一部のIAM以外の アクションを「禁止」 ②一部のIAMアクションを「禁 止」 パーミッションバウンダリー

Slide 31

Slide 31 text

2.1 パーミッションバウンダリーで特定のアクションを禁止 パーミッションバウンダリー ①全て「許可」 ③一部のIAM以外の アクションを「禁止」 パーミッションバウンダリー

Slide 32

Slide 32 text

2.1 パーミッションバウンダリーで特定のアクションを禁止 パーミッションバウンダリー ①全て「許可」 パーミッションバウンダリー

Slide 33

Slide 33 text

2.1 パーミッションバウンダリーで特定のアクションを禁止 パーミッションバウンダリー ③一部のIAM以外の アクションを「禁止」

Slide 34

Slide 34 text

2.2 IAMロールのユーザーポリシーにフルアクセスを許可 実行権限(管理ポリシー)

Slide 35

Slide 35 text

2.3 パーミッションバウンダリーをアタッチ 実行権限(管理ポリシー)

Slide 36

Slide 36 text

2. 特定のアクションを禁止する(例:Config/CloudTrail)

Slide 37

Slide 37 text

2. 特定のアクションを禁止する(例:Config/CloudTrail) ● EC2の起動 → OK ● Config/CloudTrailの設定変更 → NG ● ...

Slide 38

Slide 38 text

3. IAMロール作成はOK、IAMユーザー作成はNG

Slide 39

Slide 39 text

なぜ? ● IAM系のリソース作成を全て禁止しちゃうと管理者大変・業務スピード低下 ● IAMロールは自由に作れるようにしたい ● IAMユーザーは禁止したい(作れると最低限のアクション制限が崩壊) ● 権限昇格も防ぎたい →管理者が開発者などへ一部IAM権限を移譲することで業務効率化を図る

Slide 40

Slide 40 text

3. IAMロール作成はOK、IAMユーザー作成はNG パーミッションバウンダリーに 「IAMロール作成はOK・IAMユーザー作成はNG」をを記述する

Slide 41

Slide 41 text

3. IAMロール作成はOK、IAMユーザー作成はNG パーミッションバウンダリー ①全て「許可」 ②一部のIAMアクションを 「禁止」 ③一部のIAM以外の アクションを「禁止」 ②一部のIAMアクションを「禁 止」 パーミッションバウンダリー

Slide 42

Slide 42 text

3. IAMロール作成はOK、IAMユーザー作成はNG パーミッションバウンダリー ②一部のIAMアクションを 「禁止」 ②一部のIAMアクションを「禁 止」 パーミッションバウンダリー

Slide 43

Slide 43 text

3. IAMロール作成はOK、IAMユーザー作成はNG パーミッションバウンダリー ②-1 ②-3 パーミッションバウンダリー ②-2 ②-4

Slide 44

Slide 44 text

②-1 IAMユーザーの作成、変更などを禁止

Slide 45

Slide 45 text

②-2 パーミッションバウンダリーのないIAMロール作成禁止 言い換えると、 パーミッションバウンダリーのある IAMロールは 作成OK

Slide 46

Slide 46 text

②-3 パーミッションバウンダリーの変更禁止

Slide 47

Slide 47 text

②-4 パーミッションバウンダリーの削除禁止

Slide 48

Slide 48 text

3. IAMロール作成はOK、IAMユーザー作成はNG ● IAMユーザーの作成 → NG ● パーミッションバウンダリーのない IAMロールの作成 → NG ● パーミッションバウンダリーのある IAMロールの作成 → OK ● パーミッションバウンダリーの変更・削除 → NG

Slide 49

Slide 49 text

最低限防ぎたいこと 1. MFAの強制 2. 特定のアクションを禁止する 3. IAMロール作成はOK、IAMユーザー作成はNG

Slide 50

Slide 50 text

注意事項 ● 権限まわり、IAMまわりの変更は、十分検証する ● Webコンソールのウィザードで作成しようとするIAMロールは作成失敗します ○ (例)Lambdaファンクションをコンソールのウィザードで作成する際に、新たに IAMロールを作成す る場合ウィザードではパーミッションバウンダリーを指定できないため失敗します。 ←正直、ここが 本構成の1番の難点です。ウィザードでカンタンにサービスのリソース一式を作成する際につまずく 可能性が高いです。

Slide 51

Slide 51 text

元ネタのブログ 「最低限のガードレールを考慮したシンプルな IAM 設計を CloudFormation でデプロイ する | DevelopersIO」より引用 https://dev.classmethod.jp/articles/build-simple-guardrail-iam-design-pattern-by- cfn/

Slide 52

Slide 52 text

ありがとうございました