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
580
自動化で、マネージド 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.3k
軽いノリで"自動化"に取り組んではいけないという話
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
65
毎年恒例イベントを Azure Media Services を使ってオンラインで
tetsuyaooooo
0
65
Azure Internet Analyzer (Preview) を試してみる
tetsuyaooooo
0
53
Other Decks in Technology
See All in Technology
Connect 100+を支える技術
kanyamaguc
0
200
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
3
440
OPENLOGI Company Profile
hr01
0
67k
Delegating the chores of authenticating users to Keycloak
ahus1
0
140
OPENLOGI Company Profile for engineer
hr01
1
34k
無意味な開発生産性の議論から抜け出すための予兆検知とお金とAI
i35_267
4
13k
品質と速度の両立:生成AI時代の品質保証アプローチ
odasho
1
340
B2C&B2B&社内向けサービスを抱える開発組織におけるサービス価値を最大化するイニシアチブ管理
belongadmin
1
6.9k
AI時代の開発生産性を加速させるアーキテクチャ設計
plaidtech
PRO
3
150
KiCadでPad on Viaの基板作ってみた
iotengineer22
0
300
SmartNewsにおける 1000+ノード規模 K8s基盤 でのコスト最適化 – Spot・Gravitonの大規模導入への挑戦
vsanna2
0
130
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
7
5.2k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Code Reviewing Like a Champion
maltzj
524
40k
Typedesign – Prime Four
hannesfritz
42
2.7k
GitHub's CSS Performance
jonrohan
1031
460k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Building Applications with DynamoDB
mza
95
6.5k
GraphQLとの向き合い方2022年版
quramy
49
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
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 リトライで回避すること
ご清聴ありがとう ございました