Azure Bastionの自動起動停止(新規作成削除)
Azure Bastionには起動停止はありません。その為に課金が継続して掛かります。
仮想マシンを停止していたりアクセスしない時間帯起動しておくことはコストが無駄になります。
停止させて課金を抑えたい所ですが、Azure Bastion自体の起動停止は出来ません。
作成削除するしか課金を抑える手段はありません。
それなら使う度に作成削除しちゃおうという事でAzure Bastion(SKUはStandard)の作成をPowerShellを使ってやってみました。
PowerShellだとネイティブクライアントの有効化が出来なかった(記載時点)ので、REST API(Logic Apps)を使ったBastionの作成削除もやってみました。
PowerShellを使ったAzure Bastion作成、削除
Azure Bastionに関するPowerShellコマンドレット
Azure Bastionに関するPowerShellコマンドレットは4つです。
作成、情報取得、更新、削除になります。
作成時はリソース名、リソースグループ名、ロケーション、仮想ネットワークのリソース情報、パブリックIPのリソース情報、SKUなどを指定します。Portalで作成時と同じ項目になります。
処理 | Azure PowerShell |
作成 | New-AzBastion |
取得 | Get-AzBastion |
更新 | Set-AzBastion |
削除 | Remove-AzBastion |
PowerShellを使ってAzure Bastionを作成する
今回はこのような設定でAzure Bastionを作成してみます。
-
- 設定値
- Bastionホスト名: test-bastion
- SKU:Standard
- リソースグループ名: Test-RG-01
- 場所:米国西部2
- 仮想ネットワーク名:Test-VNET-01
- パブリックIP名:bastion-ip
- 設定値
仮想ネットワークおよびAzure Bastion用のサブネット(サブネット名:AzureBastionSubnet)を準備済みであるで想定で進めます。課金が掛かるパブリックIPとAzure Bastionのリソースを新規作成しています。
Portalを利用したBastionホストの作成はこちら。
Azure Bastionホストを作成 | ||
Get-AzVirtualNetworkを使って仮想ネットワークの情報を取得しています。 New-AzPublicIpAddressでパブリックIPの作成をしています。Bastionの場合パブリックIPのSKUはStandardの必要があります。 New-AzBastionでBastionを作成しています。
|
|
※今回は省略していますがScale Unitの指定も出来ます。デフォルト値設定だったので今回は省略しています。
PowerShellを使ってAzure Bastionを削除する
先ほど作成したAzure Bastionを削除してみます。
課金が掛かるパブリックIPとAzure Bastionのリソースを削除しています。
仮想ネットワークやサブネットはそのまま残しています。
Azure Bastionホストを削除 | ||
Remove-AzBastionを使ってBastionホストを削除しています。 Remove-AzPublicIpAddressでパブリックIPを削除しています。 |
|
※パブリックIPがリソースIDで削除できないようでした。なのでリソースグループ、リソース名を指定して削除しています。
PowerShellを使った場合はネイティブクライアント等を有効化出来ない
PowerShellでAzure Bastionのリソース自体は作成出来るのですが、ネイティブクライアントの有効化等設定出来ない項目が存在します。実際にPortalで作成されたリソースを確認しても有効化されていません。
REST APIを使ってAzure Bastionを作成、削除
Azure BastionのREST API
Azure Bastionに関するREST APIはマイクロソフトで公開されています。
作成更新、リスト表示、ホスト情報の取得、削除等がありBastionの操作に必要なREST APIが揃っています。
REST APIを定期実行させる環境としてLogic Appsを利用
仮想マシンの起動停止と併せて使う事を想定している為、REST APIを定期実行させる必要があります。
今回はAzureネイティブに実行させるという事でLogic Appsを使ってやってみました。
今回はパブリックIPと仮想ネットワーク準備済みである前提で進めます。Logic Apps自体のリソースも事前に準備済みである想定で進めます。
REST API(Logic Apps)を使ってAzure Bastionホストを作成
ロジックアプリデザイナーで設定を進めていきます。
スケジュール設定、変数設定、HTTPのアクションを使ったREST API実行と言う流れになります。
Azure Bastionホストを作成 | |
![]() |
|
トリガーの繰り返しでスケジュール設定を行います。 今回は日本時間15時に開始するようにしています。 |
![]() |
設定値を指定します。
|
![]() |
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
REST APIを実行させる為にはHTTPのアクションを利用します。 | ![]() |
新規作成時にはPUTを使います。 | ![]() |
URIでは作成するBastionホストのリソースIDを設定します。 | ![]() |
ヘッダーのキーにはContent-Typeを設定します。 値にはapplication/jsonを設定します。 |
![]() |
本文には設定値を記載します。 ※コピー貼り付けに関する項目にはproperties.disableCopyPasteを使っています。 |
![]() |
認証にはシステム割り当てマネージドIDを使っています。 ※事前にLogic AppsでマネージドIDを有効化して適切な権限付与を行っておきます。 |
![]() |
ネイティブクライアントの設定状況を確認
ネイティブクライアントが有効化されているかを確認してみます。
ネイティブクライアント有効化確認 | |
ネイティブクライアント サポートが有効化されている事が確認出来ます。 | ![]() |
REST API(Logic Apps)を使ってAzure Bastionホストを削除
作成時と同様にスケジュール設定、変数設定、HTTPのアクションを使ったREST API実行と言う流れになります。
Azure Bastionホストを削除 | |
![]() |
|
HTTPの方法でDELETEを選択します。 削除時にはヘッダーや本文の設定は必要ありません。 |
![]() |
※作成と同じ部分は割愛しています。
最後に
Azure Bastionホストの作成、削除をスケジュール実行する事が出来ました。
仮想マシンの自動起動停止と組み合わせて使う事でコスト削減も可能かと思いました。