Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Azure Container AppsのSecret管理とIaC
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
sugar-cat
February 26, 2024
410
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Azure Container AppsのSecret管理とIaC
sugar-cat
February 26, 2024
More Decks by sugar-cat
See All by sugar-cat
HonoとOpenTelemetryで実現するオブザーバービリティ構築
sugarcat7
0
610
ErrorTrackingとOrchestrion
sugarcat7
0
450
DiscordとCloudflare
sugarcat7
2
1.4k
Cloudflare Workflowsを使いたい倒したい
sugarcat7
8
2.8k
tslogで実現するセキュアなメタデータ管理とロギング
sugarcat7
4
1.7k
最近個人開発が熱い ~モニタリング強化編v0.1.0~
sugarcat7
3
530
Honoで実現するバックエンド開発のイマ
sugarcat7
23
6.5k
GoとWASI~超入門~
sugarcat7
2
330
最近個人開発が熱い ~多言語対応編~
sugarcat7
2
490
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
620
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
540
Tell your own story through comics
letsgokoyo
1
1.1k
HDC tutorial
michielstock
2
930
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The Pragmatic Product Professional
lauravandoore
37
7.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Navigating Weather and Climate Data
rabernat
0
540
Transcript
Azure Container Appsの Secret管理とIaC 2024/2/26 color is【クラウドLT大会vol.7】フリーテーマ! @sugar235711
2 Sugar(@sugar235711) 所属: Cyber Agent/AIShift バックエンドエンジニア 普段はGoを書いています。 最近Azureに入門しました。(歴3ヶ月) 登壇者紹介
3 Agenda 1. Azure Container Appsについて 2. Azure Container AppsとTerraform
2.1. Terraform & Azure 2.2. AzureRMとAzureContainer Apps 2.3. Container AppsでのSecret周りの対応状況 3. Azure Container AppsでのSecret管理パターン 3.1. AzAPIの利用 3.2. Dapr Componentの利用 3.3. 諦めてKey Vaultの対応を待つ 4. まとめ
4 Agenda 1. Azure Container Appsについて 2. Azure Container AppsとTerraform
2.1. Terraform & Azure 2.2. AzureRMとAzureContainer Apps 2.3. Container AppsでのSecret周りの対応状況 3. Azure Container AppsでのSecret管理パターン 3.1. AzAPIの利用 3.2. Dapr Componentの利用 3.3. 諦めてKey Vaultの対応を待つ 4. まとめ
5 フルマネージドサーバーレスコンテナサービス(2022/5~) Kubernetesを基盤に、Envoy、KEDA、DaprといったOSSが利用できる 1. Azure Container Appsについて https://learn.microsoft.com/en-us/azure/container-apps/microservices-dapr?tabs=bash%2Cazure-cli
6 Agenda 1. Azure Container Appsについて 2. Azure Container AppsとTerraform
2.1. Terraform & Azure 2.2. AzureRMとAzureContainer Apps 2.3. Container AppsでのSecret周りの対応状況 3. Azure Container AppsでのSecret管理パターン 3.1. AzAPIの利用 3.2. Dapr Componentの利用 3.3. 諦めてKey Vaultの対応を待つ 4. まとめ
7 Azure用に提供されているProviderは主に5つ。 リソースの管理には基本的にはAzureRMを使用する。 • AzureRM: 仮想マシン、ストレージ アカウント等の管理 • AzureAD: グループ、ユーザー、サービスプリンシパルを管理
• AzureStack: 仮想マシン、DNS等Stack Hub 上のリソースを管理 • AzAPI: Azure Resource Manegerを使用し、直接リソースを管理 • AzureDevops: エージェント、リポジトリ等のリソースの管理 2.1. Terraform & Azure 2. Azure Container AppsとTerraform
8 Azure用に提供されているProviderは主に5つ。 リソースの管理には基本的にはAzureRMを使用する。 • AzureRM: 仮想マシン、ストレージ アカウント等の管理 • AzureAD: グループ、ユーザー、サービスプリンシパルを管理
• AzureStack: 仮想マシン、DNS等Stack Hub 上のリソースを管理 • AzAPI: Azure Resource Manegerを使用し、直接リソースを管理 • AzureDevops: エージェント、リポジトリ等のリソースの管理 →できればHashiCorp公式のProviderだけで構築できると楽。 2.1. Terraform & Azure 2. Azure Container AppsとTerraform HashiCorp産 Azure産
9 AzureRMを使用し、ContainerAppsを作成 2.2. AzureRMとAzureContainer Apps 2. Azure Container AppsとTerraform Terraform
AzureRM Provider Azure Resource Manager API Create Container Apps
10 アプリケーションの開発が進むと、コンテナ内で何かしらの環境変数を使いた い場面が出てくる • Environment variables直入れ • Secrets経由 ◦ Container
Apps Secret ◦ Key Vault reference 2.3. Container AppsでのSecrets周りの対応状況 2. Azure Container AppsとTerraform
11 アプリケーションの開発が進むと、コンテナ内で何かしらの環境変数を使いた い場面が出てくる • Environment variables直入れ • Secrets経由 ◦ Container
Apps Secret ◦ Key Vault reference →Azure Portal経由で全て設定可能 2.3. Container AppsでのSecrets周りの対応状況 2. Azure Container AppsとTerraform 外に出るとまずい秘匿情報 (DBの接続文字列 / 外部APIのAPI Key等) 秘匿情報でなければOK!(Log Level等)
12 AzureRMの場合は、Secret Blockに書いてあげればOK 2.3. Container AppsでのSecrets周りの対応状況 2. Azure Container AppsとTerraform
13 AzureRMの場合は、Secret Blockに書いてあげればOK 2.3. Container AppsでのSecrets周りの対応状況 2. Azure Container AppsとTerraform
14 AzureRMの場合は、Secret Blockに書いてあげればOK 2.3. Container AppsでのSecrets周りの対応状況 2. Azure Container AppsとTerraform
Stateに残りませんか? AzureRMの場合は、Secret Blockに書いてあげればOKではない
15 Variables(sensitive)にしたところで、Secretの中身は平文で丸見え (Key VaultのData Sourceから読んだとしても同様) 2.3. Container AppsでのSecrets周りの対応状況 2. Azure
Container AppsとTerraform
16 2.3. Container AppsでのSecrets周りの対応状況 2. Azure Container AppsとTerraform KeyVault referenceなら大丈夫?
• Environment variables直入れ • Secrets経由 ◦ Container Apps Secret ◦ Key Vault reference →Azure Portal経由で全て設定可能 外に出るとまずい秘匿情報 (DBの接続文字列 / 外部APIのAPI Key等) 秘匿情報でなければOK!(Log Level等)
17 2.3. Container AppsでのSecrets周りの対応状況 2. Azure Container AppsとTerraform 2024年2月26日現在Provider側(AzureRM)の開発が追いついていない https://github.com/hashicorp/terraform-provider-azurerm/issues/21739
Potential Terraform Configuration
18 Agenda 1. Azure Container Appsについて 2. Azure Container AppsとTerraform
2.1. Terraform & Azure 2.2. AzureRMとAzureContainer Apps 2.3. Container AppsでのSecret周りの対応状況 3. Azure Container AppsでのSecret管理パターン 3.1. AzAPIの利用 3.2. Dapr Componentの利用 3.3. 諦めてKey Vaultの対応を待つ 4. まとめ
19 3.1. AzAPIの利用 3. Azure Container AppsでのSecret管理パターン AzureのResource Managar上にはAPIが存在しているはずなので、 AzAPI経由なら使えるはず。
https://github.com/hashicorp/terraform-provider-azurerm/issues/21739#issuecomment-1716928249 →循環参照になったり結局全体をAzAPIで作り直したというコメントが怖い
20 3.2. Dapr Componentの利用 3. Azure Container AppsでのSecret管理パターン Daprのサイドカーを利用してKey Vaultからシークレットを取得する
→そもそもContainer AppsのSecretに登録しない →Container Apps内からサイドカーのURLにアクセスしてKey Vault内のSecretを読み利用す る(アプリケーションがAzureに依存して問題ならこの方法が楽かもしれない ?)
21 3.3. 諦めてKey Vaultの対応を待つ 3. Azure Container AppsでのSecret管理パターン ベストプラクティスからは外れてしまうが、一時凌ぎで対応をする ①Apply後でSecretの中身を書き換える
• Apply後にSecretを書き換える(Azure Function等でトリガーすると運用が楽かも) ②運用ルールを定める • 手動作業のためローカルにState Pullして、そのまま何かの弾みで流出が怖い ◦ チームで必ずTerrafrom経由のみでリソース操作を行う合意をする • Remote Stateへに対するアクセス権限を絞る
22 Agenda 1. Azure Container Appsについて 2. Azure Container AppsとTerraform
2.1. Terraform & Azure 2.2. AzureRMとAzureContainer Apps 2.3. Container AppsでのSecret周りの対応状況 3. Azure Container AppsでのSecret管理パターン 3.1. AzAPIの利用 3.2. Dapr Componentの利用 3.3. 諦めてKey Vaultの対応を待つ 4. まとめ
23 4. まとめ • Azure Container AppsをTerraformで管理しようとするとSecretの管 理が悩ましい 参考文献 •
セキュアなTerraformの使い方 ~ 機密情報をコードに含めず環境構築するにはどう したらいいの? • 俺とAzureとTerraform ~2024新春バージョン~ • Azure Container Apps のドキュメント • Azure Container AppsとDapr -Secrets API対応とManaged IDサポートについ て-