SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SB C&S

Azure Arc対応サーバーを管理してみよう - マネージドID編

パブリッククラウド
2023.10.13

みなさんこんにちは。 以前、Azure以外の場所にある「サーバー」をAzure Arcに接続する方法について以下のブログ記事でご紹介いたしました。

Azure Arcに接続してみよう - サーバー(Windows)編
Azure Arcに接続してみよう - サーバー(Linux)編

上記ブログ記事ではご説明しませんでしたが、サーバーをAzure Arcに接続することによってマネージドIDが作成されます。 AzureにおけるマネージドIDの概要についてはこちらで説明されておりますが、Microsoft Entra ID (Azure AD)の認証が必要なAzureリソースへのアクセスにマネージドIDを利用することによって、コードに資格情報を含める必要がなくなる、ユーザーが資格情報を管理する必要がなくなるといったメリットがあります。

※マネージドIDには「システム割り当て」と「ユーザー割り当て」の2種類あり、「ユーザー割り当て」はユーザーがマネージドIDのライフサイクルを管理する必要があります。 本ブログ記事ではシステム割り当てマネージドIDを扱います。

マネージドIDの仕組みについてはAzure VMを例としてこちらで説明されていますので、併せてご参照頂きますと利用方法やメリットなどよりイメージしやすくなるかもしれません。

マネージドIDの利用例としては、Azure VMからストレージアカウントに対してマネージドIDを利用してアクセスすることが可能です。(Microsoft LearnでAzure VM向けのチュートリアルが公開されています。 Windowsの場合はこちら、Linuxの場合はこちらをご参照ください。)
az_arc-mid-azvm.png

 

前述の通りAzure Arc対応サーバーにおいてもマネージドIDが存在します。 サーバーをAzure Arcに接続した後にMicrosoft Entra ID (Azure AD)を確認すると、以下のようにマネージドIDが作成されていることが確認できます。 これによってAzureリソースにアクセスすることができるという訳です。
az_arc-mid-app.png

今回はこのマネージドIDを利用してAzure Arc対応サーバーからBLOBにアクセスしてみます。 なお、今回はAzure Arc対応サーバーからストレージアカウントのコンテナーにあるテキストファイルを閲覧できるようにしてみたいと思います。 (Microsoft Learnで公開されているAzure VM向けのチュートリアルと同様のことをAzure Arc対応サーバーで実現できるか試してみます。)
az_arc-mid-overview.png 

検証環境

今回利用する環境ではUbuntu 20.04 LTSをAzure Arc対応サーバーとしています。 本サーバーはオンプレミスに存在しています。
az_arc-mid-env.pngaz_arc-mid-env1.png今回はAzure Arc対応サーバー上でcurlならびにjqを利用します。
az_arc-mid-env2.pngまた、「himds」グループのメンバーで操作を行います。(Azure Arc対応サーバーでマネージドIDを利用する際の前提条件によるものです。 詳細についてはこちらをご参照ください。)
az_arc-mid-env3.png 

ストレージアカウント、コンテナーの作成

Azure Arc対応サーバーからのアクセス先を用意します。 まずはストレージアカウントを作成します。
az_arc-mid-sa1.pngこちらのストレージアカウントにコンテナーを作成します。
az_arc-mid-sa2.png作成したコンテナーに動作確認用のテキストファイルをアップロードしました。
az_arc-mid-sa3.png

az_arc-mid-sa4.png

 

コンテナーのアクセス許可

Azure Arc対応サーバーのマネージドIDにアクセス許可を付与します。 今回はBLOBの閲覧ができればよいため「ストレージ BLOB データ閲覧者」ロールを割り当てます。
az_arc-mid-iam.png

 

トークンの取得とBLOBへのアクセス

Azure VMの場合、自身のメタデータを取得するためにAzure VM内からAzure Instance Metadata Service (IMDS) へアクセスすることが可能です。(IMDSの詳細についてはこちらをご参照ください。) Azure VMの場合、IMDSエンドポイントのIPアドレスとして「169.254.169.254」を利用します。 従って、curlを使用してマネージドIDのトークンを取得する場合は以下のようなコマンドを実行します。("-H Metadata:true"はこちらに記載の通りSSRF攻撃対策です。)

curl -H Metadata:true "http://169.254.169.254/metadata/identity/oauth2/token(以下省略)"

一方でAzure Arc対応サーバーの場合、Hybrid Instance Metadata Service (HIMDS)を利用します。 エンドポイントは「http://localhost:40342(または「http://127.0.0.1:40342)です。

curl -H Metadata:true "http://localhost:40342/metadata/identity/oauth2/token(以下省略)"

今回はMicrosoft Learnで紹介されている手順を参考にトークンを取得します。(こちらのMicrosoft LearnではAzure Key Vaultへのアクセスについて説明されていますが、本ブログ記事ではBLOBにアクセスするため"resource"の指定が異なっています。)

チャレンジトークンの取得

Azure Arc対応サーバー上で以下のコマンドを実行します。

challenge_token_path=$(curl -s -D - -H Metadata:true ¥
"http://localhost:40342/metadata/identity/oauth2/token?api-version=2021-02-01&resource=https%3A%2F%2Fstorage.azure.com" |
grep Www-Authenticate | cut -d "=" -f 2 | tr -d "[:cntrl:]")
challenge_token=$(sudo cat $challenge_token_path)

az_arc-mid-token1.png

リソーストークンの取得

続いて以下のコマンドを実行します。

resource_token=$(curl -s -H Metadata:true ¥
-H "Authorization: Basic $challenge_token" ¥
"http://localhost:40342/metadata/identity/oauth2/token?api-version=2021-02-01&resource=https%3A%2F%2Fstorage.azure.com" |
jq -r .access_token)

az_arc-mid-token2.png

BLOBへのアクセス

リソーストークンを使用してAzure上のBLOBにアクセスできるか確認します。 Azure Arc対応サーバー上で以下のコマンドを実行します。 x-ms-versionで指定するバージョンについてはこちらをご参照ください。

curl -H "x-ms-version: 2023-08-03" -H "Authorization: Bearer $resource_token" ¥
"https://<StorageAccount>.blob.core.windows.net/<Container>/<File>"

az_arc-mid-token3.png

テキストファイルの内容が返ってくることが確認できました。

 

まとめ

今回はAzure Arc対応サーバーのマネージドIDを利用してAzure上のBLOBにアクセスしてみました。 Azure VMの場合はMicrosoft Learnチュートリアルが用意されていますが、Azure Arc対応サーバーの場合はHIMDSのエンドポイントをはじめ異なる点がありますのでご留意ください。

以前に投稿したブログ記事「Azure Arc対応サーバーを管理してみよう - 監視編」でAzure Monitorエージェントを扱いましたが、この時にも実はマネージドIDが利用されていました。 こちらに記載されている通り、ワークスペースの認証のために利用されているようです。 Azure Monitorエージェントを扱った際はユーザーがマネージドIDを意識する場面はありませんでしたので、本ブログ記事ではストレージアカウントを利用してAzure Arc対応サーバーのマネージドIDを意識した操作を行ってみました。

 

 


SB C&SAzureを取り扱われているパートナー企業様へ様々なご支援のメニューを用意しております。 メニューの詳細やAzureに関するご相談等につきましては以下の「Azure相談センター」をご確認ください。

Azure相談センター
https://licensecounter.jp/azure/


※ 本ブログは弊社にて把握、確認された内容を基に作成したものであり、製品の動作や仕様について担保・保証するものではありません。サービスや製品の動作、仕様等に関しては、予告なく変更される場合があります。

Azureに関するブログ記事一覧はこちら

著者紹介

SB C&S株式会社
ICT事業本部 技術本部 第1技術部 4課
中原 佳澄