Linux(Azure VM)の認証をAzure ADのアカウントで行う

Azure Active Directory 認証を使用して Azure の Linux 仮想マシンにログインする機能がプレビュー(2021年5月現在)で提供されています。

AAD認証を使用して Azure の Linux 仮想マシンにログインする(MS公式サイト)

この機能を利用すると、Linux OS(Azure Virtual Machines)へのログインをAzure Active Directory(AAD)のユーザーで行う事が出来ます。

OSのローカルユーザーの管理をAzure Active Directory(AAD)に任せる事が出来る為に管理が非常に楽になりますし、2段階認証を利用する事も可能になります。

今回は、Cent OS7.7(Azure VM)の認証をAzure Active Directory(AAD) のユーザーでする為の設定、ログイン確認、管理者ユーザーと一般ユーザーの違いまで確認してみました。

※プレビュー段階の機能になりますので、利用にあたっては充分にご注意ください。

スポンサーリンク

事前準備

Cent OS7.7のAzure VM(仮想マシン)を準備する

まず最初にCent OS7.7の仮想マシンを準備します。Azure Portalで作成するとAzure Active Directoryという項目にあるので確認してみます。

※実際の手順の抜粋になります。なお、Cent OSは7と6のみがサポートされているそうです。(2021年5月現在)

VM作成手順

Azure PortalでVirtual Machinesのメニューを選択し、追加をクリックします。

仮想マシンの作成画面になります。

今回は仮想マシン名をuser-login-test-01とし、Cent OS 7.7のイメージを選択しています。

※ディスクやネットワークは環境に合わせて選択下さい。

管理の画面になります。ここにAzure Active Directoryという項目がありますが、LinuxVMの場合はアクティブになりません。

ここでインストールは出来ず、後で拡張機能を個別でインストールする形になります。その為アクティブで無くても問題ないようです。

他の項目は環境に合わせて適時設定し仮想マシンを作成します。

Azure Active Directoryでユーザーを作成する

Azure Active Directoryで確認用のユーザーを作成します。今回は管理者と一般ユーザーの2種類作成しています。

      • 管理者権限ユーザー(kanrisha-user-01@xxxxx.xxxxx.com)
      • 一般ユーザー権限ユーザー(ippan-user-01@xxxxx.xxxxx.com)

AAD側では管理者、一般ユーザーで作成方法は変わりません。Azure VM側のアクセス制御 (IAM)で実施します。

ユーザー作成手順
Azure Active Directoryで新しいユーザーを選択し、ユーザー追加します。

管理者権限ユーザーを作成します。名前はkanrisha-user-01としています。

新しいユーザー作成でユーザー名、名前を入力、作成をクリックします。

※パスワードはログイン時必要になります。コピーして保管しておきます。

一般権限ユーザーを作成します。名前はippan-user-01としています。

新しいユーザー作成でユーザー名、名前を入力、作成をクリックします。

※パスワードはログイン時必要になります。コピーして保管しておきます。

ユーザー作成が終わると2ユーザー作成されている事が確認出来ます。

Azure CLIをインストールしておく必要があります

拡張機能インストール時にAzureCLIを使用します。Azure CLIについてはこちらを参照願います。

Linux OSの認証にAzure ADユーザ-を使う為の設定

拡張機能のインストールとアクセス制御 (IAM)付与が必要になります。なお、Azure VMからインターネットへの接続が許可されている必要があります。

Azure AD ログイン VM 拡張機能(AADLoginForLinux)をインストール

Azure ADログイン用の拡張機能である、AADLoginForLinuxをインストールします。Azure Portalで仮想マシンの拡張機能を確認しても表示されません。Azure CLIでのインストールが必要になります。

拡張機能追加手順

Azure CLIで仮想マシン拡張機能追加のコマンドを実行します。

PS C:\>az vm extension set –publisher Microsoft.Azure.ActiveDirectory.LinuxSSH –name AADLoginForLinux –resource-group リソースグループ名 –vm-name VM名

Azure CLIのコマンドはMS社公式サイトに記載されております。

成功するとメッセージが表示されます。nameに拡張機能名(AADLoginForLinux)

provisioningStateにSucceededが表示されます。

{
“id": “/subscriptions/<中略>/virtualMachines/VM名/extensions/AADLoginForLinux",
“name": “AADLoginForLinux",
“provisioningState": “Succeeded",
“publisher": “Microsoft.Azure.ActiveDirectory.LinuxSSH",
“type": “Microsoft.Compute/virtualMachines/extensions",
“typeHandlerVersion": “1.0",
“typePropertiesType": “AADLoginForLinux"
}

Azure Portalで拡張機能を確認すると追加されているのが分かります。

Azure VMへ権限付与

AADユーザーでログインするユーザー権限を付与する必要があります。割り当てる権限種別は2種類あります。

      • 仮想マシンの管理者ログイン
        • OSへログイン後、管理者権限を持つことが出来る
      • 仮想マシンのユーザー ログイン
        • OSへログイン後、一般ユーザーとなる

※Azure VMの所有者であってもAADユーザーでログインする為には、仮想マシンへのログイン権限を個別で割り当てる必要があります。

ロール割り当て手順
仮想マシンのメニューでアクセス制御(IAM)を選択します。ロールの割り当ての追加をクリックします、。

管理者権限ユーザーの設定を行います。

ロールの割り当て追加が表示されます。役割に仮想マシンの管理者ログインを選択し、先ほど作成したユーザーを選択します。

管理者権限なので、kanrisha-user-01を選択しています。

保存をクリックして権限付与を完了します。

一般ユーザー権限の設定を行います。

ロールの割り当て追加が表示されます。役割に仮想マシンのユーザーログインを選択し、先ほど作成したユーザーを選択します。

管理者権限なので、ippan-user-01を選択しています。

保存をクリックして権限付与を完了します。

アクセス権限(IAM)のロールの割り当てを見ると、追加されている事が分かります。

Azure AD認証を利用してAzure VM(Linux OS)へログイン

一般ユーザー(仮想マシンのユーザーログインロールの場合)でログイン

最初に一般ユーザー権限でログインしてみます。

AADのユーザー名がの大文字小文字関わらず、Linuxへログイン時はすべて小文字にしないとエラーになります。

      • AADのユーザー名:User01@xxxxx.com,USER01@xxxxx.com等
      • Linuxログイン時のユーザー名:user@xxxxx.com
ログイン手順(確認含む)
SSHコマンドでAzure VMにログインします。

PS C:\>ssh -l ippan-user-01@xxxxx.xxxxx.com VMのIPアドレス
This feature is now deprecated. Learn more at https://aka.ms/AADSSHLogin
When you sign in, verify the name of the app on the sign-in screen is “Azure Linux VM Sign-in" and the IP address of the target VM is correct. the IP address of the target VM is corre

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXXXX to authenticate. 

Press ENTER when ready.

SSHコマンド実行時に表示されているURLへアクセスします。

コードの入力画面が表示されます。メッセージに表示されているコードを入力します。

サインイン画面が表示されます。ユーザー名を入力します。今回の場合はippan-user-01@xxxxx.xxxxx.comを入力します。

ユーザーのパスワードを入力します。

※初回ログイン時の場合は、パスワード変更画面が表示されるケースもありますので、その場合は適時変更します。

サインイン完了画面が表示されます。

SSHコマンド実行したコンソール画面に戻りエンターをクリックします。

そうすると、SSHでログイン出来ている事が分かります。

idコマンドでuid、gidを確認してみます。ユーザーユーザー個別になっている事が分かります。(AADのグループは引き継がれません。)

[ippan-user-01@XXXXX.XXXXX.com@user-login-test-01 ~]$ id
uid=20801XX(ippan-user-01@XXXXX.XXXXX.com.com) gid=20801XX(ippan-user-01@XXXXX.XXXXX.com) groups=20801XX(ippan-user-01@XXXXX.XXXXX.com) 

sudoコマンドでrootになれるかどうか確認してみます。sudoコマンド実行時にはパスコードの確認を行う必要があります。一般ユーザーではsudoersファイルに無いという事でエラーになりました。

[ippan-user-01@XXXXX.XXXXX.com@user-login-test-01 ~]$ sudo su –

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

This feature is now deprecated. Learn more at https://aka.ms/AADSSHLogin
When you sign in, verify the name of the app on the sign-in screen is “Azure Linux VM Sign-in" and the IP address of the target VM is correct.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXXXX to authenticate.
ippan-user-01@XXXXX.XXXXX.com is not in the sudoers file. This incident will be reported.

管理者権限ユーザー(仮想マシンの管理者ログインロールの場合)でログイン

管理者権限ユーザーでログインしてみます。

ログイン手順(確認含む)
SSHコマンドでAzure VMにログインします。コードの入力等は一般ユーザーと同様に実施します。

PS C:\>ssh -l kanrisha-user-01@xxxxx.xxxxx.com VMのIPアドレス
This feature is now deprecated. Learn more at https://aka.ms/AADSSHLogin
When you sign in, verify the name of the app on the sign-in screen is “Azure Linux VM Sign-in" and the IP address of the target VM is correct. the IP address of the target VM is core

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXXXX to authenticate. 

Press ENTER when ready.

ログイン後、idコマンドでuid、gidを確認してみます。
一般ユーザーの場合と違い、wheelグループ、aad_adminsグループに追加されている事が分かります。

[kanrisha-user-01@XXXXX.XXXXX.com@user-login-test-01 ~]$ id
uid=8032XX(kanrisha-user-01@XXXXX.XXXXX.com) gid=8032XX(kanrisha-user-01@XXXXX.XXXXX.com) groups=8032XX(kanrisha-user-01@XXXXX.XXXXX.com),10(wheel),1001(aad_admins)

sudoコマンドでrootになれるかどうか確認してみます。sudoコマンド実行時にはパスコードの確認を行う必要があります。今回はrootになれる事が確認出来ました。

[kanrisha-user-01@XXXXX.XXXXX.com@user-login-test-01 ~]$ sudo su –

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

This feature is now deprecated. Learn more at https://aka.ms/AADSSHLogin
When you sign in, verify the name of the app on the sign-in screen is “Azure Linux VM Sign-in" and the IP address of the target VM is correct.

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXXXX to authenticate.
[root@user-login-test-01 ~]#

sudo権限はどうなっているのか

/etc/sudoers.d配下に、aad_adminsというファイルが出来ており、その中でaad_admins権限のユーザーに権限付与されている事が分かります。またグループにもaad_adminsが追加されている事が分かります。

[root@user-login-test-01 sudoers.d]# cat /etc/sudoers.d/aad_admins
%aad_admins ALL=(ALL) NOPASSWD:ALL

[root@user-login-test-01 ~]# grep aad_admins /etc/group
aad_admins:x:1001:

ユーザーのグループ情報は引き継がれないですが、ユーザー管理をAzure Active Directory任せに非常に便利なのではないかと思いました。

公開鍵認証のAzure VM作成はこちら。