1
3

More than 1 year has passed since last update.

Azure PowerShellを使ってログインする

Posted at

Azure PowerShellを使ってログインする

ゴール

  • Azure PowerShellを使用する目的、できることを知る
  • Auzre PowerShellのインストール方法を知る
  • Azure PowerShellを使用してログイン、ログアウトの方法を知る

この記事について

この記事は、Microsoftの公式ドキュメントをもとに実際に試した際に、調べたことをまとめました。
手順やコマンドは基本的に同じものを使用しており、記事内にリンクを掲載します。

用語

Azure PowerShell PowerShellからAzureへアクセスするためのPowerShellコマンド群のこと。
Az PowerShell Azure PowerShellのひとつでAzモジュールを使用する。こちらの利用が推奨されている。
AzureRM PowerShell Azure PowerShellのひとつでAzureRMモジュールを使用する。 2024/2/29に廃止される。
Azure CLI クロスプラットフォームなCUIツール。 Windows/macOS/Linuxにインストールでき、シェルもPowerShell/Cmd/Bashを選択できる。
Azure Cloud Shell Azure PowerShellとAzure CLIがインストールされたVMのこと。ブラウザからアクセスすることができ、起動のたびに環境が作成される。利用するにはストレージの用意が必要。
サービスプリンシパル Azureリソースへアクセスするための権限を定義したIDのこと。スクリプトなどでアクセスするときに、ログインをせずにこれを使用してアクセスができる。
テナント Azureのアカウントと同じような概念のこと。
サブスクリプション Azureの契約単位のこと。この単位ごとにコストが計算され、請求される。

Azure PowerShellとは

PowerShellからAzureへアクセスするためのコマンド群のこと。
例えば、あるリソースの情報を閲覧したり新たに作成するようなときにブラウザからAzureポータルへにアクセスすること、つまりGUIでの操作は誰もが実施しているはず。
この方法以外にもCUIからアクセスする方法があり、それがAzure PowerShellというツールで提供がされている。

CUIを使う目的は、スクリプトに組み込み操作を自動化することがもっとも大きいと考えている。
人間が操作する必要がないような定型処理を行うときや、Azureリソースの情報を使用して後続処理をしたいとき、GUIでは自動化が難しいがCUIであればそれが可能となる。
また、画面操作を誤ることがなくなり定義された処理を確実に実行することができる。

  • CUIでAzureリソースにアクセスができる
  • 定型処理をスクリプト化できる
  • 操作が確実に実行される

公式ドキュメントで概要から用法と例まで解説されています。
Azure PowerShell のドキュメント

AzureのCUI系ツールの違い

AzureのCUI系ツールはいくつか似た名前のものがあるので、整理する。

Azure PowerShell と Azure CLI

AzureのCUIツールとして、この2種類がある。
両者の機能の差は公式では明言されておらず、利用状況を考慮し使用するツールを採用すればよいとあるため、どちらを利用しても同等のことは可能だと思われる。

適切な Azure コマンド ライン ツールを選択する

Azure PowerShell Azure CLI
環境 Windows/macOS/Linux Windows/macOS/Linux
シェル PowerShell PowerShell/Cmd/Bash
コマンド 動詞-名詞
e.g.) Connect-AzAccount
az <action>
e.g.) az login
構文 PowerShell Bashに近い

個人的には以下のように使い分けする。

  • Windowsのクライアントから手動操作したい場合は、Azure PowerShellを使用する
  • Linux系VMでスクリプトに組み込む場合は、Azure CLIを使用する

Az PowerShell と AzureRM PowerShell

同じAzure PowerShellと呼ばれているが、コマンド名も異なり両者は異なる。
AzureRM PowerShellはすでに廃止が決定されているため、Az PowerShellを使用することを推奨。

  • Az PowerShellは、[動詞]-Az[名詞]という名前のコマンド。
  • AzureRM PowerShellは、[動詞]-AzureRm[名詞]という名前のコマンド。

Azure Cloud Shell

上記の実行環境のことで、CUIのツールそのものではない。
ポータルから起動でき、ブラウザ上でコマンドを実行することができる。

AzurePowerShell_CloudShell.png

Azure PowerShellのインストール

ここではWindowsのクライアントPCへのインストール方法を想定する。
PowerShellのコマンドラインからのインストールと、MSIインストーラからインストールする2つの方法がある。

コマンドラインからのインストールは環境によってはアクセス制限がかかっていることもあり、インストーラをダウンロードする方法のほうが簡単な場合もあるが、どちらも同じであるため好みで決めてよい。
公式ドキュメントに説明があるので、説明は省略。

Azure PowerShell をインストールする方法

インストール結果の確認

PS C:\Users\user> Get-InstalledModule -Name Az

Version    Name                                Repository           Description                                                                                                                
-------    ----                                ----------           -----------                                                                                                                
9.7.1      Az                                  https://www.power... Microsoft Azure PowerShell - Cmdlets to manage resources in Azure. This module is compatible with PowerShell and Windows...

PS C:\Users\user> 

対話形式でログインする

ログイン

Connect-AzAccountコマンドを実行すると画面が表示されるので、ログインする。

AzurePowerShell_Login.png

PS C:\Users\user> Connect-AzAccount

Account         SubscriptionName TenantId                             Environment
-------         ---------------- --------                             -----------
user@mail.co.jp subscription-1   xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxxx AzureCloud 
PS C:\Users\user> Get-AzContext -ListAvailable

Name                                     Account             SubscriptionName         Environment          TenantId                            
----                                     -------             ----------------         -----------          --------                            
subscription-1 (xxxxxxxx-xxxx-xxxx-xx... user@mail.co.jp     subscription-1           AzureCloud           xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

ログアウト

PS C:\Users\user> Disconnect-AzAccount

Id                    : user@mail.co.jp
Type                  : User
Tenants               : {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
Credential            : 
TenantMap             : {}
CertificateThumbprint : 
ExtendedProperties    : {...}

サービスプリンシパルを使ってログイン

上記は対話形式でのログインをしているので、画面上でユーザ/パスワードの入力が伴う。
しかしスクリプトで実行するのであればスクリプト内でログイン処理も行いたい。その方法のひとつに、サービスプリンシパルというIDを発行しておくものがある。

Azure PowerShell を使用してサインインする
Azure PowerShell で Azure サービス プリンシパルを作成する

サービスプリンシパルの作成

まず、ログインした状態でNew-AzADServicePrincipalによってサービスプリンシパルを作成する。
戻り値のMicrosoftGraphServicePrincipal型から、次の情報を保存しておく。

AppId ユーザ名に相当する
PasswordCredentials.SecretText パスワードに相当する
PS C:\Users\user> $sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
PS C:\Users\user> $sp.AppId
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

PS C:\Users\user> $sp.PasswordCredentials.SecretText
xxxxxxxxxxxxxxxxxxxxxxxxxxx           #パスワードが平文で表示される。

パスワードを発行したあとは二度と閲覧することができないため、保管する必要があります。

New-AzADServicePrincipal リファレンス

テナントIDの取得

ログイン時にサービスプリンシパルを作成したテナントを指定するため、テナントIDを事前に取得する。
テナントはAzureのアカウントと同じような概念で、ログイン先のAzureアカウントを指定すると考えると良いと思う。(厳密には異なるかもしれないです)
Azure ADとテナントは1:1の関係となるらしい。

PS C:\Users\user> $tenantId = (Get-AzContext).Tenant.Id
PS C:\Users\user> $tenantId
aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa

ここまで完了したら、Disconnect-AzAccountでログアウトしてよい。

スクリプトでログイン処理

ログアウトした状態で、サービスプリンシパル、テナントID次のように指定すると、ログインが可能。

$user サービスプリンシパルで作成した AppId
$password サービスプリンシパルで作成した PasswordCredentials.SecretText
$tenantId テナントID
$SecureStringPwd = $password | ConvertTo-SecureString -AsPlainText -Force;
$pscredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $SecureStringPwd;
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId;


Account                              SubscriptionName TenantId                             Environment
-------                              ---------------- --------                             -----------
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx                  aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa AzureCloud 

サービスプリンシパルの確認

Azure Active Directoryアプリの登録でサービスプリンシパルを確認することができる。
今回作成したサービスプリンシパルには権限の範囲を与えていないため、実際に使用するにはその設定をしたうえで権限のコントロールをする。

AzurePowerShell_AzureAD.png

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3