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.6k
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 みずほリサーチ&テクノロジーズ株式会社 先端技術研究部
Azure Verified Moduleを触って分かった注目ポイント/azure-verified-module-begin
mhrtech
1
720
BLEA v3.0.0の新しいベストプラクティスを取り入れた効率的なAWS CDK開発/jawsug_cdk16
mhrtech
3
510
あなたのアプリケーションをレガシーコードにしないための実践Pytest入門/pyconjp2024_pytest
mhrtech
6
2k
静的サイトのCI/CDでも侮るなかれ!Docs as Codeに沿ったセキュアな開発プロセスの実践/secure-docsascode-cicd-for-static-sites
mhrtech
11
2.6k
Kubernetes でワークフローを組むなら cdk8s-argoworkflow がよさそう!/ cdk8s-argoworkflow is great!
mhrtech
3
1.2k
AWS Control Towerを2年弱運用して得たエッセンスと展望/securityjaws31
mhrtech
1
1.7k
そのリファレンス誰のため?ユーザ活用に向き合う/finjaws31
mhrtech
0
620
AWS CDKにテストは必要?試行錯誤したスクラム開発事例を紹介!/CdkConJp2023
mhrtech
5
6k
Pandas卒業?大規模データを様々なパッケージで高速処理してみる/pyconjp2022-hpc
mhrtech
10
12k
Other Decks in Technology
See All in Technology
サイロ化した金融システムを、packwerk を利用して無事故でリファクタリングした話
coincheck_recruit
3
3.2k
来年もre:Invent2024 に行きたいあなたへ - “集中”と“つながり”で楽しむ -
ny7760
0
110
2024-10-30-reInventStandby_StudyGroup_Intro
shinichirokawano
1
230
[PyCon Korea 2024] Lightning Talk: PyPI패키지를 의심하세요
studioego
PRO
0
130
なんで、私がAWS Heroに!? 〜社外の広い世界に一歩踏み出そう〜
minorun365
PRO
1
540
最速最小からはじめるデータプロダクト / Data Product MVP
amaotone
1
370
入門『状態』#kaigionrails / "state" for beginners with Rails
shinkufencer
2
810
サーバーサイドのデータプレーンプログラミング 〜 NVIDIA Blue Field / DOCA 〜
ebiken
PRO
1
230
Mobbing Practices
kawaguti
PRO
3
340
で、ValhallaのValue Classってどうなったの?
skrb
1
560
初心者に Vue.js を 教えるには
tsukuha
3
210
Amazon FSx for NetApp ONTAPを利用するにあたっての要件整理と設計のポイント
non97
1
130
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
A Philosophy of Restraint
colly
203
16k
Embracing the Ebb and Flow
colly
84
4.4k
For a Future-Friendly Web
brad_frost
174
9.4k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Building an army of robots
kneath
302
42k
Designing for Performance
lara
604
68k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
225
22k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Side Projects
sachag
452
42k
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