マルチクラウド 担当者コラム
マルチクラウド・Azure
Azure 第34回『やってみようシリーズ ー Azure Cloud Shell を使ってみよう』
Azure でさまざまなリソースを新規作成・設定変更する場合、Azure ポータルの Web サイト画面から GUI を操作して行うことが多いでしょう。
GUI からの操作は設定項目が分かりやすく表示されるので簡単にリソースの作成・変更が行えますが、以下のような問題点もあります。
・作業の記録(証跡)を残すのに手間がかかる
・画面を含めた作業手順書を作成する工数が大きくなりがち
・単純な同じ操作を繰り返し行うのが面倒
このように、GUI での操作は大規模なリソースの作成や更新を組織的に行う場合に課題があります。
Azure Cloud Shell とは
Azure では CUI でリソースの作成や編集が行える機能が用意されており、CUI でのコマンドの入力やスクリプトの実行でさまざまな作業を行えます。
コマンドの実行は PC のコンソール(Power Shell や Bash)からインターネット接続経由で Azure に接続して行えますが、この場合は事前に Azure 用のコマンドセットをインストールしておく必要があります。また、場合によってはファイアウォールの調整が必要となります。
こうした手間を省いて、簡単に Azure の操作を CUI で行えるのが Azure Cloud Shell です。
Azure Cloud Shell は Azure ポータルの Web ページから1クリックで呼び出せる CUI のシェルです。
Azure ポータルの上部にあるアイコン(下図の赤囲み)をクリックするだけで、Power Shell や Bash からの操作が行えます。

Cloud Shell の準備ができていれば、以下のように画面の下部にコマンドが入力できるコンソールが表示されます。

このコンソールで起動しているシェル(上の図では Bash)でコマンドを実行し、リソースの作成や編集を行うことができます。
Cloud Shellは、Microsoft が提供している Azure Linux で動作しています。
Azure Cloud Shell のメリット
Cloud Shell ではCUI での操作を、最小限の事前準備ですぐに利用することができます。
Cloud Shell を利用するメリットは以下のようなものです。
-
アクセスの簡便さ
Azure ポータルや専用 URLから簡単にアクセス可能です。VPN などの特別な仕組みは不要です。 -
セキュリティの確保
接続は HTTPS(TLS)で暗号化され保護されています。また Cloud Shell 内のデータも自動的に二重暗号化されます。 -
作業記録(証跡)の取得
コマンドでの操作なので、実行コマンドやその結果をテキストとして簡単に記録できます。 -
作業の自動化
スクリプトが実行できるので、複雑な作業や繰り返し行う作業を自動化できます。 -
事前構成済みのコマンドとさまざまなツールの事前インストール
Azure の操作に必要な Azure CLI、Azure PowerShell がインストール済みですぐに実行できます。
また Terraform や Ansible、kubectl、Chef Inspec、Puppet Bolt など多くの管理用ツールが事前にインストールされています。dig や vim、emacs などの一般的な Linux ツールも利用できます。 -
持続的なストレージ
Cloud Shell ではユーザーごとに 5 GB の Azure ストレージが利用でき、ファイルを永続的に保存できます。 -
カスタマイズ可能な環境
さまざまな Power Shell モジュールの追加インストールや、Bash での Linux 用のツールのインストール、スクリプトの実行が可能です。
このように、複雑な準備無しに Azure での構築・運用・管理のための柔軟な環境を利用できるのが、Cloud Shell の大きなメリットです。
Azure Cloud Shell の利用準備
Cloud Shell は Azure ポータルにアクセスできればすぐに利用を開始できますが、ユーザーが初めて利用する場合だけ準備のための追加の手順が少し必要です。
サブスクリプションの準備
事前にサブスクリプションに Microsoft.CloudShell リソースプロバイダーを登録する必要があります。これはサブスクリプション単位の設定なので、一度登録すれば次からは不要です。
-
Azure ポータルにサブスクリプションの管理者アカウントでサインインし、サブスクリプションにアクセスして [設定] ? [リソース プロバイダー] を開きます。
-
検索欄に CloudShell と入力して、Microsoft.CloudShell リソースプロバイダーを見つけて選択し、[登録] をクリックします。
※すでに [状態] が [Registered] になっている場合はそのままにします。 -
しばらく待つと、[状態] が [Registered] になります。
以上の手順にて、サブスクリプションで Cloud Shell を利用する準備ができました。
ユーザーごとの準備
次に Cloud Shell を利用するユーザーごとの準備を行います。
-
Cloud Shell を初めて利用するユーザー アカウントで Azure ポータルにサインインして、Cloud Shell のアイコンをクリックします。
-
以下のようなメッセージが表示されます。
これは Cloud Shell を起動する際、既定のシェルとして PowerShell を使うか Bash を使うかの選択です。どちらを選択した場合でも切り替えは簡単に行えます。
ここでは PowerShell を選択して進めます。 -
いずれかのシェルを選択すると、次にサブスクリプションとストレージについて選択する画面が表示されます。
-
[サブスクリプション] は、ドロップダウンリストから自分が利用できるサブスクリプションを選択します。
-
ストレージの選択は以下のような意味を持ちます。
・ストレージアカウントは不要です
Cloud Shell で永続的なファイルを保存することができなくなります。シェルの設定(PowerShell の設定や bash.rc のような設定ファイル)も保存できません。ただしストレージの料金が不要となりますので、追加の費用なしで Cloud Shell を利用できます。
・ストレージアカウントをマウントする
Cloud Shell で永続的なファイルを保存するためのストレージが利用できるようになります。これにより Cloud Shell でファイルの保存やシェルの設定の保存が可能になります。ただしストレージには標準の Azure ストレージの料金がかかります。
ここでは [ストレージアカウントをマウントする] を選択します。 -
サブスクリプションとストレージの選択ができたら、[適用] をクリックします。
-
次にマウントするストレージアカウントを選択する画面が表示されます。いずれかを選択して [次へ] をクリックします。
・[既存のストレージアカウントの選択]
以下の画面で既存のストレージアカウントを選択し、[選択] をクリックします。・[ストレージアカウントの作成を希望する]
以下の画面で作成するストレージアカウント名や共有ファイル名を指定し、[作成] をクリックします。・[ストレージアカウントが作成されます]
ストレージアカウントと共有ファイルが自動的に作成されます。ここではこれを選択します。 -
ストレージアカウントや共有ファイルが作成される場合は、以下のような進行中のメッセージが表示されます。
-
デプロイが完了すると、最初に選択したシェルが起動します。
シェルでは /home/(ユーザー名) がホームディレクトリとなっています。
PowerShell・Bash いずれも、
cd~
でカレントディレクトリをホームディレクトリに切り替えできます。
またツールバーを利用してさまざまな操作を行うことができます。

Cloud Shell の画面をブラウザーの画面全体に広げたい場合は、をクリックしてください。
その他の操作方法については、以下を参照してください。
[設定] - [ユーザー設定のリセット] を選択すると、ユーザーごとの準備で行った選択がすべてリセットされ、最初からやり直すことができます。
Cloud Shell の終了
Cloud Shell の画面を閉じて終了するには、コマンドラインで
exit
を実行するか、ツールバーの をクリックします。
Azure Cloud Shell を利用する
Cloud Shell で PowerShell を使ってリソースグループを作成し、そのリソースグループに仮想ネットワークと仮想マシンを作成する操作を行いましょう。
Cloud Shell で可能な操作とそのコマンドについて詳しくは、以下を参照してください。
・PowerShell の場合
・Bash の場合
リソースグループの作成
まず作成するリソースを格納するリソースグループを作成します。
リソースグループの作成には New-AzResourceGroup コマンドを利用します。
オプションで以下を指定します。
-ResourceGroupName:リソースグループ名(ここでは myResourceGroupVM)、
-Location:作成するリージョン(ここでは japaneast)
New-AzResourceGroup -ResourceGroupName "myResourceGroupVM" -Location " japaneast"

リージョンは表示名ではなく内部的なロケーションで指定する必要があります。表示名とロケーションの対応は、以下のコマンドで確認できます
Get-AzLocation | FT

仮想ネットワークの作成
次に仮想マシンを接続するための仮想ネットワークを作成します。
仮想マシンの接続にはサブネットが必要なので、まずサブネットの構成情報を作成し、その構成情報を含めた仮想ネットワークを作成します。
サブネット構成情報の作成
サブネット構成情報の作成には New-AzVirtualNetworkSubnetConfig コマンドを利用します。
オプションで以下を指定します。
-Name:サブネット名
-AddressPrefix:ネットワークアドレス
作製した構成情報を仮想ネットワークの作成の際に利用するため、New-AzVirtualNetworkSubnetConfig コマンドの結果を変数 $frontendSubnet と $backendSubnet に格納します。
$frontendSubnet = New-AzVirtualNetworkSubnetConfig -Name myFrontendSubnet -AddressPrefix 10.0.0.0/24
$backendSubnet = New-AzVirtualNetworkSubnetConfig -Name myBackendSubnet -AddressPrefix 10.0.1.0/24

仮想ネットワークの作成
仮想ネットワークの作成には New-AzVirtualNetwork コマンドを利用します。
オプションで以下を指定します。
-ResourceGroupName:仮想ネットワークを作成するリソースグループ
-Location:仮想ネットワークを作成するリージョン
-Name:仮想ネットワーク名
-AddressPrefix:ネットワークアドレス
-Subnet:仮想ネットワーク内に作成するサブネットの構成情報
作製した構成情報を仮想ネットワークインターフェースの作成の際に利用するため、コマンドの結果を変数 $vnet に格納します。
$vnet = New-AzVirtualNetwork -ResourceGroupName myResourceGroupVM -Location japaneast -Name myVNet -AddressPrefix 10.0.0.0/16 -Subnet $frontendSubnet, $backendSubnet

仮想ネットワークインターフェースの作成
仮想ネットワークが作成できたら、仮想マシン用の仮想ネットワークインターフェースを作成します。
仮想マシンがインターネットと通信するためにパブリック IP アドレスが必要となるので、まずパブリック IP アドレスを作成し、それが割り当てられた仮想ネットワークインターフェースを作成します。
パブリック IP アドレスの作成
パブリック IP アドレスを作成するには New-AzPublicIpAddress コマンドを利用します。
-AllocationMethod オプションで IP アドレスの割り当て方法を指定します
その他のオプションはこれまでのコマンドと同様です。
パブリック IP アドレスは Basic SKU が 2025 年 9 月 30 日に廃止されるため、新規で作成する場合は Standard SKU での作成が必要です。Standard SKU では IP アドレスの割り当て方法として「静的」のみサポートされるため、-AllocationMethodオプションでは Static を指定する必要があります。
作製したパブリック IP アドレスを後で利用するため、コマンドの結果を変数 $pipに格納します。
$pip = New-AzPublicIpAddress -ResourceGroupName myRGNetwork -Location japaneast -AllocationMethod Static -Name myPublicIPAddress

仮想ネットワークインターフェースの作成
仮想ネットワークインターフェースの作成には New-AzNetworkInterface コマンドを利用します。
オプションで以下を指定します。
-SubnetId:仮想ネットワークインターフェースを接続するサブネット
-PublicIpAddressId:パブリック IP アドレス
その他のオプションはこれまでのコマンドと同様です。
-SubnetId では仮想ネットワークとそれに含まれるサブネットをまとめて指定します。
ここでは作成した仮想ネットワーク($vnet)の1番目のサブネット(Subnets[0])の ID を指定するため、$vnet.Subnets[0].Id という値を指定しています。これで myFrontendSubnet サブネットに仮想ネットワークインターフェースが接続されます。
-PublicIpAddressId ではパブリック IP アドレスの ID を指定するため、$pip.Id という値を指定しています。
$frontendNic = New-AzNetworkInterface -ResourceGroupName myRGNetwork -Location japaneast -Name myFrontend -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id

仮想マシンの作成
仮想ネットワークインターフェースまで作成できたら、仮想マシンを作成します。
Cloud Shell での仮想マシンの作成では GUI で作成する場合と同様、ここまで作成したリソース以外に仮想マシンにインストールされるオペレーティングシステム(仮想マシンイメージ)や仮想ディスク、タグ、拡張機能などの設定を行うことができます。
今回は実際に仮想マシンの作成を行う手順を分かりやすく解説するために、これらの明示的な設定は省略し、既定値で仮想マシンを作成しています。
管理者資格情報の指定
仮想マシンの作成の際にオペレーティングシステムの管理者アカウントの資格情報を指定する必要があります。この際にパスワードを平文で指定できないので、以下のコマンドで資格情報のオブジェクトを作成しておきます。
$cred = Get-Credential

Get-Credential コマンドを実行すると、ユーザー名とパスワードを順に求められます。仮想マシンの管理者に設定したいユーザー名とパスワードを入力してください。入力した内容は $cred 変数に格納されます。
パスワードは以下の複雑さの要件を満たす必要があります。
仮想マシンの作成
仮想マシンの作成には New-AzVM コマンドを利用します。
オプションで以下を指定します。
-Credential:オペレーティングシステムの管理者アカウントの資格情報
-PublicIpAddressName:パブリック IP アドレス名
-Size:仮想マシンのサイズ
-SubnetName:サブネット名
-VirtualNetworkName:仮想ネットワーク名
その他のオプションはこれまでのコマンドと同様です。
New-AzVM -Credential $cred -Name myFrontend -PublicIpAddressName myPublicIPAddress -ResourceGroupName myRGNetwork -Location "japaneast" -Size Standard_D2s_v3 -SubnetName myFrontendSubnet -VirtualNetworkName myVNet
実行すると仮想マシンのデプロイが開始され、進行状況が表示されます。

デプロイが完了すると、以下のように作成された仮想マシンの情報が表示されます。

作製した仮想マシンは Azure ポータルの画面でも確認できます。


既定値の Windows Server 2022 Datacenter Azure Edition・Premium SSD LRS 128 GiB(P10)で仮想マシンが作成されています。
仮想マシン以外のリソースも Azure ポータルで表示されます。

このように、Cloud Shell で作成した仮想マシンなどのリソースは、GUI で作成したリソースと同様に表示・管理することができます。また逆に Azure ポータルの GUI で作成したリソースを Cloud Shell から管理することもできます。
ここで作成した仮想マシンでは明示的な接続許可がないため、外部からのリモート接続が行えません。ポート 3389 の受信の許可などのネットワークセキュリティーグループ(NSG)を作成して仮想ネットワークインターフェースやサブネットに割り当てることで、リモート接続が行えるようになります。
Cloud Shell で NSG の構成と割り当てを行う方法については以下を参照してください。
まとめ
Cloud Shell で仮想ネットワークや仮想マシンなどのリソースを作成する基本的な手順を試すことができました。実際にはより多くの設定項目が必要となりコマンドやその実行手順も複雑になりますが、同じ作業を繰り返し行う場合や作業の正確な記録(証跡)を残す場合や作業をツールやスクリプトで自動化したい場合は、Cloud Shell を利用するメリットが大きくなります。
普段 Azure ポータルでの GUI 操作を行っている方は、ぜひ Cloud Shell でのコマンド操作も試してみてください。
Azure の利用の開始やAzure への移行、サブスクリプションの購入、Azure でのシステム構築についてのご相談は、お気軽に当社担当営業までお声がけください。
マルチクラウドの記事
- AWS 第36回『セキュリティの優先度低くなっていませんか? ーAWS WAFのご紹介ー』
- AWS 第35回『取り扱い開始!Amazon Connect』
- Azure 第34回『やってみようシリーズ ー Azure Cloud Shell を使ってみよう』
- Azure 第33回『クセは強いが使いこなせば超有能!Copilot in Azure を自社の専属サポートにしよう』
- Azure 第32回『Azure Arc でオンプレミスサーバーを管理・監視』
- AWS 第34回『快適なパッチ管理をーPatch Managerー』
