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
670
自動化で、マネージド 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.3k
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
1.5k
キャリア教育ミニ講演会 - システムエンジニア編
tetsuyaooooo
0
2.2k
私のMCP試験の挑み方
tetsuyaooooo
0
62
ETロボコン2020 競技会場システムのおはなし
tetsuyaooooo
0
31
Microsoft MVP を受賞するために取り組んだこと
tetsuyaooooo
0
82
毎年恒例イベントを Azure Media Services を使ってオンラインで
tetsuyaooooo
0
68
Azure Internet Analyzer (Preview) を試してみる
tetsuyaooooo
0
57
Other Decks in Technology
See All in Technology
【Ubie】AIを活用した広告アセット「爆速」生成事例 | AI_Ops_Community_Vol.2
yoshiki_0316
1
120
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
450
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
170
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
390
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
170
配列に見る bash と zsh の違い
kazzpapa3
3
170
Greatest Disaster Hits in Web Performance
guaca
0
300
22nd ACRi Webinar - 1Finity Tamura-san's slide
nao_sumikawa
0
110
20260204_Midosuji_Tech
takuyay0ne
1
160
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
230
Cloud Runでコロプラが挑む 生成AI×ゲーム『神魔狩りのツクヨミ』の裏側
colopl
0
150
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
5
550
Featured
See All Featured
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
58
50k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Why Our Code Smells
bkeepers
PRO
340
58k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
First, design no harm
axbom
PRO
2
1.1k
Practical Orchestrator
shlominoach
191
11k
Navigating Weather and Climate Data
rabernat
0
110
Scaling GitHub
holman
464
140k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
120
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 リトライで回避すること
ご清聴ありがとう ございました