Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IaCでセキュリティを強化しよう!~IAMが苦手な開発者でも簡単に権限を絞れる。そう、AWS ...
Search
みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
February 14, 2024
Technology
3.9k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
IaCでセキュリティを強化しよう!~IAMが苦手な開発者でも簡単に権限を絞れる。そう、AWS CDKならね!~/secjaws32
「Security-JAWS【第32回】」での登壇資料です。
イベントURL:
https://s-jaws.doorkeeper.jp/events/167836
みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
February 14, 2024
More Decks by みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
See All by みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
540
ゴールデンパスは敷いただけでは道にならない ─ 企画部門のエンジニアが技術標準を事業価値に変えるまで
mhrtech
1
290
エンタープライズの厳格な制約を開発者に意識させない:クラウドネイティブ開発基盤設計/cloudnative-kaigi-golden-path
mhrtech
2
830
「強制アップデート」か「チームの自律」か?エンタープライズが辿り着いたプラットフォームのハイブリッド運用/cloudnative-kaigi-hybrid-platform-operations
mhrtech
0
280
全社統制を維持しながら現場負担をどう減らすか〜プラットフォームチームとセキュリティチームで進めたSecurity Hub活用によるAWS統制の見直し〜/secjaws-security-hub-custom-insights
mhrtech
3
890
申請待ちゼロへ!AWS × Entra IDで実現した「権限付与」のセルフサービス化
mhrtech
2
450
NetworkXとGNNで学ぶグラフデータ分析入門〜複雑な関係性を解き明かすPythonの力〜
mhrtech
3
2.8k
AWS CDKでホストゾーン一式を管理しよう!/nw-jaws15
mhrtech
3
980
Fin-JAWS第38回reInvent2024_全金融系セッションをライトにまとめてみた
mhrtech
2
420
Other Decks in Technology
See All in Technology
コンテナ・K8s研修【MIXI 26新卒技術研修】#2
mixi_engineers
PRO
1
180
「顧客の声を聞かなければ何も始まらない」 ── 顧客の声から生まれた『AI返信補助機能』の開発プロセス / AICon2026_shikata_imai
rakus_dev
1
290
事業成長とAI活用を止めないデータ基盤アーキテクチャの設計思想
hiracky16
0
720
キャリアLT会#3
beli68
2
270
伝票作成AIエージェントを支える、LLMOpsとインフラの選択肢 / AICon2026_takeda
rakus_dev
0
300
数値で見る Microsoft MVP 〜Spec Kit と GitHub Copilot Agent で作るデータ可視化ダッシュボード〜
yutakaosada
0
150
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
330
CloudWatchから始めるAWS監視
butadora
0
180
AI時代の開発生産性を捉え直す — 経営と現場をつなぐ「開発組織のオブザーバビリティ」— / AI Dev Ex Conference 2026
tkyowa
1
1.6k
Webアプリ認証の全体像 / The Big Picture of Web App Authentication
kitano_yuichi
1
450
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
840
文字起こし基盤の信頼性
abnoumaru
0
140
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
How STYLIGHT went responsive
nonsquared
100
6.2k
Done Done
chrislema
186
16k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
420
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
A better future with KSS
kneath
240
18k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
The Language of Interfaces
destraynor
162
27k
The Cost Of JavaScript in 2023
addyosmani
55
10k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.7k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
350
Transcript
© 2024 Mizuho Research & Technologies, Ltd. Security-JAWS 第32回 0
技術開発本部 先端技術研究部 IaC でセキュリティを強化しよう! ~ IAMが苦手な開発者でも簡単に権限を絞れる。 そう、AWS CDKならね! ~ 2024年2月14日
© 2024 Mizuho Research & Technologies, Ltd. 1 自己紹介 氏名:松尾
優成(Matsuo Yusei) 所属:先端技術研究部 兼 プロジェクト推進部 役割:社内向けAWS共通プラットフォームの 構築・運用 一言:#secjaws 3回目の登壇機会に感謝!
© 2024 Mizuho Research & Technologies, Ltd. 2 社内向けAWS共通プラットフォームの概要 •
社員が安心してAWS環境を利用できるように セキュアなAWSアカウントを迅速に提供するプラットフォーム • マルチアカウント管理にAWS Control Towerを導入し、開発にAWS CDKを活用 Control Tower テナント AWSアカウント1 提供サービス AWSアカウント管理 クラウドセキュリティ 開発システム テナントAWSアカウント2 テナントAWSアカウント3 マスターアカウント Auditアカウント Log Archiveアカウント ・ ・ ・ 詳細は#secjaws31を Check!
© 2024 Mizuho Research & Technologies, Ltd. 3 話すこと •
セキュリティ観点でAWS CDKの良いところ (タイトルはIAMのみですが、IAM以外にも触れます) • 当社プラットフォームの設定例をコード付きで紹介 話さないこと • IaC の概念 • AWS CDKを利用するための権限設定 (プラットフォーム側でどのように制御するかという話はしません) 吹き出しなどで補足するため コードの詳細を理解する必要はありません
© 2024 Mizuho Research & Technologies, Ltd. 4 こんな悩みありませんか? •
IAMポリシーやS3バケットポリシーを書くのが大変 • CloudFormationでセキュリティ設定を定義しているが • 読みづらい ・・・ • 変更時に抵抗がある・・・
© 2024 Mizuho Research & Technologies, Ltd. 5 こんな悩みありませんか? •
IAMポリシーやS3バケットポリシーを書くのが大変 • CloudFormationでセキュリティ設定を定義しているが • 読みづらい ・・・ • 変更時に抵抗がある・・・ → AWS CDKで解決できます!
© 2024 Mizuho Research & Technologies, Ltd. 6 でもAWS CDKの要員は中々いない・・・なぜ?
• ハードルが高いと思われている? • メリットが十分に伝わっていないかも? → セキュリティ観点でのCDKメリットをお伝えします!
© 2024 Mizuho Research & Technologies, Ltd. 7 AWS CDK
とは…「開発者体験に優れたOSS のIaCツール」 • アプリもインフラも使い慣れたプログラミング言語で構築可 • ベストプラクティスに沿った抽象化されたライブラリ (High-levels Constructs)により少ないコード量で記述可 https://aws.amazon.com/jp/builder s-flash/202309/awsgeek-aws-cdk/
© 2024 Mizuho Research & Technologies, Ltd. 8 AWS CDK
は学習コンテンツが豊富! 初心者にはワークショップ・ BlackBelt シリーズが特にオススメ! https://aws.amazon.com/jp/events /aws-event-resource/archive/ https://aws.amazon.com/jp/builders- flash/202309/awsgeek-aws-cdk/ https://catalog.workshops.aws/typescript-and-cdk- for-beginner/ja-JP https://catalog.us-east- 1.prod.workshops.aws/workshops/101414 11-0192-4021-afa8-2436f3c66bd8/ja-JP
© 2024 Mizuho Research & Technologies, Ltd. 9 IaC 関連の直近アップデートが熱い!
更に IaC の世界へ飛び込みやすくなっています! https://speakerdeck.com/ohmura/managing-existing-environment-with-aws-cfn- iac-generator https://aws.amazon.com/jp/blogs/news/announcing-cdk- migrate-a-single-command-to-migrate-to-the-aws-cdk/ https://aws.amazon.com/jp/blogs/news/import-entire- applications-into-aws-cloudformation/
© 2024 Mizuho Research & Technologies, Ltd. 10 ここからセキュリティ観点での AWS
CDKメリットを4つ紹介! (サンプルコードはTypeScript) ・cdk:v2.103.0 ・jest:v29.7.0
© 2024 Mizuho Research & Technologies, Ltd. 11 セキュリティ観点でのAWS CDKメリット①
「ポリシー関連の設定が抽象化されて簡単!」
© 2024 Mizuho Research & Technologies, Ltd. 12 S3のRead権限についてCFn例(BlackBeltから引用) ⇒
セキュアだが、参照を上下に追っていくのは認知負荷が高い? セキュリティ観点でのAWS CDKメリット①「ポリシーの抽象化」 https://pages.awscloud.com/rs/112-TZM- 766/images/AWS-Black-Belt_2023_AWS- CDK-Basic-1-Overview_0731_v1.pdf 特定のバケットのみに制限 特定のユーザーのみにアタッチ 特定のActionに制限
© 2024 Mizuho Research & Technologies, Ltd. 13 CDKなら同じ内容をたった3行でかける! セキュリティ観点でのAWS
CDKメリット①「ポリシーの抽象化」 https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Basic-1-Overview_0731_v1.pdf Read以外に WriteやReadWriteなど 豊富な権限セットを提供
© 2024 Mizuho Research & Technologies, Ltd. 14 リソースベースポリシーも簡単にかける! セキュリティ観点でのAWS
CDKメリット①「ポリシーの抽象化」 当社事例のCDKコード(アセットを組織内に展開するS3バケット) ポリシー生成 S3バケットポリシー抜粋 grantReadの1行で組織IDに属する全AWSアカウントへ 読み取り権限を付与(約40行のポリシーを生成)
© 2024 Mizuho Research & Technologies, Ltd. 15 SSLを強制するポリシーも1行で! セキュリティ観点でのAWS
CDKメリット①「ポリシーの抽象化」 当社事例のCDKコード(アセットを組織内に展開するS3バケット) ポリシー生成 S3バケットポリシー抜粋 enforeSSLを有効化するだけでSSL以外の リクエストを拒否(約35行のポリシーを生成)
© 2024 Mizuho Research & Technologies, Ltd. 16 S3以外にKMSなどでも簡単に権限付与! •
サンプルでは組織IDに権限付与しているが IAM RoleやLambda関数にも付与可能 (IGrantableに対応するリソースが対象) • 誰がどのリソースに触れるのか分かり易い! 「アクセス先リソース.grantXX(アクセス者)」の形式 セキュリティ観点でのAWS CDKメリット①「ポリシーの抽象化」 当社事例のCDKコード(組織内で使用するCMK) KMSキーポリシー抜粋 ポリシー生成
© 2024 Mizuho Research & Technologies, Ltd. 17 ベストプラクティスに沿って grant
を積極的に使おう! • セキュリティグループやNACLの設定も簡単 • その他に通知やメトリクスなども抽象化されていて、とにかく便利 セキュリティ観点でのAWS CDKメリット①「抽象化」 個別に用意した IAMロール・ ポリシーも適用可!
© 2024 Mizuho Research & Technologies, Ltd. 18 セキュリティ観点でのAWS CDKメリット②
「モジュール化と単体テストで設定ミス抑制」
© 2024 Mizuho Research & Technologies, Ltd. 19 CFnテンプレートで同様なセキュリティ設定が羅列しやすい セキュリティ観点でのAWS
CDKメリット②「モジュール化と単体テスト」 CloudWatchでルートユーザーの使用を検知してSNSへ通知するCFn例 この塊が沢山 あるイメージ ※Fn::ForEach 未使用の前提
© 2024 Mizuho Research & Technologies, Ltd. 20 アラーム毎に対応するメトリクスフィルタとの連携設定が必要 セキュリティ観点でのAWS
CDKメリット②「モジュール化と単体テスト」 正常に通知を機能させるためには MetricName/NameSpaceを揃える CloudWatchでルートユーザーの使用を検知してSNSへ通知するCFn例 アラーム側定義と一致する必要あり
© 2024 Mizuho Research & Technologies, Ltd. 21 アラーム毎に対応するメトリクスフィルタとの連携設定が必要 セキュリティ観点でのAWS
CDKメリット②「モジュール化と単体テスト」 丸々コピペして定義すると、 うっかり修正漏れで通知が うまくいかないことも・・・ CloudWatchでルートユーザーの使用を検知してSNSへ通知するCFn例
© 2024 Mizuho Research & Technologies, Ltd. 22 同様の処理をモジュール化することで保守性向上! AWS
CDKではモジュールとして独自のコンストラクトを作成できる ※本発表では、以後「独自のコンストラクト」を「カスタムConstruct」と呼びます セキュリティ観点でのAWS CDKメリット②「モジュール化と単体テスト」 https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/constructs.html#constructs_author
© 2024 Mizuho Research & Technologies, Ltd. 23 アラーム/メトリクスフィルタをカスタムConstruct化する セキュリティ観点でのAWS
CDKメリット②「モジュール化と単体テスト」 カスタムConstructのリソース定義抜粋 当社事例のCDKコード(カスタムConstruct概要) MetricName/NameSpaceが 一致するようにモジュール化 呼び出し元から渡された値を リソース定義に使用
© 2024 Mizuho Research & Technologies, Ltd. 24 単体テストでカスタムConstructのロジックを確認! セキュリティ観点でのAWS
CDKメリット②「モジュール化と単体テスト」 当社事例のCDKコード(カスタムConstructの単体テスト抜粋) メトリクスフィルタとアラームで MetricName/NameSpaceが 一致していることを確認
© 2024 Mizuho Research & Technologies, Ltd. 25 単体テストでカスタムConstructのロジックを確認! セキュリティ観点でのAWS
CDKメリット②「モジュール化と単体テスト」 単体テストにより変更容易性も高まる! テスト実行結果(npm test) 当社事例のCDKコード(カスタムConstructの単体テスト抜粋)
© 2024 Mizuho Research & Technologies, Ltd. 26 テスト済のカスタムConstructなら、繰り返し処理が安全! セキュリティ観点でのAWS
CDKメリット②「モジュール化と単体テスト」 当社事例のCDKコード(スタック定義) カスタムConstructを呼び出し (アラーム・メトリクスフィルタを作成) メトリクスパターンの定義数に 応じてループ処理 メトリクスパターンの定義
© 2024 Mizuho Research & Technologies, Ltd. 27 セキュリティ観点でのAWS CDKメリット③
「CloudFormationサポート外リソースを カスタムリソースで簡単かつセキュアに設定」
© 2024 Mizuho Research & Technologies, Ltd. 28 実務ではCFnサポート外のリソース操作に度々遭遇 【CFnサポート外の操作例】
1. GuardDutyのS3エクスポート設定 2. Configルールのタグづけ 3. Securiry Hub 標準コントロールの無効化(※2023年6月に対応済) 4. Service Catalog ポートフォリオの IAM Principal 関連付け これらは手動設定になりがちだが何度も設定するものはIaCにしたい 一方、CFn カスタムリソースはLambdaが必要でハードルが高そう… セキュリティ観点でのAWS CDKメリット③「カスタムリソース」
© 2024 Mizuho Research & Technologies, Ltd. 29 AWS CDKでは、カスタムリソースを簡単に記述可能!
セキュリティ観点でのAWS CDKメリット③「カスタムリソース」 https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-CDK-Basic-3-AppDev_0831_v1.pdf
© 2024 Mizuho Research & Technologies, Ltd. 30 カスタムリソース上のAPIに応じたポリシーを簡単に作成! セキュリティ観点でのAWS
CDKメリット③「カスタムリソース」 当社事例のCDKコード (Service Catalog ポートフォリオの IAM Principal 関連付け) カスタムリソース(Lambda関数)のポリシー抜粋 ポリシー 生成
© 2024 Mizuho Research & Technologies, Ltd. 31 リソースの細かい指定もでき、最小権限にしやすい! ※個別に用意したIAMロール・ポリシーも使用可能
セキュリティ観点でのAWS CDKメリット③「カスタムリソース」 当社事例のCDKコード (Service Catalog ポートフォリオの IAM Principal 関連付け) https://docs.aws.amazon.com/cdk/api/v2/docs/aws- cdk-lib.custom_resources.SdkCallsPolicyOptions.html
© 2024 Mizuho Research & Technologies, Ltd. 32 セキュリティ観点でのAWS CDKメリット④
「 cdk-nag でセキュリティのシフトレフト」
© 2024 Mizuho Research & Technologies, Ltd. 33 Policy Validation:「cdk-nag」とは
• セキュリティ・コンプライアンスチェックツール • デプロイ前に違反リソースがあれば、デプロイを強制停止 • 簡単に導入でき、独自ルールの作成などカスタマイズも可能 セキュリティ観点でのAWS CDKメリット④「cdk-nag」 設計 実装 ビルド (cdk synth) デプロイ (cdk deploy) システム テスト cdk-nag UTやビルドで 検査できる
© 2024 Mizuho Research & Technologies, Ltd. 34 様々なルールやそれらをまとめたマネージドのパックあり セキュリティ観点でのAWS
CDKメリット④「cdk-nag」 当社では自社ポリシーに合わせて 独自のルールパックを使用 https://github.com/cdklabs/cdk-nag マネージドのルールパック S3のルール例
© 2024 Mizuho Research & Technologies, Ltd. 35 単体テストで cdk-nag
を使うと早期に違反を検知できる! セキュリティ観点でのAWS CDKメリット④「cdk-nag」 cdk-nag 単体テスト実行例 サーバーアクセスログが無効化、SSLが強制されていない旨を指摘 (近年、S3のサービスアップデートによりデフォルトでの指摘が減少している) デフォルト設定のS3バケット
© 2024 Mizuho Research & Technologies, Ltd. 36 cdk-nag の単体テスト
Tips は以下記事をご参照! セキュリティ観点でのAWS CDKメリット④「cdk-nag」 https://qiita.com/y_matsuo_/items/6ef17964ff3c557f6d1e
© 2024 Mizuho Research & Technologies, Ltd. 37 セキュリティ観点でのAWS CDKメリットになり得るかも?
「integ-tests でアクセステストの自動化」
© 2024 Mizuho Research & Technologies, Ltd. 38 AWS CDK
integ-tests とは • 実環境に一時的なリソースをデプロイして統合テストを行う • HTTPやAWS API、Lambda実行などで期待通りの挙動か確認 セキュリティ観点でのAWS CDKメリットになり得るかも?「integ-tests」 https://aws.amazon.com/jp/blogs/news/how-to-write-and- execute-integration-tests-for-aws-cdk-applications/ CDKからAWS APIで テスト用の値を投入 CDKからAWS APIで DBの期待値チェック ※α版なので、破壊的変更が入る可能性あり
© 2024 Mizuho Research & Technologies, Ltd. 39 integ-testsを使えば、データ境界のような複雑な環境で 正常系/異常系のアクセステストを自動化できる?
セキュリティ観点でのAWS CDKメリットになり得るかも?「integ-tests」 データ境界の当社例(#secjaws23 を参照) VPC S3 bucket VPCe Lambda Identity Policy Resource Policy Network Policy CDK integ-tests SDK ① VPC内Lambdaを実行 ② AWS API Callを実行 PUT GET AWS account (正常系) VPC内からは アクセス可 (異常系) VPC外からは アクセス不可 複数のポリシーが 正しく機能しているか 実環境で知りたい…!
© 2024 Mizuho Research & Technologies, Ltd. AWS account 40
データ境界における integ-tests の検証結果 • テスト実行時間が約25分(早い時は7~9分程度だが、バラつきあり) • コードレスなAWS APIのメソッドでは正常アクセスのみ確認可 (Access Deniedを確認したい場合は、Lambda関数が必要) セキュリティ観点でのAWS CDKメリットになり得るかも?「integ-tests」 VPC S3 bucket VPCe Lambda SDK ① VPC内Lambdaを実行 ② AWS API Call Lambdaを実行 PUT GET アクセス不可を確認するには Lambda関数のコードで エラーハンドリングが必要 Lambda CDK integ-tests
© 2024 Mizuho Research & Technologies, Ltd. 41 データ境界のアクセステストにおける integ-tests
の所感 • integ-tests ではアクセステストに限定せず、データ入出力に 着目した正常処理の一環で権限確認するのがよさそう →パイプラインがあるなら無理して integ-tests を導入しなくてもよいかも? (パイプライン上でもテストできる) • 各種ポリシーが固まっていない状況なら 通常通りスタックをデプロイして手動テストする方が早そう セキュリティ観点でのAWS CDKメリットになり得るかも?「integ-tests」
© 2024 Mizuho Research & Technologies, Ltd. 42 まとめ •
セキュリティ観点でのAWS CDKメリットは以下 1. ポリシー関連の設定が抽象化されて簡単 2. モジュール化と単体テストで設定ミス抑制 3. CFnサポート外操作をカスタムリソースで簡単かつセキュアに設定 4. cdk-nag でセキュリティのシフトレフト • 制限の厳しい環境で integ-tests を使用する場合、 正常処理の一環で権限確認する方がよさそう • AWS CDKは便利!ぜひ使ってみよう!
43