Slide 1

Slide 1 text

で学ぶクロスアカウント権限設計の勘所 須永 響

Slide 2

Slide 2 text

@gravitas580 須永 響 Hibiki Sunaga CTC(伊藤忠テクノソリューションズ株式会社 ) 新卒3年目 業務:AWSインフラ基盤の設計・構築 好きなAWS技術:マルチアカウント、NW :@gravitas580 About Me

Slide 3

Slide 3 text

アジェンダ @gravitas580 01 02 03 04 05 本日のテーマとゴール ネットワーク接続経路の設計パターン ポリシーの種類と使い方 クロスアカウントアクセスの権限設計パターン まとめ

Slide 4

Slide 4 text

アジェンダ @gravitas580 01 02 03 04 05 本日のテーマとゴール ネットワーク接続経路の設計パターン ポリシーの種類と使い方 クロスアカウントアクセスの権限設計パターン まとめ

Slide 5

Slide 5 text

@gravitas580 クロスアカウントの権限設計 自信もってできますか?

Slide 6

Slide 6 text

@gravitas580 クロスアカウント接続での困りごと クロスアカウントでの 権限の挙動がわからない そもそそも IAMポリシーの種類や仕組み よくわからなってないかも 最小権限にしたいけど、 どのアカウントにどの制 限をかければ、、、

Slide 7

Slide 7 text

@gravitas580 本日のゴール EC2 → S3 というシンプルな構成で クロスアカウントでの権限の勘所を押さえる

Slide 8

Slide 8 text

@gravitas580 話すこと ➢ バケットポリシーの修正 ➢ AssumeRole利用 ➢ アクセスキー利用 IAMポリシーの種類と仕組み ➢ アイデンティティベースポリシー ➢ リソースベースポリシー クロスアカウント接続の権限設計パターン

Slide 9

Slide 9 text

@gravitas580 本日検討する構成 システムアカウント のEC2から、 ログアカウント のS3にファイルをアップロードしたい

Slide 10

Slide 10 text

@gravitas580 クロスアカウントの接続で検討すること ネットワーク接続経路設計 NW どうやってEC2とS3をつなぐか 権限設計 IAM 誰がどの権限でアクセスするのか

Slide 11

Slide 11 text

@gravitas580 クロスアカウントの接続で検討すること 本日はIAMスペシャル! ⇒ を中心に、 もサクッと紹介 ネットワーク接続経路設計 NW どうやってEC2とS3をつなぐか 権限設計 IAM 誰がどの権限でアクセスするのか IAM NW

Slide 12

Slide 12 text

アジェンダ @gravitas580 01 02 03 04 05 本日のテーマとゴール ネットワーク接続経路の設計パターン ポリシーの種類と使い方 クロスアカウントアクセスの権限設計パターン まとめ

Slide 13

Slide 13 text

@gravitas580 接続パターン A) Gateway型VPCエンドポイント経由 B) TGW(or VPCピアリング)&Interface型VPCエンドポイント経由 C) Internet Gateway経由

Slide 14

Slide 14 text

@gravitas580 接続パターン A) Gateway型VPCエンドポイント経由 ※STSエンドポイント、SSMエンドポイントは記載なし

Slide 15

Slide 15 text

@gravitas580 接続パターン B) TGW(or VPCピアリング)&Interface型VPCエンドポイント経由 ※STSエンドポイント、SSMエンドポイントは記載なし

Slide 16

Slide 16 text

@gravitas580 接続パターン C) Internet Gateway経由 ※STSエンドポイント、SSMエンドポイントは記載なし

Slide 17

Slide 17 text

@gravitas580 接続パターン A) Gateway型VPCエンドポイント経由 B) TGW(or VPCピアリング)&Interface型VPCエンドポイント経由 C) Internet Gateway経由 どのパターンで構築しても、権限設計には影響なし NW要件に応じて設計しましょう おすすめ

Slide 18

Slide 18 text

アジェンダ @gravitas580 01 02 03 04 05 本日のテーマとゴール ネットワーク接続経路の設計パターン ポリシーの種類と使い方 クロスアカウントアクセスの権限設計パターン まとめ

Slide 19

Slide 19 text

@gravitas580 同一アカウント内アクセスの場合 どんなポリシーを付与すればよいか?

Slide 20

Slide 20 text

@gravitas580 同一アカウント内のEC2→S3なら簡単 ⚫ EC2のIAMロールにS3アクション許可ポリシーを付与

Slide 21

Slide 21 text

@gravitas580 クロスアカウントの場合 同一アカウントのときと同じように 「EC2のIAMロールにS3アクション許可ポリシーを付与」 するだけではダメ

Slide 22

Slide 22 text

@gravitas580 IAMポリシーの種類 ✓ アイデンティティベースポリシー ✓ リソースベースポリシー 他には、Permission Boundary, SCP, RCP, ACL, セッションポリシーがある AWS Identity and Access Management でのポリシーとアクセス許可 - AWS Identity and Access Management

Slide 23

Slide 23 text

@gravitas580 アイデンティティベースポリシー ✓ IAMロール、IAMユーザー、IAMグループに付与するポリシー ✓ 「何をできるか/できないか」の権限を与えるポリシー EC2のIAMロールにつけていたS3アクション許可ポリシーが該当

Slide 24

Slide 24 text

@gravitas580 リソースベースポリシーとは? ✓ リソースに設定するポリシー ✓ 「誰からのアクセスを許可/拒否するか」を設定するポリシー 例: ➢ S3のバケットポリシー: 誰が S3バケットに アクセスできるか ➢ IAMロールの信頼ポリシー: 誰が IAMロールを 使用できるか

Slide 25

Slide 25 text

@gravitas580 EC2→S3のアクセスが可能なのは ✓ アイデンティティベースポリシーで許可 ✓ リソースベースポリシーで許可 ⇒両方揃えばアクセス可能

Slide 26

Slide 26 text

@gravitas580 実は同一アカウントの場合でも... 同一アカウントでも両方の許可が必要 ➢ EC2:IAMポリシー「 S3アクションを許可」 ➢ S3:バケットポリシー「EC2用IAMロールからのアクセスを許可」 ただし、 バケットポリシーはデフォルトで同一アカウントからのアクセスが許可されている ⇒ EC2へIAMポリシーを付与するだけでよい

Slide 27

Slide 27 text

@gravitas580 (再掲)EC2→S3のアクセスが可能なのは ✓ アイデンティティベースポリシーで許可 ✓ リソースベースポリシーで許可 ⇒両方揃えばアクセス可能

Slide 28

Slide 28 text

アジェンダ @gravitas580 01 02 03 04 05 本日のテーマとゴール ネットワーク接続経路の設計パターン ポリシーの種類と使い方 クロスアカウントアクセスの権限設計パターン まとめ

Slide 29

Slide 29 text

@gravitas580 実装パターン 3つ ① バケットポリシーの修正 ② AssumeRole ③ アクセスキー

Slide 30

Slide 30 text

@gravitas580 パターン1: バケットポリシーの修正 ⚫ EC2のIAMロールでログアカウントS3へのアクセスを許可 ⚫ S3のバケットポリシーではEC2のIAMロールからのアクセスを許可

Slide 31

Slide 31 text

@gravitas580 IAMポリシーのCondtion条件で aws:ResourceAccount、aws:ResourceOrgID を指定することで、特定のアカウント/Organizations配下アカウントに制限可能 パターン1: ポリシー設定内容 EC2 IAMポリシー { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::my-bucket/*" } S3 バケットポリシー { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/EC2Role" }, "Action": ["s3:PutObject", "s3:GetObject"], "Resource": "arn:aws:s3:::my-bucket/*" } Tips

Slide 32

Slide 32 text

@gravitas580 パターン1:まとめ ✓ どのアカウントの権限でアクセスしている? ⇒システムアカウントの権限 ✓ バケットポリシーはデフォルトで同一アカウントからの権限のみ許可 ⇒バケットポリシーを修正

Slide 33

Slide 33 text

@gravitas580 パターン2: AssumeRole ⚫ ログアカウント内にAssumeRole用のIAMロールを作成 ⚫ EC2はログアカウントの権限に切り替えてS3にアクセス

Slide 34

Slide 34 text

@gravitas580 パターン2:必要なポリシー 3つのポリシーの設定が必要 1. EC2用 IAMポリシー → AssumeRoleの実行を許可 2. ログアカウントIAMロール用 アイデンティティベースポリシー → S3へアクセスを許可 3. ログアカウントIAMロール用 信頼ポリシー → EC2ロールからのAssumeRoleを許可 S3目線では、同じアカウントからのアクセスのためバケットポリシーの修正は不要

Slide 35

Slide 35 text

@gravitas580 (補足)AssumeRoleの復習 AssumeRole ✓ sts:AssumeRoleというアクションを実行 ✓ 他のロールを借りる際に使用 ✓ 一時的な認証情報を取得 ➢ アクセスキー、シークレットアクセスキー、セッショントークン ※スイッチロール:マネコン上でAssumeRoleをする機能

Slide 36

Slide 36 text

@gravitas580 パターン2:ポリシー設定内容 EC2 IAMポリシー { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::999999999999:role/S3AccessRole" } ログアカウントIAMロール アイデンティティベースポリシー { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject" ], "Resource": "arn:aws:s3:::my-bucket/*" } ログアカウントIAMロール 信頼ポリシー { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/EC2Role" }, "Action": "sts:AssumeRole" }

Slide 37

Slide 37 text

@gravitas580 パターン2:まとめ ✓ どのアカウントの権限でアクセスしている? ⇒AssumeRoleすることで、ログアカウントの権限でアクセス ✓ バケットポリシーはデフォルトで同一アカウントからの権限のみ許可 ⇒(S3から見ると)同一アカウントの権限からのアクセスのため バケットポリシーは修正不要

Slide 38

Slide 38 text

@gravitas580 パターン3: アクセスキー(非推奨) ⚫ ログアカウントにS3アクションを許可したIAMユーザーを作成 ⚫ EC2内にIAMユーザーのアクセスキーをハードコード

Slide 39

Slide 39 text

@gravitas580 パターン3:まとめ ✓ どのアカウントの権限でアクセスしている?

Slide 40

Slide 40 text

@gravitas580 パターン3:まとめ ✓ どのアカウントの権限でアクセスしている? ⇒アクセスキーを使用することで、ログアカウントの権限でアクセス ✓ バケットポリシーはデフォルトで同一アカウントからの権限のみ許可 ⇒(S3から見ると)同一アカウントの権限からのアクセスのため バケットポリシーは修正不要

Slide 41

Slide 41 text

@gravitas580 アクセスする権限の違い バケットポリシーの修正では、システムアカウントの権限でアクセス AssumeRoleでは、ログアカウントの権限でアクセス

Slide 42

Slide 42 text

@gravitas580 アクセスする権限の違い 権限を一元管理するという点からも、AssumeRole推奨

Slide 43

Slide 43 text

アジェンダ @gravitas580 01 02 03 04 05 本日のテーマとゴール ネットワーク接続経路の設計パターン ポリシーの種類と使い方 クロスアカウントアクセスの権限設計パターン まとめ

Slide 44

Slide 44 text

@gravitas580 まとめ ⚫ クロスアカウントでのアクセスは、疎通性や権限に要注意 ⚫ クロスアカウントでの接続時にはどのアカウントの権限を使用しているのか 意識するとSCP等の設計も組みやすくなる ➢ IAM Identity Centerはログイン先アカウントのIAMロールを使用している ⚫ 実際はSCP, RCP, Permisson Boundary, ACLなども影響してくるので まだまだ奥は深い ➢ 気になる方は「 ポリシー 評価ロジック フローチャート」などで検索