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
自動化で、マネージド ID と Connect-AzAccount と azcopy logi...
Search
Tetsuya Odashima
May 20, 2023
Technology
0
590
自動化で、マネージド ID と Connect-AzAccount と azcopy login を使用する際に気をつけること
2023/05/13 Global Azure 2023 (
https://jazug.connpass.com/event/279068/
) LT 大会でお話ししたスライドです
Tetsuya Odashima
May 20, 2023
Tweet
Share
More Decks by Tetsuya Odashima
See All by Tetsuya Odashima
お仕事図鑑pitchトーク
tetsuyaooooo
0
2.4k
軽いノリで"自動化"に取り組んではいけないという話
tetsuyaooooo
1
1.2k
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
1.4k
キャリア教育ミニ講演会 - システムエンジニア編
tetsuyaooooo
0
2.2k
私のMCP試験の挑み方
tetsuyaooooo
0
54
ETロボコン2020 競技会場システムのおはなし
tetsuyaooooo
0
26
Microsoft MVP を受賞するために取り組んだこと
tetsuyaooooo
0
66
毎年恒例イベントを Azure Media Services を使ってオンラインで
tetsuyaooooo
0
65
Azure Internet Analyzer (Preview) を試してみる
tetsuyaooooo
0
53
Other Decks in Technology
See All in Technology
ビジネス文書に特化した基盤モデル開発 / SaaSxML_Session_2
sansan_randd
0
180
帳票構造化タスクにおけるLLMファインチューニングの性能評価
yosukeyoshida
1
200
東京海上日動におけるセキュアな開発プロセスの取り組み
miyabit
0
210
完璧を目指さない小さく始める信頼性向上
kakehashi
PRO
0
130
Jitera Company Deck / JP
jitera
0
310
経験がないことを言い訳にしない、 AI時代の他領域への染み出し方
parayama0625
0
280
2025-07-25 NOT A HOTEL TECH TALK ━ スマートホーム開発の最前線 ━ SOFTWARE
wakinchan
0
180
経理出身PdMがAIプロダクト開発を_ハンズオンで学んだ話.pdf
shunsukenarita
1
260
Gemini in Android Studio - Google I/O Bangkok '25
akexorcist
0
100
隙間時間で爆速開発! Claude Code × Vibe Coding で作るマニュアル自動生成サービス
akitomonam
2
240
クマ×共生 HACKATHON - 熊対策を『特別な行動」から「生活の一部」に -
pharaohkj
0
260
P2P ではじめる WebRTC のつまづきどころ
tnoho
1
280
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Rails Girls Zürich Keynote
gr2m
95
14k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Writing Fast Ruby
sferik
628
62k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Making Projects Easy
brettharned
117
6.3k
Become a Pro
speakerdeck
PRO
29
5.4k
Raft: Consensus for Rubyists
vanstee
140
7k
Git: the NoSQL Database
bkeepers
PRO
431
65k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
GraphQLとの向き合い方2022年版
quramy
49
14k
Transcript
自動化で、マネージド ID と Connect-AzAccount と azcopy login を使用する際に気をつけること 2023/05/13 Tetsuya
Odashima GlobalAzure 2023 1
自己紹介 2 ◼ 小田島 哲也 (おだしま てつや) • @TetsuyaOoooo ◼
パーソルプロセス&テクノロジー株式会社 所属 ◼ Microsoft MVP for Microsoft Azure (2018-) ◼ コミュニティ活動 • ET ロボコン (etrobo.jp) 実行委員会 • Qiita (qiita.com/tetsuya-ooooo) 投稿 、勉強会登壇、など ◼ 最近の趣味 • バイク イジる > 乗る ※リターンライダー
お話しすること 3 ◼ 使用条件 • ひとつの VM 上で • 同一ユーザーで
• マネージド ID を使って Azure リソースを操作する PowerShell スクリプトを同時 に複数実行 ◼ お話しすること • Connect-AzAccount で 気をつけること • azcopy login で 気をつけること IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Connect-AzAccount -Identity -AccountId $clientId Set-AzContext -Subscription $subscriptionId # これ以降に実処理 … Virtual Machine Azure AD User Assigned Managed ID azcopy login --identity --identity-client-id $clientId # これ以降に実処理 …
Connect-AzAccount で気をつけること① 4 ◼ 使用条件 • ひとつの VM 上で •
同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 ユーザープロファイル配下に、 Azure コンテキストを保存 (共有) される ここで問題発生! IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID ユーザー プロファイル Azureコンテキスト (ログイン情報や サブスクリプション) Connect-AzAccount -Identity -AccountId $clientId Set-AzContext -Subscription $subscriptionId # これ以降に実処理 … Connect-AzAccount (Az.Accounts) | Microsoft Learn
Connect-AzAccount で気をつけること① 5 ◼ 使用条件 • ひとつの VM 上で •
同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 既定では、Azure コンテキストは、 PowerShell セッション間で使用 (共有) するため、自動的に保存 される →後続処理でエラー発生! するおそれがある IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID ユーザー プロファイル Azureコンテキスト (ログイン情報や サブスクリプション) 競合 Connect-AzAccount -Identity -AccountId $clientId Set-AzContext -Subscription $subscriptionId # これ以降に実処理 … Azure コンテキストとサインイン資格情報 | Microsoft Learn
Connect-AzAccount で気をつけること①→イケてない回避 6 ◼ 使用条件 • ひとつの VM 上で •
同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 ユーザーを分けて、 PowerShell スクリプトを実行する? 結果、Azure コンテキストの競合は 回避 →回避策ではあるが、 恒久対応とは言い難い…😒 IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID Connect-AzAccount -Identity -AccountId $clientId Set-AzContext -Subscription $subscriptionId # これ以降に実処理 …
Connect-AzAccount で気をつけること①→スコープを定めろ 7 ◼ 使用条件 • ひとつの VM 上で •
同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 Scope パラメーターで「Process」 を指定することで、 Azure コンテキストは ✓ 現在のセッションでのみ有効 ✓ 自動的に保存されない ※既存の Azure コンテキストがクリアされる わけではない IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID ユーザー プロファイル Azureコンテキスト (ログイン情報や サブスクリプション) Connect-AzAccount -Scope Process -Identity -AccountId $clientId Set-AzContext -Scope Process -Subscription $subscriptionId # これ以降に実処理 … Azure コンテキストとサインイン資格情報 > PowerShell セッション間での Azure コンテキストの保存 | Microsoft Learn
Connect-AzAccount で気をつけること② 8 ◼ 使用条件 • ひとつの VM 上で •
同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 PowerShell スクリプトを 同時に大量に実行 →ここで問題発生! するおそれがある IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID PS1 … Connect-AzAccount -Scope Process -Identity -AccountId $clientId Set-AzContext -Scope Process -Subscription $subscriptionId # これ以降に実処理 …
Connect-AzAccount で気をつけること② 9 ◼ 使用条件 • ひとつの VM 上で •
同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 IMDS への要求は、VM ごとに制限が ある ✓ 1 秒あたり 20 個の要求まで ✓ 同時に 5 個の要求まで IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID PS1 … 制限 Connect-AzAccount -Scope Process -Identity -AccountId $clientId Set-AzContext -Scope Process -Subscription $subscriptionId # これ以降に実処理 … Azure リソースのマネージド ID: よく寄せられる質問 - Microsoft Entra | Microsoft Learn
Connect-AzAccount で気をつけること②→回避せよ (要求減らす) 10 ◼ 使用条件 • ひとつの VM 上で
• 同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 同時実行する PowerShell スクリプト 個数 (IMDS への要求) を減らす? →ん…😒 IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID Connect-AzAccount -Scope Process -Identity -AccountId $clientId Set-AzContext -Scope Process -Subscription $subscriptionId # これ以降に実処理 …
Connect-AzAccount で気をつけること②→回避せよ (リトライ) 11 ◼ 使用条件 • ひとつの VM 上で
• 同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 Connect-AzAccount では IMDS の スロットリングを検知して、 リトライする仕組みが実装 しかし、このリトライの回数を 超えてエラーになる可能性もある → (必要に応じて) リトライを実装 IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID PS1 … $isSuccessed = $false do { try { Connect-AzAccount -Scope Process -Identity -AccountId $clientId $isSuccessed = $true } catch { # リトライするための処理 } } while (!$isSuccessed -and …) # ループの続行条件 Set-AzContext -Scope Process -Subscription $subscriptionId # これ以降に実処理 …
参考:再試行のガイダンス 12 仮想マシン上でマネージド ID を使用してアクセス トークンを取得する - Microsoft Entra |
Microsoft Learn
azcopy login で気をつけること 13 ◼ 使用条件 • ひとつの VM 上で
• 同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 ユーザープロファイル配下に、 ログイン情報を保存する ここで問題発生! IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID ユーザー プロファイル ログイン情報 azcopy login --identity --identity-client-id $clientId # これ以降に実処理 … azcopy login | Microsoft Learn
azcopy login で気をつけること 14 ◼ 使用条件 • ひとつの VM 上で
• 同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 キャッシュされたログイン情報は、 PowerShell セッション間で共有でき てしまう →後続処理でエラー発生! するおそれがある IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID ユーザー プロファイル ログイン情報 競合 azcopy login --identity --identity-client-id $clientId # これ以降に実処理 …
azcopy login で気をつけること→使うな 15 ◼ 使用条件 • ひとつの VM 上で
• 同一ユーザーで • マネージド ID を使って Azure リソースを操作 する PowerShell スクリプトを同時に複数実行 残念ながら azcopy login では困難… Connect-AzAccount -Scope Process で Azure に接続し、 azcopy copy などを行う場合は ✓ SAS トークンを取得 ✓ SAS URI を生成 IMDS PS1 RBAC PS1 PS1 PS1 PS1 作成 割り当て アクセストークン&操作 Virtual Machine Azure AD User Assigned Managed ID ユーザー プロファイル Azureコンテキスト (ログイン情報や サブスクリプション) Connect-AzAccount -Scope Process -Identity -AccountId $clientId Set-AzContext -Scope Process -Subscription $subscriptionId $srcSASToken = New-AzStorageContainerSASToken … $destSASToken = New-AzStorageContainerSASToken … azcopy copy “$srcURI$srcSASToken” “$destURI$destSASToken”
まとめ 16 自動化でマネージド ID を使って Azure リソースを操作する際は ◼ Connect-AzAccount や
azcopy login はログイン情報をキャッシュ する • Azure コンテキスト (ログイン情報) のスコープを現在のプロセスでのみ有効にする こと • Connect-AzAccount -Scope Process … • Set-AzContext -Scope Process … • 自動化での azcopy login の使用は避けること ◼ IMDS への要求には VM ごとに制限がある • 制限 • 1 秒あたり 20 個の要求まで • 同時に 5 個の要求まで • 同時に行う要求を減らす or リトライで回避すること
ご清聴ありがとう ございました