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
630
自動化で、マネージド 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
56
ETロボコン2020 競技会場システムのおはなし
tetsuyaooooo
0
28
Microsoft MVP を受賞するために取り組んだこと
tetsuyaooooo
0
76
毎年恒例イベントを Azure Media Services を使ってオンラインで
tetsuyaooooo
0
67
Azure Internet Analyzer (Preview) を試してみる
tetsuyaooooo
0
56
Other Decks in Technology
See All in Technology
3年ぶりの re:Invent 今年の意気込みと前回の振り返り
kazzpapa3
0
190
[JDDStudy #10] 社内Agent勉強会の取り組み紹介
yp_genzitsu
1
130
Sansan BIが実践する AI on BI とセマンティックレイヤー / data_summit_findy
sansan_randd
0
130
設計は最強のプロンプト - AI時代に武器にすべきスキルとは?-
kenichirokimura
1
340
品質保証の取り組みを広げる仕組みづくり〜スキルの移譲と自律を支える実践知〜
tarappo
2
800
Master Dataグループ紹介資料
sansan33
PRO
1
3.9k
Pythonで構築する全国市町村ナレッジグラフ: GraphRAGを用いた意味的地域検索への応用
negi111111
8
3.3k
エンタープライズ企業における開発効率化のためのコンテキスト設計とその活用
sergicalsix
1
160
激動の2025年、Modern Data Stackの最新技術動向
sagara
0
1.2k
AIエージェントを導入する [ 社内ナレッジ活用編 ] / Implement AI agents
glidenote
1
350
技術の総合格闘技!?AIインフラの現在と未来。
ebiken
PRO
0
240
「データ無い! 腹立つ! 推論する!」から 「データ無い! 腹立つ! データを作る」へ チームでデータを作り、育てられるようにするまで / How can we create, use, and maintain data ourselves?
moznion
2
190
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
Why Our Code Smells
bkeepers
PRO
340
57k
We Have a Design System, Now What?
morganepeng
54
7.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
For a Future-Friendly Web
brad_frost
180
10k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
310
A Modern Web Designer's Workflow
chriscoyier
697
190k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Producing Creativity
orderedlist
PRO
348
40k
Making Projects Easy
brettharned
120
6.4k
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 リトライで回避すること
ご清聴ありがとう ございました