Azure Arc によるリモートアクセスとセキュリティ

>100 Views

June 01, 24

スライド概要

Windows Server & Cloud User Group Japan 第40回勉強会の資料です。
Azure Arc 対応サーバーによる、管理対象サーバーへのリモートアクセス(SSH/RDP)について説明します。
また、セキュリティ上考慮すべきポイントについても解説します。

profile-image

インフラエンジニア

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Azure Arc による リモートアクセス とセキュリティ SCUGJ (wSCUGJ) 勉強会 #40 2024-06-01 Kazuki Takai Windows Server & Cloud User Group Japan

2.

自己紹介 • たかい (Kazuki Takai) // X(旧 Twitter)@zhuky7 • 会社員 (某ISP勤務) • サービス基盤開発、技術開発、ライセンス関連 • 普段は Windows Server / Microsoft 製品だけでなく、Linux や VMware、OSS のインフラ系ソフトウェアなど幅広く • ユーザーオブジェクトよりコンピューターオブジェクトのほうが多いような環境 • wSCUGJ (Windows Server & System Center User Group Japan) • 興味分野:統合管理、ID、自動化、セキュリティ、監視・運用 • Microsoft MVP - Microsoft Azure / Cloud and Datacenter Management

3.

お話しすること • Azure Arc 対応サーバーのリモートアクセス • Windows Admin Center (Azure Portal 統合) • SSH / RDP アクセス • リモートコマンド実行(Run Command) • それぞれの方法におけるアクセスコントロール • Azure RBAC

4.

本日のデモ環境 • [Resource Group] SCUGJ40 • オンプレミス相当の環境(Arc 対応サーバー構成済) • Azure Arc Jumpstart ArcBox を使用して構築 • [Resource Group] DemoClient • リモートアクセスする側のクライアント相当の環境 • プレゼンの都合上、画面切り替えを少なくするために、 Azure 上で構築

5.

注意点 • 本セッションでは、リリース前の機能についてお話しします • 仕様等が変更となる可能性があります • 本セッション内の全てのコマンド(az コマンド)は、 PowerShell 7.4.2 (Windows 版)から実行しています • 記載されているコマンドのエスケープは PowerShell 仕様です • Bash 等から実行する場合は、適宜読み替えてください

6.

前提とする環境 • アクセス対象のサーバー • Azure Arc 対応サーバーとして構成・管理されている • 外部からのインバウンド接続が許可されていない • インターネットへのアウトバウンド接続は許可されている • アクセス元のクライアント • アクセス対象のサーバーへの直接接続(SSH/RDP)はできない • インターネットへのアウトバウンド接続は許可されている

7.

Azure Arc 対応サーバー • サーバーリソースの管理と保護を一元化 • Azure の管理性を Azure 以外のリソースに拡張 • オンプレミス、Azure 以外のクラウド上のサーバー • 管理対象:サーバー(OS環境) • Windows 又は Linux OS 環境を Azure に接続 • 監視、運用管理、構成管理、更新管理、ポリシー適用等

8.

Azure Arc 対応サーバーへのリモートアクセス • 方法は大きく 3 種類 • Windows Admin Center を利用 • Azure Arc による SSH アクセス • Azure Arc によるコマンド実行(Run Command)

9.

Windows Admin Center による接続 • Windows Admin Center (ポータル統合)を利用 • 対象サーバーに Windows Admin Center を構成 • Azure Portal からリモートインストール可能 • Azure Portal からリモートアクセス • Azure Portal から Windows Admin Center へ接続 • Windows Admin Center の PowerShell 又はリモート デスクトップ機能を利用 • 対象が Windows の場合のみ利用可能

10.

Windows Admin Center のインストール

11.

Windows Admin Center のインストール

12.

Windows Admin Center への接続

13.

Windows Admin Center への接続 • Windows Admin Center (Portal 統合)への接続 • Azure Portal 上で「接続」をクリック • Windows Admin Center 管理者ログイン ロールが必要 • 対象サーバー上の Windows Admin Center へ Azure Arc の Machine Connected Agent 経由でアクセス • Windows Admin Center 上で各種管理操作を実行可能 • リモートデスクトップ接続や PowerShell Remoting も可能

14.

Windows Admin Center (ポータル統合)

15.

Windows Admin Center (PowerShell)

16.

Windows Admin Center (RDP)

17.

Windows Admin Center (RDP)

18.

Connected Machine Agent (WAC 拡張)

19.

Windows Admin Center 経由でのアクセス • 必要な権限、アカウント • インストール • 所有者、共同作成者、又は Windows Admin Center 管理者 ログイン ロールの何れかが必要 • 接続 • 閲覧者以上のロールに加えて、Windows Admin Center 管 理者ログイン ロールが必要 • PowerShell / RDP • OS へログインすることが可能なアカウントの情報が必要

20.

Windows Admin Center 管理者ログイン

21.

Azure Arc による SSH アクセス • 対象で SSH Server が構成されている前提 • Windows Server の場合は拡張機能でリモート構成可能 • Azure 側に管理用エンドポイントを作成 • 管理用エンドポイントと Azure Arc Connected Machine Agent の間で TLS トンネルを構成 • 管理用エンドポイント経由で SSH 接続

22.

Arc 対応サーバー(Windows)への SSH • ローカルユーザー アカウントでのログイン • パスワード認証 又は 公開鍵認証 • 仮想マシン ローカル ユーザー ログイン ロール相当の 権限があれば、追加のロールアサインは不要 • リソースに対する共同作成者 ロール等でも可 • Microsoft Entra ID 統合ログインは不可 • 現時点では、拡張機能が無い • SSH トンネル経由で RDP 接続が可能

23.

Arc 対応サーバー(Linux)への SSH • ローカルユーザー アカウントでのログイン • パスワード認証 又は 公開鍵認証 • 仮想マシン ローカル ユーザー ログイン ロール相当の 権限があれば、追加のロールアサインは不要 • リソースに対する共同作成者 ロール等でも可 • Microsoft Entra ID 統合ログイン • 拡張機能のインストールが必要 • 仮想マシン 管理者ログイン 又は 仮想マシン ユーザー ログイン ロールが必要

24.

必要な権限(Actions/DataActions) • ローカル ログイン • Microsoft.HybridCompute/machines/*/read • Microsoft.HybridConnectivity/endpoints/listCredentials/action • Microsoft Entra ID 統合ログイン (上記に加え) • Microsoft.HybridCompute/machines/login/action • Microsoft.HybridCompute/machines/loginAsAdmin/action

25.

仮想マシン ローカルユーザーログイン ロール

26.

仮想マシン 管理者ログイン ロール

27.

仮想マシン ユーザーログイン ロール

28.

Azure CLI SSH Extension • Azure CLI (Az コマンド)の拡張機能の一つ • az ssh コマンド(コンテキスト)を利用可能 • extension が入っていない場合、コマンド実行時に インストール可能 • Azure Arc 対応サーバーへの接続時は、Machine Connected Agent 経由で接続するため、直接の ネットワーク接続性が不要 • az ssh arc

29.

az ssh コマンドを実行するための事前準備 • az --version • az login • az account show | Select-String -Pattern '[Nn]ame' | Select-String -Pattern '@’ -NotMatch • az account set -n "<Subscription Name>" • az ssh --help • az extension list

30.

Azure CLI のログイン • az login で Web ブラウザが起動するので、サインイン • 環境によっては --use-device-code オプションを使用 • ログイン後、利用したいサブスクリプションが選択され ていることを確認 • 異なる場合は、明示的にサブスクリプションを選択

31.
[beta]
Extension の確認
• 現在インストールされている Extension を表示
• az extension list

• 利用可能な Extension を表示
• az extension list-available --query "[].{Name:name,
Preview:preview, Experimental:experimental,
Installed:installed}" --output table

• SSH Extension のインストール状態を表示
• az extension list-available --query "[?(name ==
'ssh')].{Name:name, Preview:preview,
Experimental:experimental, Installed:installed}" -output table

32.

SSH Extension のインストール • コマンド実行時、必要であればインストールされる

33.
[beta]
接続エンドポイントの作成
• 接続対象の Arc 対応サーバー マシンごとに必要
• az rest --method put --uri
https://management.azure.com/subscriptions/<Subscri
ption>/resourceGroups/<ResourceGroup>/providers/Mic
rosoft.HybridCompute/machines/<Arc enabled server
Name>/providers/Microsoft.HybridConnectivity/endpoi
nts/default?api-version=2023-03-15 --body
'{¥"properties¥":{¥"type¥":¥"default¥"}}'

34.

接続エンドポイントの確認

35.

Machine Connected Agent の設定確認

36.

Azure AD based SSH Login • Microsoft Entra ID 統合ログインのために必要 • 現時点では、Linux のみインストール可能

37.

SSH 接続(Windows / Local User) • az ssh arc -g "<Resource Group>" -n "<Arc Machine Name>" --local-user <Local User Account>

38.

RDP 接続(Windows / Local User) • az ssh arc -g "<Resource Group>" -n "<Arc Machine Name>" --local-user <Local User Account> --rdp

39.

SSH 接続(Linux / Local User)

40.

SSH 接続(Linux / Entra ID User) • az ssh arc -g "<Resource Group>" -n "<Arc Machine Name>"

41.

az ssh 以外のクライアント利用 • az ssh config コマンドで ssh_config 形式の接続 設定を保存可能 • ProxyCommand や、Proxy に必要な各種設定、バイナ リなどが同時に保存される • OpenSSH の ssh / sftp コマンドなどで保存した config を読み込んで接続が可能 • config テキスト本体以外に、異なるパスへ必要なファ イルが保存されているので、移動させる場合は

42.

リモート コマンド実行(Run Command) • Machine Connected Agent 経由でコマンドを実行 • Windows の場合 PowerShell スクリプトとして実行 • Linux の場合シェルスクリプトとして実行 • OS のログインアカウント情報不要 • 同期・非同期での実行が可能 • 出力をストレージアカウントに保存可能 • 現時点ではプレビュー機能

43.

Run Command に必要な権限 • Azure Connected Machine リソース管理者 ロール相当の 権限があればコマンド実行可能 • 例えば、共同作成者ロール等でも実行可能 • Microsoft.HybridCompute/machines/runCommands/write • 閲覧者ロール相当の権限があれば情報取得、表示は可能 • Microsoft.HybridCompute/machines/runCommands/read

44.

Azure CLI Connected Machine Extension • Azure CLI (Az コマンド)の拡張機能の一つ • az connectedmachine コマンド(コンテキスト)を利用可能 • extension が入っていない場合、コマンド実行時にインストール 可能 • Run Command は connectedmachine コンテキストのサブ コマンド • az connectedmachine run-command

45.

Run Command によるコマンド実行 • az connectedmachine run-command create --name "<CommandName>" --machine-name "<TargetMachineName>" --resource-group "<ResourceGroupName>" --script "<Scripts/Command-Line>"

46.

Run Command によるコマンド実行

47.

Run Command のブロック • Connected Machine Agent の設定で、Run Command をブロック可能 • Windows 環境 • azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows" • Linux 環境 • azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerlinux"

48.

各方法で必要な権限、情報の比較 WAC in Portal SSH via Arc (Local User) SSH via Arc (Entra User) Run Command 事前構成 - OS 側で SSH Server の 設定が必要 OS 側で SSH Server の 設定が必要 - 必須ロール (代替不可) Windows Admin Center 管理者ログイン - 仮想マシン管理者 ログイン 仮想マシンユーザー ログイン - 必要ロール 同上 (共同作成者等 で代替可能) 仮想マシン ローカル ユーザーログイン 同上 Azure Connected Machine リソース 管理者 OS アカウント 情報 必要 - - 必要だが作成可能

49.

Windows Admin Center の監査 • リモートアクセス観点では、通常の OS ログインと同様 • OS 側のイベントログで、ログインイベントを監査 • ログインアカウントを作成できてしまうので、必要に応 じてアカウント作成やグループメンバーシップの変更も 監査 • イベント ID : 4720, 4732 等

50.

Log Analytics へのログ転送 • データ収集ルールでイベントログや Syslog を収集 するよう設定

51.

Log Analytics へのログ転送

52.

Log Analytics での検索(OS ログイン) (例)Windows OS の場合 Event | where EventLog == "Security" | where EventID in (4720, 4732)

53.

SSH アクセスの監査 • リモートアクセス観点では、通常の OS ログインと 同様 • OS 側のイベントログや Syslog を監査 • アクセス元 IP アドレスが 127.0.0.1 となるので注意

54.

Run Command の実行監査 • Azure のアクティビティログを確認 • Log Analytics へログをルーティングし保管 • サブスクリプションの診断設定から、アクティビティ ログをルーティングするよう設定 • 必要に応じてアラートルールを設定

55.

アクティビティログのルーティング設定

56.

アクティビティログのルーティング設定

57.

Log Analytics での検索(Run Command) AzureActivity | where OperationNameValue == "MICROSOFT.HYBRIDCOMPUTE/MACHINES/RUNCOMMANDS/WRITE"

58.

Windows Admin Center Demo SSH / RDP Run Command

59.

本日のデモ環境(再掲) • [Resource Group] SCUGJ40 • オンプレミス相当の環境(Arc 対応サーバー構成済) • Azure Arc Jumpstart ArcBox を使用して構築 • [Resource Group] DemoClient • リモートアクセスする側のクライアント相当の環境 • プレゼンの都合上、画面切り替えを少なくするために、 Azure 上で構築

60.

本日のデモ環境(RG: SCUGJ40)

61.

本日のデモ環境(RG: SCUGJ40)

62.

本日のデモ環境(RG: DemoClient)

63.

まとめ • Azure RBAC の設定はとても大切 • 意図せず OS へのアクセス権限を付与しないよう 適切なコントロールが必要 • 特に、DataAction が不要な Run Command