【Azure】Azure CLI 2.0を使用したAzureへのログイン方法まとめ

スポンサーリンク

Azure CLI 2.0が2017/2/27にGAしました。
本記事ではAzure CLI 2.0を使用したAzureへのログイン方法をまとめたいと思います。
Azureは日本語のドキュメントが出るのが遅く、また内容が分散していて分かりづらいと感じますので、同じように感じる人の参考になれば幸いです。

<目次>

Azure CLI 2.0ログイン方法

ARM(Azure Resource Manager)モデルでは以下の3つの方法でログインすることが可能です。

  1. 対話形式
  2. ユーザー名とパスワードによる Azure ログイン
  3. サービス プリンシパルによる Azure ログイン

「対話形式」のログインは特に難しいことがないため本記事では取り扱いません。
本記事では「ユーザー名とパスワードによる Azure ログイン」と「サービス プリンシパルによる Azure ログイン」を利用してログインする方法をまとめます。

ユーザー名とパスワードによる Azure ログイン

なぜかマイクロソフトのドキュメントには記載がないのですが、以下のように-u-pオプションをつけることで煩わしいブラウザのコード入力画面が立ち上がらずログインすることが可能です。

az login -u test@contoso.com -p contosoweb

2017/04/23追記
※MicrosoftアカウントとMFAが有効になっているアカウントでは上記は利用できません。

サービス プリンシパルによる Azure ログイン

エンタープライズの環境では、Azure ADに自動化用のユーザーを作成することが難しいことがあります。
ユーザーを払い出した場合でも、パスワードポリシーによっては定期的にパスワードの変更が必要なため、スクリプトで使用するパスワードを変更する手間が発生してしまいます。 サービスプリンシパルによるログイン方法を使用すれば、新たにユーザーを作成する必要がありません。

また、こちらを使用する用途としてはRBACを利用してユーザーアカウントとは異なるRBACをで操作したいというケースに有効です。
さて、それでは実際にサービス プリンシパルを使用して Azure ログインしてみましょう。

1.まずはAzure CLIでログインします。

az login

ログインするユーザーの権限には注意が必要です。
サービスプリンシパルを作成するにはAzure Active ADと Azure サブスクリプションの両方で適切な権限が必要です。
もしこれから実行するコマンドが上手く行かなかった場合、まずは権限の確認をしてみてください。
確認する項目、内容は以下にまとまっています。

docs.microsoft.com

2.次にサービスプリンシパルを作成します。

az ad sp create-for-rbac --name "enjoymylife" --role contributor

権限に問題なければ以下のような標準出力が得られるはずです。
※実際の値から変更しています。

{
  "appId": "xxxxxxxx,
  "displayName": "enjoymylife",
  "name": "http://enjoymylife",
  "password": "yyyyyyyy",
  "tenant": "zzzzzzzz"
}

ちなみにRoleで与えることができる権限は以下の3種類です。

Role 説明
owner 全てのリソースを作成可能。
contributor 全てのリソースを作成可能。ただし、他のユーザーへのアクセス権限付与不可能。
reader 既存リソースの表示のみ可能。

詳しくは以下を参照してください。

docs.microsoft.com

3.最後に作成したサービスプリンシパルでAzrueにログインします。

az login --service-principal -u "http://enjoymylife" -p "yyyyyyyy" --tenant "zzzzzzzz"

問題なくログインできると以下の標準出力が得られます。
※実際の値から変更しています。

[
  {
    "cloudName": "AzureCloud",
    "id": "aaaaaaaa",
    "isDefault": true,
    "name": "bbbbbbbb",
    "state": "Enabled",
    "tenantId": "zzzzzzzz",
    "user": {
      "name": "http://enjoymylife",
      "type": "servicePrincipal"
    }
  }
]

まとめ

今回はAzure CLI2.0のログイン方法についてまとめました。
筆者はMSのドキュメントを読み解くのが苦手なのですが、同じく苦手な人の参考になれば幸いです。