次の方法で共有


Microsoft Entra ID(プレビュー)を使用して、マネージド ID で SMB Azure ファイル共有にアクセスする

適用対象: ✔️ SMB ファイル共有

この記事では、管理 ID を使用して Windows および Linux 仮想マシン (VM) に、Microsoft Entra ID (プレビュー) によるアイデンティティベースの認証を通じて SMB Azure ファイル共有にアクセスさせる方法について説明します。

マネージド ID は、Azure Entra ID において、Azureが自動的に管理するIDです。 通常は、クラウド アプリケーションを開発するときにマネージド ID を使用して、Azure サービスに対する認証用の資格情報を管理します。

このガイドの終わりまでに、マネージド ID でaccessできるstorage アカウントを作成します。 また、VM のマネージド ID を作成し、それに対する OAuth トークンを生成する方法についても説明します。 その後、マネージド ID ベースの認証と承認を使用してファイル共有をマウントし、storage アカウント キーを使用する必要がなくなります。

マネージド ID を使用して認証する理由

セキュリティ上の理由から、storage アカウント キーを使用してファイル共有をaccessすることはお勧めしません。 マネージド ID を VM に割り当てたり、アプリケーション ID を使用したりする場合は、その ID を使用してAzure Filesに対する認証を行うことができます。

次のような利点があります。

  • セキュリティ強化: 管理または公開のためにストレージアカウントキーに依存することがありません。

  • 管理の簡素化: キーのローテーションは必要ありません

  • 細分化されたアクセス制御: アイデンティティレベルでのロールベースアクセス制御

  • オートメーション対応: CI/CDパイプライン、Azure Kubernetes Service (AKS) ワークロード、および顧客アプリケーションと簡単に統合できます

  • Cost effective: マネージド ID は、追加のstorageコストなしで使用できます

システム割り当てマネージド ID とユーザー割り当てマネージド ID

Azureには、system assigneduser assigned の 2 種類のマネージド ID が用意されています。

システム割り当てマネージド ID はリソースごとに 1 つに制限され、このリソースのライフサイクルに関連付けられます。 Azure ロールベース アクセス制御 (Azure RBAC) を使用して、マネージド ID にアクセス許可を付与できます。 マネージド ID はMicrosoft Entra IDで認証されるため、資格情報をコードに格納する必要はありません。 Linux VM では、システム割り当てマネージド ID はサポートされていません。

ユーザー割り当てマネージド ID を使用すると、Azure リソースは、コードに資格情報を格納せずにcloud servicesに対して認証できます。 この種類のマネージド ID は、独自のライフサイクルを持つスタンドアロン Azure リソースとして作成します。 1 つのリソース (VM など) は、複数のユーザー割り当てマネージド ID を使用できます。 また、複数の VM で、1 つのユーザー割り当てマネージド ID を共有できます。

Windows VM では、ユーザー割り当てマネージド ID とシステム割り当てマネージド ID の両方を構成できます。

[前提条件]

この記事では、storage アカウントを作成し、AZURE RBAC ロールを割り当てるアクセス許可を持つAzure サブスクリプションがあることを前提としています。 ロールを割り当てるには、ロールを割り当てるスコープでのロール割り当ての書き込み権限 (Microsoft.Authorization/roleAssignments/write) が必要です。

マネージド ID を使用して認証する必要があるクライアントは、どのドメインにも参加させるべきではありません。

storage アカウントでマネージド アイデンティティ アクセスプロパティを構成する

マネージド ID を認証するには、アクセスする Azure ファイル共有を含むストレージ アカウントで SMBOAuth プロパティを有効にする必要があります。 この目的のために、新しいstorage アカウントを作成することをお勧めします。 既存のstorage アカウントは、他の ID ソースが構成されていない場合にのみ使用できます。

storage アカウントで SMBOAuth プロパティを有効にするには、Azure portalまたはAzure PowerShellを使用します。 手順については、適切なタブを選択します。

Azure portalを使用して SMBOAuth プロパティを有効にして新しいstorage アカウントを作成するには、次の手順に従います。 [ 詳細設定 ] タブで、[ SMB のマネージド ID を有効にする ] チェック ボックスをオンにします。

Azure portal を使用して新しいストレージ アカウントを作成する際に、SMB のマネージド ID を有効にする方法を示すスクリーンショット

または、storage アカウントに他の ID ソースが構成されていない限り、既存のstorage アカウントで SMBOAuth プロパティを有効にすることもできます。

storage アカウントに移動します。 サービス メニューの [設定] で [ 構成] を選択します。 [ SMB のマネージド ID] で 、[ 有効] を選択し、[保存] を選択 します

Azure ポータルを使用して既存のストレージ アカウントで SMB のマネージド ID を有効にする方法を示すスクリーンショット

次に、storage アカウントに SMB ファイル共有を作成します。

マネージド ID を構成する

マネージド ID は、Windowsまたは Linux で使用できます。 適切なタブを選択し、オペレーティング システムの指示に従います。

ここで説明する有効化手順は、Azure VM 用です。 Azure以外の Windows マシン (オンプレミスまたは他のクラウド) でマネージド ID を有効にする場合は、マネージド ID をAzure Arcして割り当てにオンボードする必要があります。 VM または Windows デバイスでマネージド ID を使用する代わりに、アプリケーション ID を使用して認証することもできます。

Azure VM でマネージド ID を有効にする

Azure VM でマネージド ID を有効にするには、次の手順に従います。

  1. Azure portalにサインインし、Windows VM を作成します。 VM は、サーバー バージョンまたは任意のWindowsクライアント バージョンに対して、Windows Server 2019以降を実行する必要があります。 Azure portalを参照してください。

  2. VM でマネージド ID を有効にします。 システム割り当てまたはユーザー割り当てを指定できます。 VM にシステム割り当て ID とユーザー割り当て ID の両方がある場合、Azureは既定でシステム割り当て済みになります。 最適な結果を得るには、1 つだけ割り当てます。 VM の作成時に、[ 管理 ] タブでシステム割り当てマネージド ID を有効にすることができます。

    Azure ポータルで新しい仮想マシンを作成する際にシステムで割り当てられたマネージド ID を有効にする方法を示すスクリーンショット

マネージド ID またはアプリケーション ID に組み込みの RBAC ロールを割り当てる

マネージド ID を有効にした後、Azure RBAC を通じて必要なすべてのアクセス許可を付与します。 ロールを割り当てるには、ロールを割り当てるスコープで、ロールの割り当て書き込みアクセス許可を持つユーザーとしてサインインします。

次の手順に従って、組み込みのAzure RBAC ロールStorageファイル データ SMB MI 管理者を割り当てます。これにより、Azure Files内のファイルとディレクトリのマネージド ID に対する管理者レベルのaccessが提供されます。

  1. マネージド ID を使用してマウントするファイル共有を含むstorage アカウントに移動します。 サービス メニューから Access Control (IAM) を選択します。

  2. このリソースへのアクセスで、ロールの割り当てを追加を選択します。

  3. Role タブの ジョブ関数ロールで、ストレージ ファイル データ SMB MI 管理者を検索して選択し、次へ を選択します。

  4. Members タブの assign access to で、VM またはAzure Arc ID に対して Managed identity を選択します。 アプリケーション ID の場合は、[ ユーザー、グループ、またはサービス プリンシパル] を選択します。

  5. [ メンバー] で、[ + メンバーの選択] を選択します

  6. AZURE VM またはAzure Arc ID の場合は、VM または Windows デバイスのマネージド ID を選択します。 アプリケーション ID の場合は、アプリケーション ID を検索して選択します。 [選択] をクリックします。

  7. これで、[ メンバー] の下にマネージド ID またはアプリケーション ID が表示されます。 次へを選択します。

  8. Review + assign を選択して、ロールの割り当てをstorage アカウントに追加します。

マネージド ID を使用して認証するようにクライアントを準備する

マネージド ID 認証を使用してファイル共有をマウントするようにシステムを準備するには、次の手順に従います。 Windowsクライアントと Linux クライアントでは手順が異なります。 クライアントをドメインに参加させるべきではありません。

マネージド ID を使用して認証するようにクライアント VM またはWindows デバイスを準備するには、次の手順に従います。

  1. マネージド ID が割り当てられている VM またはデバイスにサインインし、管理者として PowerShell ウィンドウを開きます。 PowerShell 5.1 以降または PowerShell 7 以降が必要です。

  2. Azure Files SMB マネージド ID クライアント PowerShell モジュールをインストールしてインポートします。

    Install-Module AzFilesSmbMIClient 
    Import-Module AzFilesSmbMIClient 
    
  3. 次のコマンドを実行して、現在の PowerShell 実行ポリシーを確認します。

    Get-ExecutionPolicy -List 
    

    CurrentUser の実行ポリシーが Restricted または Undefined の場合は、 RemoteSigned に変更します。 実行ポリシーが RemoteSignedDefaultAllSignedBypass、または Unrestricted の場合は、この手順をスキップできます。

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 
    

認証資格情報を更新する

マネージド ID を使用してファイル共有をマウントする前に、認証資格情報を更新し、storage アカウント エンドポイントを指定します。 storage アカウント URI をコピーするには、Azure portalのstorage アカウントに移動し、サービス メニューから Settings>Endpoints を選択します。 末尾のスラッシュを含む URI 全体をコピーしてください: https://<storage-account-name>.file.core.windows.net/

AzFilesSmbMIClient.exe refresh --uri https://<storage-account-name>.file.core.windows.net/

このコマンドは、OAuth トークンを取得し、Kerberos キャッシュに挿入します。 トークンの有効期限が近づくと、自動更新されます。 必要に応じて、 refreshを省略できます。

Windows VM にユーザー割り当てマネージド ID とシステム割り当てマネージド ID の両方が構成されている場合は、次のコマンドを使用して、ユーザー割り当てマネージド ID を指定します。 <client-id>をマネージド ID のクライアント ID に置き換えます。

AzFilesSmbMIClient.exe refresh --uri https://<storage-account-name>.file.core.windows.net/ --clientId <client-id> 

ヒント

完全な使用状況情報と例を表示するには、パラメーターを指定せずに実行可能ファイルを実行します。 AzFilesSmbMIClient.exe

ファイル共有をマウントする

storage アカウント キーを使用せずに、Windows または Linux でファイル共有をマウントできるようになりました。

Windows クライアントでは、次のパスを Windows File Explorerに入力することで、UNC パスを使用してAzure ファイル共有を直接accessできます。 <storage-account-name>をstorageアカウント名に置き換え、<file-share-name>をファイル共有名に置き換えます。

\\<storage-account-name>.file.core.windows.net\<file-share-name>

詳細については、「 Windows での SMB Azure ファイル共有のマウントを参照してください。

トラブルシューティング

Windows クライアントと Linux クライアントでは、トラブルシューティングの手順が異なります。

Windowsにファイル共有をマウントするときに問題が発生した場合は、次の手順に従って詳細ログを有効にし、診断情報を収集します。

  1. Windows クライアントでは、レジストリ エディターを使用して、verbosity の Data レベルを の場合は 0x00000004 (4) に設定します。

  2. 共有をもう一度マウントして、エラーを再現してください。

  3. これで、 AzFilesSmbMILog.logという名前のファイルが作成されます。 ログ ファイルを azurefilespm@microsoft.com に送信して支援を受けてください。

クライアント ライブラリのインストールと統合のオプション

次の情報は、マネージド ID をアプリケーションに統合する必要がある開発者向けです。

マネージド ID を Windows アプリケーションに統合する必要がある開発者は、アプリケーションのアーキテクチャと要件に応じて複数の実装方法を使用できます。

マネージド アセンブリ統合: NuGet パッケージ

.NET アプリケーションの場合、Microsoft.Azure。AzFilesSmbMI NuGet パッケージには、SMB OAuth 認証機能に直接accessを提供するマネージド アセンブリ (Microsoft.Azure.AzFilesSmbMI.dll) が含まれています。 このアプローチは、C# やその他の.NET ベースのアプリケーションに使用します。

インストール: Install-Package Microsoft.Azure.AzFilesSmbMI -version 1.2.3168.94

DLL のネイティブ統合

ダイレクト API accessを必要とするネイティブ アプリケーションの場合、AzFilesSmbMIClient は native DLL として使用できます。 このオプションは、下位レベルの統合を必要とする C/C++ アプリケーションまたはシステムに特に役立ちます。 Windows の実装および API リファレンス (ネイティブ ヘッダー ファイル) を参照してください。

ネイティブ API メソッド

ネイティブ DLL は、資格情報管理のために次の主要な方法をエクスポートします。

extern "C" AZFILESSMBMI_API HRESULT SmbSetCredential( 
    _In_  PCWSTR pwszFileEndpointUri, 
    _In_  PCWSTR pwszOauthToken, 
    _In_  PCWSTR pwszClientID, 
    _Out_ PDWORD pdwCredentialExpiresInSeconds 
); 
extern "C" AZFILESSMBMI_API HRESULT SmbRefreshCredential( 
    _In_ PCWSTR pwszFileEndpointUri, 
    _In_ PCWSTR pwszClientID 
); 
extern "C" AZFILESSMBMI_API HRESULT SmbClearCredential( 
    _In_ PCWSTR pwszFileEndpointUri 
); 

こちらも参照ください