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

2021-05-17Active Directory,Azure,Virtual Machine

AzureではAzure Active Directory(Azure AD)のユーザーを使ってOSの認証を行う事が出来ます。
このAzure ADユーザーを使ったOSのローカルユーザー認証はLinux仮想マシンにも提供されています。

OSのローカルユーザーの管理をAzure ADと統合する事が出来る事でユーザー管理が楽になります。
それだけではなくOSユーザー認証に2段階認証を利用する事も可能になります。

今回はCent OS7.9の仮想マシンを例に、OSのユーザー認証をAzure ADユーザーで行う為の設定からログイン確認までやってみました。
管理者ユーザーと一般ユーザーに分けて権限付与し、それぞれの違いについて確認してみました。

確認は公式サイトを参考に進めています。

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

スポンサーリンク

Linuxの仮想マシンでAzure ADユーザーログインを有効化

仮想マシンデプロイ時にAzure ADユーザーでログインの許可設定が必要になります。
仮想マシンデプロイ後に追加で設定する事も可能です。デプロイ後の設定方法は次の章で紹介してます。

サポートされるLinux ディストリビューション

Azure ADユーザーでの認証がサポートされているLinux ディストリビューションは公式サイトに記載があります。

サポートされている Linux ディストリビューションと Azure リージョン(MS公式サイト)

CentOSであればCentOS 7とCentOS 8がサポートされています。

仮想マシンデプロイ時にAzure ADユーザーログイン許可設定

Cent OS7.9の仮想マシンをデプロイします。
仮想マシンのデプロイはAzure Portalを使っています。
途中で”Azure ADでログインする”と言う選択肢が表示されます。

ネットワーク等の他の仮想マシン設定は自身の環境に合わせて適時選択してください。

VM作成手順

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

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

リソースグループはtest-rgを使用しています。
仮想マシン名をAAD-Login-TEST-VM-01としています。

Cent OS 7.9のイメージを選択しています。

 

管理のタブです。
”Azure ADでログインする”という項目がありますので、チェックを入れます。
自動的に”システム割り当てマネージドIDの有効化”の項目にチェックが入ります。

確認画面です。
管理の項目で”システム割り当てマネージドID”と”Azure ADでログインする”がオンになっている事を確認します。

マネージドIDと拡張機能を確認

仮想マシンでマネージドIDと拡張機能の設定状況を確認します。

マネージドIDと拡張機能を確認

システム割り当て済みマネージドIDが有効化されています。

拡張機能として”AADSSHLogin”がインストールされています。
状態が”Provisioning succeeded”となっていれば正常に動作しています。

既存のAzure VM(仮想マシン)でAzure ADユーザーログインを有効化

既存の仮想マシンで、Azure ADユーザーのログインの許可設定をやってみます。
必要な設定は2つです。

    • 仮想マシンのマネージドID有効化
    • 拡張機能のインストール

Azure Portalを使って設定

Azure Portalを使ってAzure ADユーザーログイン有効化を設定します。

Azure Portalで設定

マネージドIDの有効化です。
システム割り当て済みのタブで状態をオンにします。
保存を選択します。

これでマネージドIDの有効化設定は完了です。

拡張機能のインストールです。
仮想マシンのリソースメニューで拡張機能とアプリケーションを選択します。
拡張機能のタブで追加を選択します。
AAD based SSH Loginを選択します。

確認画面で作成を選択します。
作成を選択するとデプロイが開始します。

※拡張機能インストール時は仮想マシンを起動しておく必要があります。

拡張機能として”AADSSHLogin”がインストールされています。
状態が”Provisioning succeeded”となっていれば正常に動作しています。

Azure CLIを使って設定

Azure CLIを使ってAzure ADユーザーログイン有効化を設定します。

Azure CLIで設定

仮想マシンに対してマネージドIDを有効化します。

 

 

PS C:\>az vm identity assign –resource-group リソースグループ名 –vm-name  VM名

az vm identity assignコマンドの説明は公式サイトを参照願います。

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

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

az vm extension setコマンドの説明は公式サイトを参照願います。

provisioningStateにSucceededが表示されていればデプロイ成功です。

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

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

Azure CLIのインストールについてはこちらを参照願います。

 

仮想マシンにAzure ADユーザーの権限付与

テスト用のAzure ADユーザーを作成します。
リソースグループに対してAzure ADユーザーのロール割り当て追加を行います。

権限付与はアクセス制御(IAM)で行う

アクセス制御 (IAM)によって仮想マシンへOSへのログイン許可設定を行います。
ロール割り当ての追加にあたっては、OSの再起動等は必要ありません。オンラインで実施する事が出来ます。

仮想マシンログインに関するロールは2種類

仮想マシンログインに必要となるロールはは2種類あります。
OSログイン後に管理者ユーザーとするか、一般ユーザーとするかによって選択します。

      • 仮想マシンの管理者ログイン: 仮想マシン作成時の管理者ユーザーと同等権限を保持します。(sudo su -が使えます)
      • 仮想マシンのユーザー ログイン: 一般ユーザーとして仮想マシンにログインできます。(sudo su -が使えません)

確認用のAzure ADユーザーを作成

Azure Active Directoryで確認用のユーザーを作成します。
aad-login-testと言うユーザーを作成しています。

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

テンプレートの選択は”ユーザーの作成”を選択します。
ユーザー名と名前を入力します。
作成を選択します。

※パスワードはコピーして保管しておきます。

すべてのユーザーを見ると、新しいAzure ADユーザーアカウントが作成されている事が確認出来ます。

リソースグループでロール割り当ての追加

権限付与は仮想マシンだけではありません。
仮想マシンと関連付けられたリソースを含むリソース グループに対してロール割り当ての追加が必要になります。

      • Virtual Network
      • ネットワーク インターフェイス
      • パブリック IP アドレスまたはLoad Balance

権限付与の詳細は公式サイトも併せて参照願います。

仮想マシン ロールの割り当てを構成する(MS公式サイト)

ロール割り当ての追加は仮想マシンの管理者ログインか仮想マシンのユーザー ログインを選択して行います。

ロール割り当て手順
リソースグループのリアクセス制御(IAM)でロールの割り当ての追加を選択します。

仮想マシンのユーザーログインを選択します。

アクセスの割り当て先でユーザーを選択します。
メンバーの選択で先ほど作成したユーザーを選択します。
レビューと割り当てを選択します。

確認画面です。
選択されたロールに仮想マシンのユーザーログイン、メンバーに先ほど作成したユーザーが選択されている事を確認します。
スコープにリソースグループが選択されている事を確認します。

レビューと割り当てを選択します。

これで権限付与は完了です。

Azure ADユーザーを利用してAzure VM(Linux OS)へログイン

Azure CLI 用 SSHをインストール

仮想マシンへのログイン時にはAzure CLI 用 SSH 拡張機能が必要になります。

Azure CLI 用 SSHをインストール
”az extension add –name ssh”コマンドでAzure CLI 用 SSHをインストールします。

Azure ADユーザーを使ってLinuxOSへログイン

Azure ADユーザーを使ったLinux OSへのログインは2段階になります。

      • Azure テナントへのサインイン
      • az ssh vmコマンドでOSへのログイン
ログイン手順(確認含む)
az loginコマンドでAzure テナントにログインします。

PS C:\>az login

ロール割り当てたAzure ADユーザーでサインインします。
ユーザー名、パスワードを入力します。
2段階認証設定の認証方法に基づいてログインします。(2段階認証設定内容に応じてログインします。)

az ssh vmコマンドで仮想マシンへログインします。(今回はリソースグループがTEST-RG、名前がAAD-Login-TEST-VM-01の仮想マシンにログインします。)

az ssh vmコマンドの説明は公式サイトを参照願います。

PS C:\>az ssh vm -n AAD-Login-TEST-VM-01 -g TEST-RG
The authenticity of host 'XXX
.XXX.XXX.XXX (仮想マシンのIPアドレス)’ can’t be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Last login: Sat Aug 13 10:03:16 2022 from XXX.XXX.XXX.XXX

[aad-login-test@xxxxx.xxxxx.com@aad-login-test-vm-01 ~] ~]$

仮想マシンの管理者ログインか仮想マシンのユーザー ログインを比較

ログイン後にidコマンドを使ってロール割り当ての違いを確認してみます。

ログイン手順(確認含む)

”仮想マシンの管理者ログイン”のロール付与した場合した場合はwheelグループ、aad_adminsグループに参加している事が分かります。

※Wheelグループについては、ホイール (コンピュータ)(ウィキペディア)を参照願います。

#”仮想マシンの管理者ログイン”のロール付与した場合
uid=11393XXX(aad-login-test@xxxxx.xxxxx.com) gid=11393XXX(aad-login-test@xxxxx.xxxxx.com) groups=11393XXX(aad-login-test@xxxxx.xxxxx.com),10(wheel),1001(aad_admins)

#”仮想マシンのユーザー ログイン”のロール付与した場合
uid=11393XXX(aad-login-test@xxxxx.xxxxx.com) gid=11393XXX(aad-login-test@xxxxx.xxxxx.com) groups=11393XXX(aad-login-test@xxxxx.xxxxx.com)

Press ENTER when ready.

sudo su -でロールの割り当ての違いを確認

ロールの割り当て内容によってOSの権限の違いを確認してみます。

sudo su -を実行

”仮想マシンの管理者ログイン”のロール付与した場合

rootユーザーにsudo出来ている事が分かります。

[aad-login-test@xxxxx.xxxxx.com@aad-login-test-vm-01 ~] sudo su –
[root@aad-login-test-vm-01 ~]#

”仮想マシンのユーザー ログイン”のロール付与した場合

エラーとなっている事が分かります。

[aad-login-test@xxxxx.xxxxx.com@aad-login-test-vm-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.
aad-login-test@XXXXX.XXXXX.com is not in the sudoers file. This incident will be reported.

最後に

Azure ADユーザーを使ってLinuxの仮想マシンへログイン設定を試してみました。
Azure ADユーザーを利用する事で2段階認証も使えたり、ロール割り当てだけで仮想マシンへのログインを許可が出来るなどとても便利な機能かと思いました。

Azure Bastionを使ってもAzure ADユーザーを使った仮想マシンへのログインが可能です。
Azure Bastionを使うとよりセキュアな環境での利用が可能です。
Azure Bastionを使った仮想マシンへのログインについてはこちらでやっています。併せて見て頂けると大変有難いです。

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