-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureVirtualMachine
Azure の仮想マシン
複数のリソースから構成される。
補足(「VM は 1 つのリソースではない」が本節の要点): オンプレミスの
サーバは筐体 1 台が 1 つの管理単位だが、Azure の VM は
複数の独立したリソースの組み合わせである。【仮想マシン(Microsoft.Compute/virtualMachines)】← これ自体は「設定の集合」に近い ├─ OS ディスク (Microsoft.Compute/disks) ├─ データ ディスク (Microsoft.Compute/disks) ├─ NIC (Microsoft.Network/networkInterfaces) │ ├─ パブリック IP (Microsoft.Network/publicIPAddresses) │ └─ NSG (Microsoft.Network/networkSecurityGroups) └─ 可用性セット (Microsoft.Compute/availabilitySets)この構造を理解していると、次のことが説明できる。
事象 理由 VM を削除してもディスクが残る(旧ポータル既定) ディスクが独立したリソースだから VM を削除しても課金が減らない ディスク・IP が残っているから(Azureの課金) ディスクだけを別 VM に付け替えられる 独立しているから(Azure上に素早く環境を構築する) RBAC を細かく分けられる リソース種別ごとに権限を割り当てられるから 後掲の「変更・保守、作業の一覧化」で
ネットワーク設定だけ別ロールが要ると書かれているのも、
NIC / NSG が VM とは別リソースだからである。
- 冗長化されていない。
- 冗長オプションなどを用いる。
- 基本、管理ディスク(Azureのディスク ストレージ)を使用し、課金に注意する。
- システム・ドライブ
C ドラのシステム・ドライブ- 管理ディスクの Premium など。
- ローカル・ディスクと比べ若干遅い。
- データ・ドライブ
- ローカル・ディスク
D ドラのローカル・ディスクは、- ローカル SSD なので高速にアクセス可能。
- ページング・ファイルなどでも利用される。
- ただし、障害発生時、データは削除される。
- データ・ディスク
E ドラ以降のデータ・ディスクは、- ライト・キャッシュを消して使用する。
- 管理ディスクの Ultra など。
- DB のデータ・ファイル、トランザクション・ログ・ファイルなどを保存。
- ローカル・ディスク
- 共有ディスク
クラスタ化では S2D(=ソフトウェアベースの共有ディスク)を利用
補足(「ライト・キャッシュを消して使用する」が重要): 一行だが、
DB を Azure VM で動かす際の必須設定である。Azure のディスクにはホスト キャッシュの設定があり、
用途によって選ぶべき値が異なる。
ドライブ 推奨キャッシュ 理由 OS ディスク(C:) 読み取り/書き込み 既定。OS の起動を速くする DB データ ファイル 読み取り専用 読み取りは速くしたい DB トランザクション ログ なし(None) 書き込み順序の保証が必要 トランザクション ログでキャッシュを有効にすると、
障害時に書いたはずのログが失われる可能性があり、
DBMS の耐久性(Durability)の前提が崩れる。
これが「ライト・キャッシュを消して使用する」の意味である
(SQL Server のファイルの配置)。なお、tempdb は D:(ローカル SSD)に置くのが
Azure での定石である。
揮発しても tempdb は起動時に再作成されるため問題にならず、
かつ最も高速だからである
(逆に、ユーザ DB を D: に置いてはいけない)。
- NIC
- 通常、1 枚挿し+NSG。2 枚挿しも可能だが、
VPF でのエミュレーションで物理的に堅牢にはならない。 - 使用不可(ネットワークの仕様上の問題)
- 通常、1 枚挿し+NSG。2 枚挿しも可能だが、
- IP アドレス
- パブリック IP アドレスは別のリソース
- プライベート IP アドレスは既定で DHCP で割り当てられる。
補足(NLB / WSFC が使えない理由): Azure の仮想ネットワークは
**ソフトウェア定義(SDN)**であり、物理 LAN のように
「同じセグメントに流したパケットが全員に届く」わけではない。
具体的には、
制約 影響 ブロードキャスト/マルチキャストが通らない NLB のハートビートが届かない GARP(Gratuitous ARP)が効かない 仮想 IP の付け替えが伝播しない IP は Azure 側(DHCP)が管理 OS 側で勝手に IP を持たせても Azure が知らない WSFC の「クラスタ IP アドレス」は
GARP でノード間を移動する仕組みであるため、これが機能しない。代替として、Azure では
内部ロード バランサー(ILB)+ 正常性プローブを使う。
クラスタ IP の代わりに ILB のフロントエンド IP を使い、
「今どのノードが Active か」をプローブで判定させる方式である
(AzureのGW / LB的なモノ。)。同じ理由で、OS 上で IP を固定してはいけない
(後述の「IP 固定」の項)。
ポータルからの
- インストール
- コマンド実行
などを行うことが出来る。
補足: Azure VM Agent は、
VM 拡張機能(Extension)の実行基盤である。
ブート診断、バックアップ、監視エージェントの導入、
RunCommandによるコマンド実行など、
ポータルから VM 内部に対して行う操作はすべてこれを経由する。重要なのは、この通信に受信ポートの開放が不要な点である
(VM 側から Azure 基盤へアウトバウンドで接続するため)。
後掲の「経路開放は、不要」がこれを指している。逆に言えば、エージェントが止まると
ポータルからの操作が一切効かなくなる
(パスワード リセット、拡張機能の追加など)。
「ポータルの操作が反応しない」場合はエージェントの状態を疑う。
- NSG
- GW / LB 的なモノ。
- 診断ログ
ストレージ → Azure Monitor、Log Analytics
| 状態 | 仮想マシン | ディスク | ライセンス |
|---|---|---|---|
| 開始中・実行中 | 課金される | 課金される | 課金される |
| 停止済み(Stopped) | 課金される | 課金される | 課金されない |
| 割当解除済み、削除済み(Deallocated) | 課金されない | 課金される | 課金されない |
移行メモ(表の変換): 原典は PukiWiki のセル結合記法(
>)を
使用していたため、結合されていたセルは同じ値を展開して表現した。
補足(この表が Azure の課金で最も重要): 3 状態 × 3 対象の
9 マスのうち、注意すべきは 2 つである。
マス 内容 停止済み × 仮想マシン = 課金される OS からシャットダウンしても止まらない 割当解除済み × ディスク = 課金される VM を止めてもディスク代は残る 前者への対処が次項、後者への対処は
「使わないディスクは削除する(またはスナップショットにして VHD を消す)」
になる。詳細はAzureの課金を参照。
- 仮想マシンのノード割り当てが解除されない限り、課金が継続する。
- シャットダウンでは課金される。
- シャットダウンは OS からではなく
必ずポータルサイトから行い、割り当て解除する。
- EA 契約のコミットメント額資金(MC : Monetary Commit)から減算される
Azureのディスク ストレージを参照。
- BYOL : Bring Your Own License
- ライセンス持ち込み
- Azure 側では課金されない
- PAYG : Pay As You Go
- マーケットプレイスのイメージ
- 時間課金、月課金(日割りなし)などがある。
- 2 タイプ
- Azure 用の、SKU が存在するマイクロソフト製品
・EA 契約の MC から減算される(仮想マシン費用と同じ)。 - Azure 用の、SKU が存在しないマイクロソフト製品、3rd party 製品
・EA 契約の MC から減算されず、
EA 契約の超過料金として扱われる。
・VL のディスカウントの対象にならない。
・四半期ごとの請求書一括請求になる。
- Azure 用の、SKU が存在するマイクロソフト製品
- 必ずマーケットプレイスの Web ページから確認
- Microsoft Azure Marketplace
https://azuremarketplace.microsoft.com/ja-jp/marketplace/
- Microsoft Azure Marketplace
補足(BYOL は「Azure Hybrid Benefit」として実装されている): Windows Server や
SQL Server の BYOL は、現在
**Azure Hybrid Benefit(AHUB / AHB)**という機能名で提供されている。
対象 割引 Windows Server(SA 付き) Windows のライセンス費用が無料になる SQL Server(SA 付き) SQL のライセンス費用が無料になる Linux(RHEL / SLES) サブスクリプション持ち込み可 有効化は VM 作成時の
「Windows ライセンスを既にお持ちの場合」で「はい」を選ぶだけで、
作成後にも切り替えられる。
保有しているのに設定し忘れると純粋な払い過ぎになるため、
既存 VM の設定を一度確認する価値がある。なお、後掲の「セキュア化とロックダウン」で
「BYOL が正しく構成されている(AHUB の設定など)」が
高額請求抑止の項目として挙がっているのはこの意味である。
Azureのアウトバウンド設計を参照。
- ポータルから DHCP 機能を使用して固定する。
- Azure で把握する必要があるので OS 上から IP アドレスを固定しない。
- このシーンは、比較的少ない(インバウンドは、基本的に、ILB 経由なので)。
補足(OS 上で固定すると何が起きるか): Azure のプライベート IP は
Azure 側の管理台帳が正であり、VM には DHCP で通知される。
OS 側で同じ値を静的設定しても一見動作するが、
- VM を割り当て解除して再起動すると、Azure 側が別の IP を割り当てる
→ OS 側の静的設定と食い違い、ネットワークに繋がらなくなる、- Azure 側から見た IP と実際の IP がずれ、
NSG や LB のルールが効かなくなるという事故が起きる。
正しい手順は
ポータル(または CLI)で割り当てを「静的」に変更することであり、
OS 側は DHCP のままにしておく。az network nic ip-config update --name ipconfig1 --nic-name <NIC名> \ --resource-group <RG名> --private-ip-address 10.0.0.10なお、本文が「このシーンは比較的少ない」と述べるのは、
アクセスは ILB のフロントエンド IP 経由で行う設計が基本であり、
個々の VM の IP を意識する必要が無いためである。
- 日本語化作業は面倒なため、
- 極力、英語版のまま利用することを推奨
移行メモ(体裁): 原典の「アンストール」は
「アンインストール」の脱字であるため補った。
補足(最新化): 現在は Marketplace に
日本語版の Windows Server イメージが提供されているため、
OS の日本語化作業は不要になっている
(Azure上に素早く環境を構築する)。一方、PAYG のミドルウェア(SQL Server 等)を
日本語版に入れ替える手間は依然として面倒である。
日本語版が必要と分かっている場合は、
- OS のみの PAYG イメージを選び、
- ミドルウェアはBYOL で日本語メディアから導入する
のが結果的に早い。
本文が PAYG を「かなり厄介」とするのは、
一度アンインストールしないとライセンス形態を変えられないためである。
- 突発的な故障
サービス・ヒーリング - 予測に基づく保守
サービス・ヒーリング(10 分前通知)
- VM のメンテナンス
ユーザが実施する。 - ホストのメンテナンス
- ゲストへの影響なし
通知なく実施 - ゲストへの影響あり
- 30 秒以内で完了 → 15 分前通知(PHU : Preserving Host Update)
- 30 秒以上必要 → 30 日前に通知(一定期間内に手動再起動)
- ゲストへの影響なし
移行メモ(正誤): 原典の「30秒異常必要」は
「30 秒以上必要」の誤変換であるため修正した。
仮想マシンが故障した場合でも、前述の構成から、
データ・ドライブ > ローカル・ディスクを除いて、壊れない。
- 15 秒単位の死活監視
- 10 分応答がない場合、自動リカバリ(別ノードへ移動)される。
移行メモ(体裁): 原典の「〜以外を除いて」は
二重否定になっていたため「〜を除いて」とした。
補足(サービス ヒーリングの限界): 「壊れない」とあるが、
自動的に別ノードで再起動されるという意味であり、
無停止ではない点に注意が要る。
項目 内容 検知まで 最大 10 分(15 秒間隔の監視で応答なしが続いた場合) 復旧 別ノードでOS が起動し直す 失われるもの メモリの内容、一時ディスク(D:)の内容 合計ダウンタイム 10 分+ OS 起動時間 つまり、単一 VM では 10 分以上の停止が起こり得る。
これを許容できない場合は、
冗長オプション(可用性セット/ゾーン)で
複数台構成にする必要がある。「単一 VM でも SLA 99.9%」は
月あたり約 43 分の停止を許容する水準であり、
サービス ヒーリング 1 回分でほぼ使い切る計算になる。
仮想化レイヤーより下の構成
| # | 構成 | 要素 |
|---|---|---|
| 1 | シングル VM | サービスの復旧 (Service Healing) |
| 2 | クラスタ構成 | 可用性セット ・VM Scale Sets ・ロード・バランサ Basic |
| 3 | マルチ AZ 構成 (Availability Zone) |
可用性ゾーン ・ゾーン冗長 VM Scale Sets ・ロード・バランサ Standard |
| 4 | マルチリージョン構成 | ・ペアリージョン ・Traffic Manager |
※ 可用性セットと可用性ゾーンは「AND」ではなく「OR」。
補足: この 4 段階はAzureの冗長化の
表と同じ構造であり、そちらに図解がある。
なお、ロード バランサーの SKU が AZ 構成では Standard 必須である点は
見落としやすい(Basic はゾーン冗長に対応しない)。
Basic SKU は 2025 年 9 月に廃止されており、現在は Standard 一択である。
- 可用性セット(AS)
- [障害ドメイン]や[更新ドメイン]を分ける事により、可用性を高める。
- 障害ドメイン:共通の電源やネットワーク機器などを共有する範囲
- 更新ドメイン:Azure のメンテナンスリブートの際に影響を受ける範囲
- 1 つのラック障害で 2 台の仮想マシンが同時に停止することを回避できる。
- 故に、サーバー・ファームを構成するとき、複数ラックに渡って冗長化して配置する。
- 可用性セット自体にクラスタリング・負荷分散・データ複製などの機能がある訳ではない。
- [障害ドメイン]や[更新ドメイン]を分ける事により、可用性を高める。
- ロード・バランサ
- 仮想マシン間で着信トラフィックを分散
- 詳しくは、Azure Load Balancerを参照(Standard)。
補足(「可用性セット自体に機能がある訳ではない」が重要): この一文は
誤解を防ぐうえで極めて重要である。可用性セットが行うのは配置の制御だけであり、
可用性セットがすること しないこと VM を別ラックに配置する 負荷分散(→ ロード バランサーが必要) メンテナンス時に同時に落とさない データの複製(→ アプリ/DB 側の機能が必要) - フェイル オーバー(→ クラスタ ソフトが必要) つまり、可用性セットに入れただけでは
**「たまたま同時に落ちない 2 台の別々のサーバ」**でしかない。
可用性セット + ロード バランサー + アプリのステートレス化が
揃って初めて冗長構成になる。DB のように状態を持つものは、さらに
**レプリケーション(AlwaysOn 等)**が要る
(Azureの高可用性設計)。
- 可用性ゾーン(AZ)
- 可用性ゾーンを分ける事により、可用性を高める。
- リージョン内の各種ハードウェアが分離されたゾーン
- リージョン内に、3 つ以上の可用性ゾーンが存在する。
- 1 つの DC 障害で DC 中の仮想マシンが同時に停止することを回避できる。
- サーバー・ファームを構成するとき、複数 DC 群に渡って冗長化して配置する。
- 可用性ゾーン自体にクラスタリング・負荷分散・データ複製などの機能がある訳ではない。
- 可用性ゾーンを分ける事により、可用性を高める。
- ロード・バランサ
- 仮想マシン間で着信トラフィックを分散
- 詳しくは、Azure Load Balancerを参照(Standard)。
移行メモ(体裁): 原典の「3つ以上のに可用性ゾーン」は
助詞が重複していたため修正した。
- ペアリージョン
リージョン ペアの間で事業継続とディザスタ・リカバリ (BCDR) を構成- 複数リージョンにまたがって構成することで地理的に冗長化
- 災害でリージョン中の仮想マシンが同時に停止することを回避できる。
- ロード・バランサ
DNS ベースの機能を利用した Traffic Manager での切り替え。
-
AZ はミニリージョンとしては機能しないため。
-
AZ は、ティアに渡って使用する。
※ ティア:水平方向のサーバー・ファーム(Web、AP、DB と言う集合)
-
理由
- AWS ではサブネットは特定の AZ に固定される。
故に、AZ をミニリージョンとして使用できる。- サブネット中に垂直・水平方向のサーバー・ファームを構成し、AZ で冗長化していく。
- このように構成すると、サブネット単位での設計が可能になる。
- Azure では、サブネットは特定の AZ に固定されない。
故に、AZ をミニリージョンとして使用できない。- 水平方向のサーバー・ファームを構成し、AZ で冗長化していく。
- このように構成すると、Azure の AZ の特性から PaaS、SaaS と組み合わせ易くなる。
- AWS ではサブネットは特定の AZ に固定される。
補足(この AWS との対比が本ページで最も価値のある指摘): 「サブネットが
AZ に固定されるか否か」という一点の違いが、
設計手法そのものを変えるという指摘は極めて実務的である。【AWS】サブネット = AZ に固定 VPC ├─ サブネットA (AZ-1) : Web / AP / DB を一式配置 ← ミニリージョンとして完結 └─ サブネットB (AZ-2) : Web / AP / DB を一式配置 ← 同上(丸ごと複製) → 「AZ ごとに一式」という縦割りの設計が自然 【Azure】サブネットは AZ に固定されない(VNET/サブネットはリージョン単位) VNET ├─ Web サブネット : Web-1(AZ1) Web-2(AZ2) Web-3(AZ3) ├─ AP サブネット : AP-1(AZ1) AP-2(AZ2) AP-3(AZ3) └─ DB サブネット : DB-1(AZ1) DB-2(AZ2) → 「ティア(層)ごとに横に並べ、各層の中で AZ 分散」という横割りの設計が自然本文が「ティアに渡って使用する」と言うのはこの意味である。
この違いが重要なのは、
観点 影響 サブネット設計 Azure ではサブネット=層で切る。AZ ごとに切らない NSG の設計 サブネット単位=層単位の制御が素直に書ける PaaS との併用 PaaS は元々リージョン単位でゾーン冗長。同じ考え方で揃う AWS の設計をそのまま持ち込むと サブネットが AZ に対応しないため破綻する 「PaaS、SaaS と組み合わせ易くなる」という結論も、
Azure の PaaS はゾーン冗長がサービス側で完結しているため、
IaaS 側も同じ粒度で考えた方が整合する、という趣旨である。
- Azure Load Balancerは、負荷分散とピン留めの選択が可能。
- シングル構成 DB のバックアップ・リストア運用のシナリオ等で、
- AZ にピン留めされたサーバは、LB を使用しないでアクセスできるが、
- Azure Backup でリストアする場合、ピン留めゾーンに復元しようとするため、機能しない。
移行メモ(体裁): 原典の「バッグアップ」は
「バックアップ」の誤りであるため修正した。
補足: これはゾーン ピン留め(zone-pinned)された VM を
別ゾーンに復元できないという制約に由来する実務的な注意である。
復元先のゾーンで容量が確保できない場合、
リストア自体が失敗する。対処としては、
- ゾーンを指定しない(Azure に任せる)、
- または復元時にゾーンを変更できる構成にしておく
ことになる。
バックアップ全般の考え方は
Azureの障害復旧を参照。
- 入力制御(インバウンド)
- 仮想ネットワークの入力制御も参考にする。
- 経路開放
- Azure ポータルや CLI、Guest VM Agent
経路開放は、不要。 - RDP / SSH(OS 内)
・オンプレ延伸からのアクセス。
・Azure Bastionからのアクセス。
・踏み台(Jumpbox)は危険なので、
JIT VM Access と言う機能もある。 - インバウンド
・AzureのGW / LB的なモノ。
・その他、OS 内部の Firewall など。
- Azure ポータルや CLI、Guest VM Agent
- 認証・認可
VM に AzAD 認証でログインする機能。- Azure Active Directory認証を使用し、RBACの権限制御でログインを可能にする機能。
- 前提 OS のイメージを使用しポータルから当該機能を有効化して作成する必要がある。
- 基本的に、サーバーに対してではなく、踏み台(Jumpbox)に対して使用する。
- 参考:Azure Active Directory (プレビュー) を使用して
Azure 内の Windows 仮想マシンにサインインする | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/active-directory/devices/howto-vm-sign-in-azure-ad-windows
- ハードニング(クライアント or サーバ)
- アンチ・マルウェア(OS)
- 不正なディスク・イメージを利用しない
- アンチ・マルウェア・ソフトをインストールする
・Linux OS:ClamAV
・Windows OS:Windows Antimalware(無償) - 仮想マシンの脅威検出や振る舞い監視を行う
Azure Security Center(ASC)の VM 監視機能(VM Insights) - 更新プログラムが正しく管理されている
・更新プログラムの自動展開スケジュールの構成
・上記の VM 監視機能(VM Insights)の更新管理機能(Update Management)
- アンチ・マルウェア(ミドル・アプリ)
- ミドルウェア、アプリの挙動の監視方法について検討する
・ミドルウェア:JP1、Datadog
・アプリ:Application Insights - 必要に応じてファイルやレジストリの変更検知を行う
- 適切なアプリのみが配置されるようになっている(DevOps)
- 必要に応じて許可されたアプリのみを実行するようにサーバを構成する
Azure Security Center(ASC)の Adaptive Application Control 機能
- ミドルウェア、アプリの挙動の監視方法について検討する
- 無効化機能
- 非管理ディスクを使わない
- 確認が取れていない(=許可されていない)拡張機能を使わない
- 高額請求抑止
- 巨大な VM サイズを利用しない。
- 自動的な起動 / シャットダウンを正しく構成する。
- スケールアウト / スケールインのルールを正しく構成する(VMSS)。
- ライセンス費用
・追加ライセンス費用が必要な VM イメージを利用しない
・BYOL が正しく構成されている(AHUB の設定など)
- 透過的暗号化
- ディスクの暗号化
・ストレージは低レベルでは暗号化されているので、基本的には不要。
・必要に応じ ADE(Azure Disk Encryption)により管理ディスクを暗号化できる。
・Windows OS では BitLocker、Linux では DM-crypt。
・主に内部犯行防止のためだが、操作権限によっては無意味。
※ また、バックアップ・リストアが複雑化する。 - メモリの暗号化
Confidential Computing
- ディスクの暗号化
- アンチ・マルウェア(OS)
- 出力制御(アウトバウンド)
- 仮想ネットワークの出力制御も参考にする。
- 経路制限
- アウトバウンド
・Azureのプロキシ的なモノ。
・SNAT ポートの枯渇問題 - 各種の拡張機能の VM エージェントが利用する経路
・経路開放が不要(基盤経路)
・ブート診断
・Azure Backup エージェント
・経路開放が必要(一般経路)
・Azure Diagnostics(WAD/LAD)
・VM インサイト(MMA/Log Analytics Agent)
・Application Insights
- アウトバウンド
移行メモ(正誤・体裁): 原典の以下を修正した。
原典 修正 Window OS Windows OS アプリの挙動が監視監視方法について アプリの挙動の監視方法について 自動的な起動 / シャットダウンが正しく構成する 自動的な起動 / シャットダウンを正しく構成する ADE(Advanced Data Encryption) ADE(Azure Disk Encryption)※ 略称の展開が誤り 内部犯行防止のタメ 内部犯行防止のため
補足(「経路開放は不要/必要」の切り分けが要点): この節で最も実務的なのは、
VM エージェントが使う通信のうち、
どれが NSG やファイアウォールの設定を要するかの区別である。
種別 通信先 経路開放 基盤経路 Azure のプラットフォーム エンドポイント( 168.63.129.16等)不要(NSG を通り抜ける) 一般経路 Log Analytics、Application Insights などのパブリック エンドポイント 必要(アウトバウンド許可、またはプライベート リンク)
168.63.129.16は Azure の特殊な仮想 IP で、
DHCP、DNS、正常性プローブ、VM エージェントの通信に使われる。
NSG の設定に関わらず常に到達できる
(逆に、これをブロックすると VM が正常に動作しなくなる)。一方、監視エージェントは通常のインターネット向け通信を行うため、
閉域環境では
- Azure Firewall / プロキシで FQDN を許可する、
- または **Azure Monitor プライベート リンク スコープ(AMPLS)**を使う
といった対応が要る
(Azureのアウトバウンド設計)。
補足(ディスク暗号化は「必要かどうか」を見極める): 本文の
「基本的には不要」「操作権限によっては無意味」という判断は的確である。
層 何から守るか 既定 SSE(Storage Service Encryption) 物理ディスクの盗難・廃棄 既定で有効・無償 ADE(Azure Disk Encryption) ゲスト OS 内での不正な読み取り 任意 Confidential Computing ホスト/ハイパーバイザからの読み取り 任意(対応 SKU のみ) つまり、「暗号化されていない」という状態は Azure には無い
(SSE が常に効いている)。
ADE を追加しても、VM にログインできる管理者からは平文に見えるため、
本文の「操作権限によっては無意味」は正しい。ADE を採用する判断は、
規制・監査要件で「顧客管理キーによる OS レベルの暗号化」が
明示的に求められている場合に限るのが合理的である。
「バックアップ・リストアが複雑化する」という副作用も現実的な指摘である。
- VM の主なメンテナンス作業と、必要な権限付与
- 多くの作業は「Virtual Machine Contributor」ロールが必要で、
- ネットワーク設定が必要な作業は、高権限である、
「Network Contributor」ロールが必要になるので要注意。 - 上記に合致しない作業も幾らか存在する。
- また、カスタム・ロール化した方が良い作業もある。
- NIC 追加、NSG 設定の変更
- 仮想マシンの再起動、電源 on/off、電源 on/off スケジュール変更
移行メモ(正誤): 原典の「Virtual Maschine Contributor」は
「Virtual Machine Contributor」の誤字であるため修正した。
補足(なぜ Network Contributor が「高権限」なのか): 一見すると
ネットワーク設定は VM 操作より狭い権限に見えるが、
実際にはより危険である。理由は次のとおり。
Network Contributor でできること 危険性 NSG の規則を変更 すべてのポートを全世界に開放できる ルート テーブルの変更 通信を任意の場所に迂回させられる(傍受) パブリック IP の付与 閉域のはずの VM をインターネットに露出できる ピアリングの構成 別 VNET への経路を作れる つまり、Network Contributor は
ネットワーク境界による防御を無力化できる権限である。
VM を再起動する権限とは危険度の桁が違う。だからこそ本文はカスタム ロール化を勧めている。
例えば、
- **「VM の再起動・起動・停止だけ」**のロール
(Microsoft.Compute/virtualMachines/restart/action等のみ許可)、- **「NIC の追加はできるが NSG は変更できない」**ロール
のように、作業単位で必要最小限に絞る。
RBAC の詳細は
Role Based Access Control (RBAC)、
Azureのアクセス制御と権限を参照。
下記を参照。
az vm create ^
--resource-group [既存のRG名] ^
--name [VM名] ^
--location [location] ^
--size [size] ^
--image [image名] ^
--admin-user [users名] ^
--admin-password [password] ^
--vnet-name [既存のVNET名] ^
--subnet [既存のSubnet名]
-
size の確認方法
az vm list-sizes --location [location] --output table -
image 名の確認方法
az vm image list --output table -
例
補足(
--admin-passwordをコマンドラインに書かない): 例のとおり
--admin-passwordをコマンドラインに指定すると、
- シェルの履歴に残る、
- CI のログに出力される、
psで他ユーザから見える(Linux)という問題がある。実務では次のいずれかを使う。
手段 内容 SSH 公開鍵(Linux) --ssh-key-values。パスワードを使わないのが最善Azure Key Vault --admin-password $(az keyvault secret show ... --query value -o tsv)対話入力 省略すると対話的に入力を求められる また、
az vm createは
省略した引数を自動生成する(VNET、NSG、パブリック IP など)。
手早く 1 台作るには便利だが、
意図しないパブリック IP が付くことがあるため、
閉域構成では--public-ip-address ""を明示する
(Azure Bastion)。なお、
^は Windows のコマンド プロンプトでの行継続文字である。
PowerShell では`、Bash では\になる。
- 【初心者】Azure CLI で仮想マシン(Ubuntu)を作成する
- 第1回 -リソースグループについて-
https://tech-lab.sios.jp/archives/2998 - 第2回 -仮想ネットワークとサブネットについて-
https://tech-lab.sios.jp/archives/3026 - 第3回 -ネットワークセキュリティグループについて-
https://tech-lab.sios.jp/archives/3040 - 第4回 -ストレージアカウントについて-
https://tech-lab.sios.jp/archives/3046 - 最終回 -VMについて-
https://tech-lab.sios.jp/archives/3087
- 第1回 -リソースグループについて-
※ IaaS の構成方法(Azureの仮想ネットワーク)中にも同様のトピックが含まれる。
- クイック スタート Windows
- Azure Portal で Windows VM を作成する
https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/quick-create-portal - Azure CLI を使用して Windows VM を作成する
https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/quick-create-cli - Azure PowerShell を使用して Windows VM を作成する
https://docs.microsoft.com/ja-jp/azure/virtual-machines/windows/quick-create-powershell - ARM テンプレートは、コチラ
- Azure Portal で Windows VM を作成する
- クイック スタート Linux
- Azure portal で Linux VM を作成する
https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/quick-create-portal - Azure CLI を使用して Linux VM を作成する
https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/quick-create-cli - Azure PowerShell を使用して Linux VM を作成する
https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/quick-create-powershell - ARM テンプレートは、コチラ
- Azure portal で Linux VM を作成する
Tags: 移行, インフラストラクチャ, クラウド, Azure
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。