このページの本文へ

FIXER cloud.config Tech Blog

検証:Azure AD認証でAzure VM Linuxにログインする(CentOS/Ubuntu)

2020年12月18日 11時00分更新

文● 藤井 廉/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 この記事はFIXER 2nd Advent Calendar 2020(https://adventar.org/calendars/5752)9日目の記事です。 前日はこちら(https://tech-blog.cloud-config.jp/2020-12-08-power-apps-portal-webservice/

 FIXERの藤井です。今回は現在(2020年12月8日時点)、プレビューとして公開されている「Azure AD認証を利用したLinx VMへのログイン」について、「Cent OS/Ubuntu」の2パターンで検証し、最終的なゴールとして「Linuxへのログインログ」がどんな形で残されているかを確認します。

本記事の前提知識として理解しておくべき事項

Azure AD 認証について

 Azure AD 認証とはVMのログインなど各種システムでのユーザー認証(アクセスを要求しているアカウントを特定する処理)において、アクセス対象の各システム自身が認証情報(最も単純な例ではIDとパスワードの組み合わせ)を保有せず、Azure Active Directoryに保有されている認証情報を参照して認証を行なうことです。Azure AD認証を利用することで以下のようなメリットがあります。

・認証情報をAzure Active Directoryで集中管理するため、入退社や異動時にユーザーの追加/削除の作業が簡略化されます。対象のシステムの数だけ作業が必要だったのが、Azure Active Directoryの1ヵ所のみで完了します。
・セキュリティーが向上します。MFAなどAzure Active Directoryのセキュリティー機能が利用できます。
・システム基盤の管理する工数もAzure ADを利用することで削減されます。

Linux VMでのAzure AD認証がサポートされる意義

 Azure Active Directory及びその原型となったActive Directoryは、そもそもWindows OSを対象にしたテクノロジーで、かつてはMac OSやLinux OSに対するWindows OSの最大の差別化ポイントとされていました。そのAzure Active DirectoryがLinux環境でもサポートされるということは、今のMicorosoft がもはやOSSを敵視する姿勢がみじんもなく、「Microsoft Loves Linux」のスローガンが「リップサービス」ではなく、本当の本気の戦略転換であることの象徴とも言えます。

Azure CLIについて

 今回の検証作業ではAzure CLIというツールを使用します。Microsoft Azureで提供される以下の純正のCUI(Command-Line User Interface)としては、以下の2種類が存在し、今回はテーマが 「Linux on Azure」がテーマですので、Azure CLIを利用します。

・Azure PowerShell : Windows ユーザー向けでPowerSehllをベースにしています
・Azure CLI:Mac OS及びLinux OSユーザー向けでPythonをベースにしています
・Azure CLIの詳細についてはMicorosoft公式サイトを併せてご参照ください。

検証内容詳細

 本記事の検証内容はMicrosoft 公式ドキュメントにてチュートリアルとして紹介されている手順をベースにしています。

1. 準備編

 検証対象の各Linux仮想マシン(Cent OS/Ubuntu)を構築する前に「Azure AD ユーザー」及び「リソースグループと仮想ネットワーク」を作成します。

1.1. Azure AD ユーザーを作成する

(1) Azure Portal にてAzure ADよりユーザー > 「新しいユーザー」を開きユーザーを作成します。

(2)作成したユーザーでAzure Portalにログインできることが確認できればOKです。

1.2. リソースグループと仮想ネットワークを作成する

(1)以下のコマンドによりリソースグループ「techblog-rg」を作成します。


az group create --name techblog-rg --location japaneast

(2)以下のコマンドにより仮想ネットワーク「techblog-vnet」および「linux-subnet」を作成します。


az network vnet create -g techblog-rg -n techblog-vnet --address-prefix 10.0.0.0/16 --subnet-name linux-subnet --subnet-prefix 10.0.0.0/24

(3)下図のように仮想ネットワークが作成されていればOKです。

2. Cent OS編

2.1.Cent OS仮想マシンを構築する

(1)自端末にて以下のコマンドによりCent OSの仮想マシンを構築します。


az vm create --admin-username localadmin --admin-password 【任意のパスワード】 -n centos -g techblog-rg --location japaneast --vnet-name techblog-vnet --subnet linux-subnet --public-ip-address-allocation static --image CentOS --size Standard_A2 --generate-ssh-keys

(2)構築が完了したら以下のコマンドによりパブリックIPアドレスを確認します。


az vm show --resource-group techblog-rg --name centos -d --query publicIps -o tsv

(3)自端末にて「localadmin」を使用して仮想マシンに自端末からログインします。ログイン時にパスワード入力が必須です。

ssh -l localadmin 【パブリックIPアドレス】

(4)ログインができたら以下のコマンドにより「localadmin」でのログイン履歴を確認します。

lastlog -u localadmin

(5)ログイン履歴の例は以下です。

2.2. Azure AD認証を構成する

(1)以下のコマンドによりAzure AD拡張機能をインストールします。


az vm extension set --publisher Microsoft.Azure.ActiveDirectory.LinuxSSH --name AADLoginForLinux --resource-group techblog-rg --vm-name centos

(2)以下のコマンドにより仮想マシン ロールの割り当てを構成します。


$username="【AzureADユーザー@ドメイン名】"
$vm=$(az vm show --resource-group techblog-rg --name centos --query id -o tsv)
az role assignment create --role "Virtual Machine Administrator Login" --assignee $username --scope $vm

2.3.ログインを試してみる

(1)自端末から「AzureADユーザー」を使用して仮想マシンに自端末からログインします

ssh -l "【AzureADユーザー@ドメイン名】" 【パブリックIPアドレス】

(2)以下のコマンドによりログインを実行します。


lastlog -u "【AzureADユーザー@ドメイン名】"

(3)ブラウザーで認証画面にアクセスし認証コードを入力するようメッセージが表示されるのでEnterキーを押した後に、ブラウザーで指示されたURLにアクセスします。

(4)認証コードを入力します。

(5)Azure ADアカウントを入力します。

(6)以下のように表示されたらOKです。

(7)以下のコマンドよりログイン履歴を確かめます。


lastlog -u "【AzureADユーザー@ドメイン名】"

(8)ログイン履歴の例は以下です。

3. Ubuntu編

3.1. Ubuntu仮想マシンを構築する

(1)自端末にて以下のコマンドによりUbuntuの仮想マシンを構築します。


az vm create --admin-username localadmin --admin-password 【任意のパスワード】 -n ubuntu -g techblog-rg --location japaneast --vnet-name techblog-vnet --subnet linux-subnet --public-ip-address-allocation static --image UbuntuLTS --size Standard_A2 --generate-ssh-keys

(2)構築が完了したら以下のコマンドによりパブリックIPアドレスを確認します。


az vm show --resource-group techblog-rg --name ubuntu -d --query publicIps -o tsv

(3)以下、Cent OSの場合と同様にlocaladminでログインし、ログイン履歴を確認します。ログイン履歴の例は以下です。

3.2. Azure AD認証を構成する

(1)以下のコマンドによりAzure AD拡張機能をインストールします。


az vm extension set --publisher Microsoft.Azure.ActiveDirectory.LinuxSSH --name AADLoginForLinux --resource-group techblog-rg --vm-name ubuntu

(2)以下のコマンドにより仮想マシン ロールの割り当てを構成します。


$username="【AzureADユーザー@ドメイン名】"
$vm=$(az vm show --resource-group techblog-rg --name ubuntu --query id -o tsv)
az role assignment create --role "Virtual Machine Administrator Login" --assignee $username --scope $vm

3.3.ログインを試してみる

Cent OSの場合と同様にAzure AD ユーザーでログインし、ログイン履歴を確認します。ログイン履歴の例は以下です。

結果のまとめ

 構築手順的にはCnet OSとUbuntuで全くと言ってよいほど、差が無いと言えます。唯一の差はVMの構築時に–imageパラメータ(OS種別)として、「CentOS」を指定するか、「UbuntuLTS」を指定するかの違いだけです。実は藤井はCent OSしか経験が無く、Ubuntuはほぼ初体験だったのですが全く同じ感覚できました。最初にCent OSで手順を確立させたら、後は単純作業の要領でUbuntuもできました。サポート対象のLinuxはほかにもございますので、是非皆さんもお試しあれ。

 藤井 廉/FIXER

Cloud Solutions Engineer
保有資格:
Microsoft Azure Solutions Architect Expert(AZ-300 & AZ-301)
Microsoft Azure Developer Associate(AZ-203)
Microsoft Azure Security Engineer Associate(AZ-500)
Microsoft Azure Administrator Associate(AZ-102:制度変更により廃止された「70-533 Microsoft Azure Infrastructure Solutions の実装」の既合格者を対象とした移行試験で、AZ-103と同等の資格)

[転載元]
 【検証】Linux on Azure(CentOS/Ubuntu) ~Azure AD認証を利用してAzure VM Linuxにログインする~

カテゴリートップへ