Azure

Linux仮想マシンにAzure ADユーザーでログインする

はじめに

仮想マシンはAzure ADと連携してユーザー管理を行える機能があります。あまり使われている機能ではないと思いますが、ユーザー管理をすべてAzureADに任せている場合、複数の仮想マシンの管理などでは、個々にユーザーを設定する必要がなく利用できるシーンは多いと思います。

設定

設定方法は以下を参照します。

Microsoft Entra ID と OpenSSH を使用して Azure の Linux 仮想マシンにサインインする - Microsoft Entra ID | Microsoft Learn
Microsoft Entra ID と OpenSSH を使用して Azure の Linux 仮想マシンにサインインする - Microsoft Entra ID | Microsoft Learn

Microsoft Entra ID と OpenSSH による証明書ベースの認証を使用して、Linux が実行されている Azure VM にサインインする方法について説明します。

docs.microsoft.com

Azure ADでログインするにチェックを入れます。作成時の設定はこれだけです。自動的にマネージドIDが有効化されます。

ロールの割り当て

ログインするユーザーには仮想マシンにアクセスするためのロールを割り当てます。

テスト用ユーザ:vmuser1@xxxxxxxxxxx.onmicrosoft.com

ロールの割り当ては仮想マシンではなくリソースグループに割り当てます。

間違った間合いには下記のように失敗したエラーを返します。

$ az ssh vm -n vm1 -g vm1_group
(AuthorizationFailed) The client 'vmuser1@xxxxxxxxxxx.onmicrosoft.com' with object id 'xxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' does not have authorization to perform action 'Microsoft.Network/networkInterfaces/read' over scope '/subscriptions/fa4dc6d1-abc7-4363-8d47-36340ae168e2/resourceGroups/vm1_group/providers/Microsoft.Network/networkInterfaces/vm1119_z1' or the scope is invalid. If access was recently granted, please refresh your credentials.
Code: AuthorizationFailed
Message: The client 'vmuser1@xxxxxxxxxxx.onmicrosoft.com' with object id 'xxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' does not have authorization to perform action 'Microsoft.Network/networkInterfaces/read' over scope '/subscriptions/fa4dc6d1-abc7-4363-8d47-36340ae168e2/resourceGroups/vm1_group/providers/Microsoft.Network/networkInterfaces/vm1119_z1' or the scope is invalid. If access was recently granted, please refresh your credentials.

ロールを割り当てます。

  • 仮想マシンの管理者ログイン

ログイン

Azure CLIでログインします。この時のログインユーザーはvmuser1@xxxxxxxxxxx.onmicrosoft.comです。

$ az login

ログイン後に対象の仮想マシンに接続します。

$ az ssh vm -n vm1 -g vm1_group
The authenticity of host '20.51.206.132 (20.51.206.132)' can't be established.
ED25519 key fingerprint is SHA256:5RdRUB2v7NGwzEtr7ONX3aV80wOlUCWGF+bPz6+Ppaw.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.15.0-1017-azure x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

System information as of Tue Sep 6 13:12:55 UTC 2022

System load: 0.0 Processes: 103
Usage of /: 5.5% of 28.89GB Users logged in: 0
Memory usage: 13% IPv4 address for eth0: 10.2.0.4
Swap usage: 0%

30 updates can be applied immediately.
21 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

 

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

vmuser1@xxxxxxxxxxx.onmicrosoft.com@vm1:~$

以上のように簡単に接続できます。

ユーザーの権限

仮想マシンに割り当てるロールは以下のどちらかになります。

  • 仮想マシンの管理者ログイン
  • 仮想マシンのユーザーログイン

これらの違いは管理者になれるかどうかです。

以下は、sudoコマンドを実行した場合の違いです。

  • 仮想マシンの管理者ログイン
vmuser1@xxxxxxxxxxx.onmicrosoft.com@vm1:~$ sudo -i
root@vm1:~#
  • 仮想マシンのユーザーログイン
vmuser1@xxxxxxxxxxx.onmicrosoft.com@vm1:~$ sudo -i
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code HAHEGR933 to authenticate.
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 VM is correct.
vmuser1@xxxxxxxxxxx.onmicrosoft.com is not in the sudoers file. This incident will be reported.

このようにアクセス権に違いが出てきます。

これらを利用して適切なアクセス権を与えます。

まとめ

仮想マシンはAzure ADを介して接続することが可能です。これは運用管理のユーザー管理を効率的に行えるだけでなくセキュアなログインを実現する方法の一つです。

-Azure
-,