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 login を使用する際に気をつけること
Search
Tetsuya Odashima
May 20, 2023
Technology
0
230
自動化で、マネージド 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
キャリア教育ミニ講演会 - システムエンジニア編
tetsuyaooooo
0
39
私のMCP試験の挑み方
tetsuyaooooo
0
27
ETロボコン2020 競技会場システムのおはなし
tetsuyaooooo
0
9
Microsoft MVP を受賞するために取り組んだこと
tetsuyaooooo
0
27
毎年恒例イベントを Azure Media Services を使ってオンラインで
tetsuyaooooo
0
44
Azure Internet Analyzer (Preview) を試してみる
tetsuyaooooo
0
27
Microsoft MVP が語る Azure 移行の勘所
tetsuyaooooo
0
15
情シスの味方、Azure のカスタムロール
tetsuyaooooo
0
22
実践で学んだLog Analytics
tetsuyaooooo
0
19
Other Decks in Technology
See All in Technology
DevOpsメトリクスとアウトカムの接続にトライ!開発プロセスを通して計測できるメトリクスの活用方法
ham0215
0
170
PHP"オレ"カンファレンスの告知
ysknsid25
0
320
マルチアカウント環境への発見的統制の導入
ch1aki
1
1.3k
「ふりかえりのふりかえり」をふりかえり、実のあるふりかえりにする
naitosatoshi
0
220
コンテナセキュリティの基本と脅威への対策
kyohmizu
3
670
DevOpsDays History and my DevOps story
kawaguti
PRO
7
1.4k
カオナビの利用実績をアウトカムへつなげる旅 / example-of-data-management-startup-in-kaonavi
kaonavi
0
110
2024/4/26 コンピュータ歴史博物館解説告知
toshi_atsumi
0
190
4年前、あるじゃん老害エンジニアLT合戦に登壇、米国西海岸コンピュータ歴史博物館体験記の続編
toshi_atsumi
0
190
**強い**エンジニアのなり方 - フィードバックサイクルを勝ち取る / grow one day each day
soudai
60
17k
コンパウンドスタートアップのためのスケーラブルでセキュアなInfrastructure as Codeパイプラインを考える / Scalable and Secure Infrastructure as Code Pipeline for a Compound Startup
yuyatakeyama
3
1.8k
Delivering Millions of Messages within seconds @ Duolingo
pelelgrino
0
320
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
13
1.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
15
1.4k
Designing for Performance
lara
601
67k
What’s in a name? Adding method to the madness
productmarketing
PRO
15
2.6k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
2k
Typedesign – Prime Four
hannesfritz
36
2k
Producing Creativity
orderedlist
PRO
336
39k
Rebuilding a faster, lazier Slack
samanthasiow
72
8.2k
BBQ
matthewcrist
79
8.7k
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.6k
Facilitating Awesome Meetings
lara
40
5.6k
Web Components: a chance to create the future
zenorocha
304
41k
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 リトライで回避すること
ご清聴ありがとう ございました