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.7k
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でデータリストアの運用、どのように設計する?~Aurora・EFSの実践事例を紹介~/aws-cdk-data-restore-aurora-efs
mhrtech
6
1.1k
Azure Verified Moduleを触って分かった注目ポイント/azure-verified-module-begin
mhrtech
1
850
BLEA v3.0.0の新しいベストプラクティスを取り入れた効率的なAWS CDK開発/jawsug_cdk16
mhrtech
3
600
あなたのアプリケーションをレガシーコードにしないための実践Pytest入門/pyconjp2024_pytest
mhrtech
6
2.5k
静的サイトのCI/CDでも侮るなかれ!Docs as Codeに沿ったセキュアな開発プロセスの実践/secure-docsascode-cicd-for-static-sites
mhrtech
12
2.8k
Kubernetes でワークフローを組むなら cdk8s-argoworkflow がよさそう!/ cdk8s-argoworkflow is great!
mhrtech
3
1.2k
AWS Control Towerを2年弱運用して得たエッセンスと展望/securityjaws31
mhrtech
1
1.8k
そのリファレンス誰のため?ユーザ活用に向き合う/finjaws31
mhrtech
0
630
AWS CDKにテストは必要?試行錯誤したスクラム開発事例を紹介!/CdkConJp2023
mhrtech
5
6.1k
Other Decks in Technology
See All in Technology
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
Taming you application's environments
salaboy
0
190
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
380
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.6k
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
400
Lambdaと地方とコミュニティ
miu_crescent
2
370
SSMRunbook作成の勘所_20241120
koichiotomo
2
130
Can We Measure Developer Productivity?
ewolff
1
150
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
120
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
170
OTelCol_TailSampling_and_SpanMetrics
gumamon
1
120
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
95
5.2k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Adopting Sorbet at Scale
ufuk
73
9.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Navigating Team Friction
lara
183
14k
Designing the Hi-DPI Web
ddemaree
280
34k
A Tale of Four Properties
chriscoyier
156
23k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Bash Introduction
62gerente
608
210k
KATA
mclloyd
29
14k
Code Review Best Practice
trishagee
64
17k
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