Azure Stack Hub で特権エンドポイントを使用する
Azure Stack Hub オペレーターは、ほとんどの日常の管理タスクに管理者ポータル、PowerShell、または Azure Resource Manager API を使用する必要があります。 ただし、あまり一般的でない操作の場合は、Privileged Endpoint (PEP) を使用する必要があります。 PEP は、必要なタスクを実行するのに役立つ十分な機能を提供する、事前構成済みのリモート PowerShell コンソールです。 エンドポイント PowerShell JEA (Just Enough Administration) を使用して、制限されたコマンドレットのセットのみを公開します。 PEP にアクセスし、制限された一連のコマンドレットを呼び出すには、低い特権のアカウントが使用されます。 管理者アカウントは必要ありません。 セキュリティを強化するために、スクリプトは使用できません。
PEP を使用して、次のタスクを実行できます。
- 診断ログの収集 など、低レベルのタスク。
- 展開後のドメイン ネーム システム (DNS) フォワーダーの追加、Microsoft Graph 統合の設定、Active Directory フェデレーション サービス (AD FS) 統合、証明書のローテーションなど、統合システムのデプロイ後のデータセンター統合タスクの多く。
- サポート担当者と協力して、統合システムの詳細なトラブルシューティングのための一時的で高レベルのアクセス権を取得すること。
PEP は、PowerShell セッションで実行するすべてのアクション (およびその対応する出力) をログに記録します。 これにより、操作の完全な透明性と完全な監査が提供されます。 これらのログ ファイルは、今後の監査のために保持できます。
手記
Azure Stack Development Kit (ASDK) では、開発キット ホスト上の PowerShell セッションから PEP で使用できるコマンドの一部を直接実行できます。 ただし、統合システム環境で特定の操作を実行するために使用できる唯一の方法であるため、ログ収集などの PEP を使用して一部の操作をテストする必要がある場合があります。
手記
また、オペレーター アクセス ワークステーション (OAW) を使用して、特権エンドポイント (PEP)、サポート シナリオの管理者ポータル、および Azure Stack Hub GitHub Tools にアクセスすることもできます。 詳細については、「Azure Stack Hub オペレーター アクセス ワークステーション」を参照してください。
特権エンドポイントにアクセスする
PEP は、PEP をホストする仮想マシン (VM) 上のリモート PowerShell セッションを介してアクセスします。 ASDK では、この VM の名前は AzS-ERCS01 です。 統合システムを使用している場合、PEP は 3 つのインスタンスがあり、それぞれが異なるホスト上の VM 内で実行され、耐障害性を確保しています。これらのインスタンスは、プレフィックス-ERCS01、プレフィックス-ERCS02、または プレフィックス-ERCS03 のいずれかです。
統合システムに対してこの手順を開始する前に、IP アドレスまたは DNS を介して PEP にアクセスできることを確認してください。 Azure Stack Hub の初期デプロイ後は、DNS 統合がまだ設定されていないため、IP アドレスによってのみ PEP にアクセスできます。 OEM ハードウェア ベンダーは、PEP IP アドレス 含む AzureStackStampDeploymentInfo という名前の JSON ファイルを提供します。
IP アドレスは、Azure Stack Hub 管理者ポータルでも確認できます。 ポータルを開きます。たとえば、https://adminportal.local.azurestack.external
など。 [リージョン管理] >[プロパティ]選択します。
特権エンドポイントを実行するときに現在のカルチャを en-US
に設定する必要があります。そうしないと、Test-AzureStack
や Get-AzureStackLog
などのコマンドレットは期待どおりに動作しません。
手記
セキュリティ上の理由から、PEP に接続するには、ハードウェア ライフサイクル ホスト上で実行されている強化された VM、または専用のセキュリティで保護されたコンピューター (Privileged Access Workstationなど) からのみ接続する必要があります。 ハードウェア ライフサイクル ホストの元の構成は、元の構成 (新しいソフトウェアのインストールを含む) から変更したり、PEP への接続に使用したりしてはなりません。
信頼を確立します。
統合システムで、管理者特権の Windows PowerShell セッションから次のコマンドを実行して、ハードウェア ライフサイクル ホストまたは特権アクセス ワークステーションで実行されているセキュリティ強化された VM に PEP を信頼されたホストとして追加します。
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '<IP Address of Privileged Endpoint>' -Concatenate
ASDK を実行する場合は、開発キット ホストにサインインします。
ハードウェア ライフサイクル ホストまたは Privileged Access Workstation で実行されている強化された VM で、Windows PowerShell セッションを開きます。 次のコマンドを実行して、PEP をホストする VM でリモート セッションを確立します。
統合システムの場合:
$cred = Get-Credential $pep = New-PSSession -ComputerName <IP_address_of_ERCS> -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US) Enter-PSSession $pep
ComputerName
パラメーターには、IP アドレスまたは PEP をホストするいずれかの VM の DNS 名を指定できます。手記
PEP 資格情報を検証するときに、Azure Stack Hub はリモート呼び出しを行いません。 これを行うには、ローカルに格納された RSA 公開キーに依存します。
ASDK を実行する場合:
$cred = Get-Credential $pep = New-PSSession -ComputerName azs-ercs01 -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US) Enter-PSSession $pep
メッセージが表示されたら、次の資格情報を使用します。
- ユーザー名: CloudAdmin アカウントを、<Azure Stack Hub ドメイン>\cloudadminの形式で指定します。
- パスワード: AzureStackAdmin ドメイン管理者アカウントのインストール時に指定されたものと同じパスワードを入力します。
手記
ERCS エンドポイントに接続できない場合は、別の ERCS VM IP アドレスで手順 1 と手順 2 を再試行してください。
警告
既定では、Azure Stack Hub スタンプは 1 つの CloudAdmin アカウントでのみ構成されます。 アカウントの資格情報が失われたり、侵害されたり、ロックされたりした場合、回復オプションはありません。 特権エンドポイントとその他のリソースへのアクセスが失われます。
自分の費用でスタンプの再デプロイを回避するために、追加の CloudAdmin アカウント を作成することを強くお勧めします。 これらの資格情報は、会社のガイドラインに基づいて文書化してください。
接続すると、環境に応じて、プロンプトが [IP アドレスまたは ERCS VM 名]: PS> または [azs-ercs01]: PS>に変更されます。 ここから、
Get-Command
を実行して、使用可能なコマンドレットの一覧を表示します。コマンドレットのリファレンスについては、Azure Stack Hub の特権エンドポイントのリファレンス で見つけることができます。
これらのコマンドレットの多くは、統合システム環境 (データセンター統合に関連するコマンドレットなど) のみを対象としています。 ASDK では、次のコマンドレットが検証されています。
- Clear-Host
- Close-PrivilegedEndpoint
- Exit-PSSession
- Get-AzureStackLog
- Get-AzureStackStampInformation
- Get-Command
- Get-FormatData
- Get-Help
- Get-ThirdPartyNotices
- Measure-Object
- New-CloudAdminUser
- Out-Default
- Remove-CloudAdminUser
- Select-Object
- Set-CloudAdminUserPassword
- Test-AzureStack
- Stop-AzureStack
- Get-ClusterLog
特権エンドポイントの使用方法
前述のように、PEP は PowerShell JEA エンドポイント です。 強力なセキュリティ層を提供する一方で、JEA エンドポイントを使用すると、スクリプトやタブ補完などの基本的な PowerShell 機能の一部が削減されます。 任意の種類のスクリプト操作を試すと、ScriptsNotAllowed エラーで操作が失敗します。 このエラーは予期される動作です。
たとえば、特定のコマンドレットのパラメーターの一覧を取得するには、次のコマンドを実行します。
Get-Command <cmdlet_name> -Syntax
または、Import-PSSession コマンドレットを使用して、すべての PEP コマンドレットをローカル コンピューター上の現在のセッションにインポートすることもできます。 PEP のコマンドレットと関数は、タブ補完や、より一般的なスクリプト作成と共に、ローカル コンピューターで使用できるようになりました。 Get-Help モジュールを実行して、コマンドレットの手順を確認することもできます。
ローカル コンピューターに PEP セッションをインポートするには、次の手順を実行します。
信頼を確立します。
統合システムで、管理者特権の Windows PowerShell セッションから次のコマンドを実行して、ハードウェア ライフサイクル ホストまたは特権アクセス ワークステーションで実行されているセキュリティ強化された VM に PEP を信頼されたホストとして追加します。
winrm s winrm/config/client '@{TrustedHosts="<IP Address of Privileged Endpoint>"}'
ASDK を実行している場合は、開発キット ホストにサインインします。
ハードウェア ライフサイクル ホストまたは Privileged Access Workstation で実行されている強化された VM で、Windows PowerShell セッションを開きます。 次のコマンドを実行して、PEP をホストする仮想マシンでリモート セッションを確立します。
統合システムの場合:
$cred = Get-Credential $session = New-PSSession -ComputerName <IP_address_of_ERCS> ` -ConfigurationName PrivilegedEndpoint -Credential $cred ` -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
ComputerName
パラメーターには、IP アドレスまたは PEP をホストするいずれかの VM の DNS 名を指定できます。ASDK を実行している場合:
$cred = Get-Credential $session = New-PSSession -ComputerName azs-ercs01 ` -ConfigurationName PrivilegedEndpoint -Credential $cred ` -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
メッセージが表示されたら、次の資格情報を使用します。
ユーザー名: <Azure Stack Hub ドメイン>\cloudadminの形式で CloudAdmin アカウントを指定します。 (ASDK の場合、ユーザー名は azurestack\cloudadmin です)。
パスワード: AzureStackAdmin ドメイン管理者アカウントのインストール時に指定されたものと同じパスワードを入力します。
PEP セッションをローカル コンピューターにインポートします。
Import-PSSession $session
これで、Azure Stack Hub のセキュリティ体制を下げずに、PEP のすべての関数とコマンドレットを使用して、ローカル PowerShell セッションでタブ補完を使用し、通常どおりスクリプトを実行できるようになりました。 楽しんでね!
特権エンドポイント セッションを閉じる
前述のように、PEP は PowerShell セッションで行うすべてのアクション (およびその対応する出力) をログに記録します。 Close-PrivilegedEndpoint
コマンドレットを使用してセッションを閉じる必要があります。 このコマンドレットは、エンドポイントを正しく閉じ、ログ ファイルを保持のために外部ファイル共有に転送します。
エンドポイント セッションを閉じるには:
PEP からアクセスできる外部ファイル共有を作成します。 開発環境では、開発キット ホスト上にファイル共有を作成できます。
次のコマンドレットを実行します。
Close-PrivilegedEndpoint -TranscriptsPathDestination "\\fileshareIP\SharedFolder" -Credential Get-Credential
コマンドレットでは、次の表のパラメーターを使用します。
パラメーター 説明 種類 必須 TranscriptsPathDestination "fileshareIP\sharefoldername" として定義されている外部ファイル共有へのパス 糸 はい 資格情報 ファイル共有にアクセスするための資格情報 セキュアストリング はい
トランスクリプト ログ ファイルがファイル共有に正常に転送されると、PEP から自動的に削除されます。
手記
Exit-PSSession
または Exit
コマンドレットを使用して PEP セッションを閉じるか、PowerShell コンソールを閉じるだけの場合、トランスクリプト ログはファイル共有に転送されません。 これらは PEP に残ります。 次回 Close-PrivilegedEndpoint
実行してファイル共有を含める場合は、前のセッションのトランスクリプト ログも転送されます。 PEP セッションを閉じるには、Exit-PSSession
または Exit
を使用しないでください。代わりに Close-PrivilegedEndpoint
を使用してください。
サポート シナリオ用の特権エンドポイントのロック解除
サポート シナリオでは、Microsoft サポート エンジニアが、Azure Stack Hub インフラストラクチャの内部にアクセスするために特権エンドポイント PowerShell セッションを昇格することが必要になる場合があります。 このプロセスは、非公式に "ガラスを破る" または "PEP のロック解除" と呼ばれることもあります。 PEP セッション昇格プロセスは、2 つのユーザー、2 つの組織認証プロセスの 2 つの手順です。 ロック解除手順は、環境の制御を常に保持する Azure Stack Hub オペレーターによって開始されます。 オペレーターは PEP にアクセスし、次のコマンドレットを実行します。
Get-SupportSessionToken
このコマンドレットは、サポート セッション要求トークン (非常に長い英数字文字列) を返します。 その後、オペレーターは、任意のメディア (チャット、電子メールなど) を介して、要求トークンを Microsoft サポート エンジニアに渡します。 Microsoft サポート エンジニアは、要求トークンを使用して、有効な場合はサポート セッション承認トークンを生成し、Azure Stack Hub オペレーターに送信します。 同じ PEP PowerShell セッションで、オペレーターは認証トークンを入力としてこのコマンドレットに渡します。
unlock-supportsession
cmdlet Unlock-SupportSession at command pipeline position 1
Supply values for the following parameters:
ResponseToken:
承認トークンが有効な場合は、完全な管理機能とインフラストラクチャへの完全な到達可能性を提供することで、PEP PowerShell セッションが昇格されます。
手記
管理者特権の PEP セッションで実行されるすべての操作とコマンドレットは、Microsoft サポート エンジニアの厳密な監督の下で実行する必要があります。 これを行わないと、重大なダウンタイム、データ損失が発生し、Azure Stack Hub 環境の完全な再デプロイが必要になる可能性があります。
サポート セッションが終了したら、上記のセクションで説明したように、Close-PrivilegedEndpoint コマンドレットを使用して、昇格された PEP セッションを終了することが非常に重要です。 PEP セッションが終了すると、ロック解除トークンは無効になり、再び PEP セッションのロックを解除するために再利用することはできません。 昇格された PEP セッションの有効期間は 8 時間です。その後、終了しない場合、昇格された PEP セッションは自動的に通常の PEP セッションにロックバックされます。
特権エンドポイント トークンの内容
PEP サポート セッション要求と承認トークンは、暗号化を利用してアクセスを保護し、承認されたトークンのみが PEP セッションのロックを解除できるようにします。 トークンは、要求トークンを生成した PEP セッションのみが応答トークンを受け入れることを暗号で保証するように設計されています。 PEP トークンには、Azure Stack Hub 環境または顧客を一意に識別できる情報は含まれません。 完全に匿名です。 各トークンの内容の詳細が以下に示されています。
サポートセッション要求トークン
PEP サポート セッション要求トークンは、次の 3 つのオブジェクトで構成されます。
- ランダムに生成されたセッション ID。
- 1 回限りの公開キーと秘密キーのペアを持つ目的で生成された自己署名証明書。 証明書には、環境に関する情報は含まれません。
- 要求トークンの有効期限を示すタイム スタンプ。
その後、要求トークンは、Azure Stack Hub 環境の登録先となる Azure クラウドの公開キーで暗号化されます。
サポートセッション認証応答用トークン
PEP サポート承認応答トークンは、次の 2 つのオブジェクトで構成されます。
- 要求トークンから抽出されたランダムに生成されたセッション ID。
- 応答トークンの有効期限を示すタイム スタンプ。
応答トークンは、要求トークンに含まれている自己署名証明書で暗号化されます。 自己署名証明書は、Azure Stack Hub 環境が登録されている Azure クラウドに関連付けられている秘密キーで復号化されました。