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
5
2.9k
IaCでセキュリティを強化しよう!~IAMが苦手な開発者でも簡単に権限を絞れる。そう、AWS CDKならね!~/secjaws32
「Security-JAWS【第32回】」での登壇資料です。
イベントURL:
https://s-jaws.doorkeeper.jp/events/167836
みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
February 14, 2024
Tweet
Share
More Decks by みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
See All by みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
AWS CDKでホストゾーン一式を管理しよう!/nw-jaws15
mhrtech
2
81
Fin-JAWS第38回reInvent2024_全金融系セッションをライトにまとめてみた
mhrtech
1
170
AWS CDKでデータリストアの運用、どのように設計する?~Aurora・EFSの実践事例を紹介~/aws-cdk-data-restore-aurora-efs
mhrtech
6
1.7k
Azure Verified Moduleを触って分かった注目ポイント/azure-verified-module-begin
mhrtech
1
1.5k
BLEA v3.0.0の新しいベストプラクティスを取り入れた効率的なAWS CDK開発/jawsug_cdk16
mhrtech
3
770
あなたのアプリケーションをレガシーコードにしないための実践Pytest入門/pyconjp2024_pytest
mhrtech
7
3.6k
静的サイトのCI/CDでも侮るなかれ!Docs as Codeに沿ったセキュアな開発プロセスの実践/secure-docsascode-cicd-for-static-sites
mhrtech
14
3.2k
Kubernetes でワークフローを組むなら cdk8s-argoworkflow がよさそう!/ cdk8s-argoworkflow is great!
mhrtech
3
1.6k
AWS Control Towerを2年弱運用して得たエッセンスと展望/securityjaws31
mhrtech
1
2.2k
Other Decks in Technology
See All in Technology
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
400
エンジニアの育成を支える爆速フィードバック文化
sansantech
PRO
3
1.1k
レビューを増やしつつ 高評価維持するテクニック
tsuzuki817
1
690
「海外登壇」という 選択肢を与えるために 〜Gophers EX
logica0419
0
700
SA Night #2 FinatextのSA思想/SA Night #2 Finatext session
satoshiimai
1
140
RSNA2024振り返り
nanachi
0
570
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
140
2025-02-21 ゆるSRE勉強会 Enhancing SRE Using AI
yoshiiryo1
1
270
OpenID Connect for Identity Assurance の概要と翻訳版のご紹介 / 20250219-BizDay17-OIDC4IDA-Intro
oidfj
0
270
ハッキングの世界に迫る~攻撃者の思考で考えるセキュリティ~
nomizone
13
5.2k
一度 Expo の採用を断念したけど、 再度 Expo の導入を検討している話
ichiki1023
1
160
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
24
7k
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
4 Signs Your Business is Dying
shpigford
182
22k
Writing Fast Ruby
sferik
628
61k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Six Lessons from altMBA
skipperchong
27
3.6k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Documentation Writing (for coders)
carmenintech
67
4.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
46
2.3k
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