>100 Views
June 01, 24
スライド概要
Windows Server & Cloud User Group Japan 第40回勉強会の資料です。
Azure Arc 対応サーバーによる、管理対象サーバーへのリモートアクセス(SSH/RDP)について説明します。
また、セキュリティ上考慮すべきポイントについても解説します。
インフラエンジニア
Azure Arc による リモートアクセス とセキュリティ SCUGJ (wSCUGJ) 勉強会 #40 2024-06-01 Kazuki Takai Windows Server & Cloud User Group Japan
自己紹介 • たかい (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
お話しすること • Azure Arc 対応サーバーのリモートアクセス • Windows Admin Center (Azure Portal 統合) • SSH / RDP アクセス • リモートコマンド実行(Run Command) • それぞれの方法におけるアクセスコントロール • Azure RBAC
本日のデモ環境 • [Resource Group] SCUGJ40 • オンプレミス相当の環境(Arc 対応サーバー構成済) • Azure Arc Jumpstart ArcBox を使用して構築 • [Resource Group] DemoClient • リモートアクセスする側のクライアント相当の環境 • プレゼンの都合上、画面切り替えを少なくするために、 Azure 上で構築
注意点 • 本セッションでは、リリース前の機能についてお話しします • 仕様等が変更となる可能性があります • 本セッション内の全てのコマンド(az コマンド)は、 PowerShell 7.4.2 (Windows 版)から実行しています • 記載されているコマンドのエスケープは PowerShell 仕様です • Bash 等から実行する場合は、適宜読み替えてください
前提とする環境 • アクセス対象のサーバー • Azure Arc 対応サーバーとして構成・管理されている • 外部からのインバウンド接続が許可されていない • インターネットへのアウトバウンド接続は許可されている • アクセス元のクライアント • アクセス対象のサーバーへの直接接続(SSH/RDP)はできない • インターネットへのアウトバウンド接続は許可されている
Azure Arc 対応サーバー • サーバーリソースの管理と保護を一元化 • Azure の管理性を Azure 以外のリソースに拡張 • オンプレミス、Azure 以外のクラウド上のサーバー • 管理対象:サーバー(OS環境) • Windows 又は Linux OS 環境を Azure に接続 • 監視、運用管理、構成管理、更新管理、ポリシー適用等
Azure Arc 対応サーバーへのリモートアクセス • 方法は大きく 3 種類 • Windows Admin Center を利用 • Azure Arc による SSH アクセス • Azure Arc によるコマンド実行(Run Command)
Windows Admin Center による接続 • Windows Admin Center (ポータル統合)を利用 • 対象サーバーに Windows Admin Center を構成 • Azure Portal からリモートインストール可能 • Azure Portal からリモートアクセス • Azure Portal から Windows Admin Center へ接続 • Windows Admin Center の PowerShell 又はリモート デスクトップ機能を利用 • 対象が Windows の場合のみ利用可能
Windows Admin Center のインストール
Windows Admin Center のインストール
Windows Admin Center への接続
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 も可能
Windows Admin Center (ポータル統合)
Windows Admin Center (PowerShell)
Windows Admin Center (RDP)
Windows Admin Center (RDP)
Connected Machine Agent (WAC 拡張)
Windows Admin Center 経由でのアクセス • 必要な権限、アカウント • インストール • 所有者、共同作成者、又は Windows Admin Center 管理者 ログイン ロールの何れかが必要 • 接続 • 閲覧者以上のロールに加えて、Windows Admin Center 管 理者ログイン ロールが必要 • PowerShell / RDP • OS へログインすることが可能なアカウントの情報が必要
Windows Admin Center 管理者ログイン
Azure Arc による SSH アクセス • 対象で SSH Server が構成されている前提 • Windows Server の場合は拡張機能でリモート構成可能 • Azure 側に管理用エンドポイントを作成 • 管理用エンドポイントと Azure Arc Connected Machine Agent の間で TLS トンネルを構成 • 管理用エンドポイント経由で SSH 接続
Arc 対応サーバー(Windows)への SSH • ローカルユーザー アカウントでのログイン • パスワード認証 又は 公開鍵認証 • 仮想マシン ローカル ユーザー ログイン ロール相当の 権限があれば、追加のロールアサインは不要 • リソースに対する共同作成者 ロール等でも可 • Microsoft Entra ID 統合ログインは不可 • 現時点では、拡張機能が無い • SSH トンネル経由で RDP 接続が可能
Arc 対応サーバー(Linux)への SSH • ローカルユーザー アカウントでのログイン • パスワード認証 又は 公開鍵認証 • 仮想マシン ローカル ユーザー ログイン ロール相当の 権限があれば、追加のロールアサインは不要 • リソースに対する共同作成者 ロール等でも可 • Microsoft Entra ID 統合ログイン • 拡張機能のインストールが必要 • 仮想マシン 管理者ログイン 又は 仮想マシン ユーザー ログイン ロールが必要
必要な権限(Actions/DataActions) • ローカル ログイン • Microsoft.HybridCompute/machines/*/read • Microsoft.HybridConnectivity/endpoints/listCredentials/action • Microsoft Entra ID 統合ログイン (上記に加え) • Microsoft.HybridCompute/machines/login/action • Microsoft.HybridCompute/machines/loginAsAdmin/action
仮想マシン ローカルユーザーログイン ロール
仮想マシン 管理者ログイン ロール
仮想マシン ユーザーログイン ロール
Azure CLI SSH Extension • Azure CLI (Az コマンド)の拡張機能の一つ • az ssh コマンド(コンテキスト)を利用可能 • extension が入っていない場合、コマンド実行時に インストール可能 • Azure Arc 対応サーバーへの接続時は、Machine Connected Agent 経由で接続するため、直接の ネットワーク接続性が不要 • az ssh arc
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
Azure CLI のログイン • az login で Web ブラウザが起動するので、サインイン • 環境によっては --use-device-code オプションを使用 • ログイン後、利用したいサブスクリプションが選択され ていることを確認 • 異なる場合は、明示的にサブスクリプションを選択
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
SSH Extension のインストール • コマンド実行時、必要であればインストールされる
接続エンドポイントの作成
• 接続対象の 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¥"}}'
接続エンドポイントの確認
Machine Connected Agent の設定確認
Azure AD based SSH Login • Microsoft Entra ID 統合ログインのために必要 • 現時点では、Linux のみインストール可能
SSH 接続(Windows / Local User) • az ssh arc -g "<Resource Group>" -n "<Arc Machine Name>" --local-user <Local User Account>
RDP 接続(Windows / Local User) • az ssh arc -g "<Resource Group>" -n "<Arc Machine Name>" --local-user <Local User Account> --rdp
SSH 接続(Linux / Local User)
SSH 接続(Linux / Entra ID User) • az ssh arc -g "<Resource Group>" -n "<Arc Machine Name>"
az ssh 以外のクライアント利用 • az ssh config コマンドで ssh_config 形式の接続 設定を保存可能 • ProxyCommand や、Proxy に必要な各種設定、バイナ リなどが同時に保存される • OpenSSH の ssh / sftp コマンドなどで保存した config を読み込んで接続が可能 • config テキスト本体以外に、異なるパスへ必要なファ イルが保存されているので、移動させる場合は
リモート コマンド実行(Run Command) • Machine Connected Agent 経由でコマンドを実行 • Windows の場合 PowerShell スクリプトとして実行 • Linux の場合シェルスクリプトとして実行 • OS のログインアカウント情報不要 • 同期・非同期での実行が可能 • 出力をストレージアカウントに保存可能 • 現時点ではプレビュー機能
Run Command に必要な権限 • Azure Connected Machine リソース管理者 ロール相当の 権限があればコマンド実行可能 • 例えば、共同作成者ロール等でも実行可能 • Microsoft.HybridCompute/machines/runCommands/write • 閲覧者ロール相当の権限があれば情報取得、表示は可能 • Microsoft.HybridCompute/machines/runCommands/read
Azure CLI Connected Machine Extension • Azure CLI (Az コマンド)の拡張機能の一つ • az connectedmachine コマンド(コンテキスト)を利用可能 • extension が入っていない場合、コマンド実行時にインストール 可能 • Run Command は connectedmachine コンテキストのサブ コマンド • az connectedmachine run-command
Run Command によるコマンド実行 • az connectedmachine run-command create --name "<CommandName>" --machine-name "<TargetMachineName>" --resource-group "<ResourceGroupName>" --script "<Scripts/Command-Line>"
Run Command によるコマンド実行
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"
各方法で必要な権限、情報の比較 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 アカウント 情報 必要 - - 必要だが作成可能
Windows Admin Center の監査 • リモートアクセス観点では、通常の OS ログインと同様 • OS 側のイベントログで、ログインイベントを監査 • ログインアカウントを作成できてしまうので、必要に応 じてアカウント作成やグループメンバーシップの変更も 監査 • イベント ID : 4720, 4732 等
Log Analytics へのログ転送 • データ収集ルールでイベントログや Syslog を収集 するよう設定
Log Analytics へのログ転送
Log Analytics での検索(OS ログイン) (例)Windows OS の場合 Event | where EventLog == "Security" | where EventID in (4720, 4732)
SSH アクセスの監査 • リモートアクセス観点では、通常の OS ログインと 同様 • OS 側のイベントログや Syslog を監査 • アクセス元 IP アドレスが 127.0.0.1 となるので注意
Run Command の実行監査 • Azure のアクティビティログを確認 • Log Analytics へログをルーティングし保管 • サブスクリプションの診断設定から、アクティビティ ログをルーティングするよう設定 • 必要に応じてアラートルールを設定
アクティビティログのルーティング設定
アクティビティログのルーティング設定
Log Analytics での検索(Run Command) AzureActivity | where OperationNameValue == "MICROSOFT.HYBRIDCOMPUTE/MACHINES/RUNCOMMANDS/WRITE"
Windows Admin Center Demo SSH / RDP Run Command
本日のデモ環境(再掲) • [Resource Group] SCUGJ40 • オンプレミス相当の環境(Arc 対応サーバー構成済) • Azure Arc Jumpstart ArcBox を使用して構築 • [Resource Group] DemoClient • リモートアクセスする側のクライアント相当の環境 • プレゼンの都合上、画面切り替えを少なくするために、 Azure 上で構築
本日のデモ環境(RG: SCUGJ40)
本日のデモ環境(RG: SCUGJ40)
本日のデモ環境(RG: DemoClient)
まとめ • Azure RBAC の設定はとても大切 • 意図せず OS へのアクセス権限を付与しないよう 適切なコントロールが必要 • 特に、DataAction が不要な Run Command