Azure リソースの管理対象サービス ID (MSI)

管理対象サービス ID (MSI) は、Azure Active Directory のプレビュー機能です。 ご利用の前に、あらかじめ既知の問題を確認しておいてください。 詳細については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

クラウド アプリケーションの構築時における一般的な課題は、クラウド サービスへの認証用のコードに必要な資格情報を管理する方法です。 これらの資格情報を安全に保つことは重要なタスクです。 こうした資格情報が開発者ワークステーションに表示されず、ソース管理で検査されないことが理想的です。 Azure Key Vault は、資格情報およびその他のキーやシークレットを安全に保管する方法を提供しますが、コードは Key Vault に認証してそれらを取得する必要があります。 管理対象サービス ID (MSI) は、Azure Active Directory (Azure AD) で自動的に管理されている ID を Azure サービスに付与することで、この問題を簡単に解決します。 この ID を使用して、コードに資格情報が含まれていなくても、Key Vault を含む Azure AD の認証をサポートする任意のサービスに認証することができます。

それはどのように機能しますか?

Azure サービスで管理対象サービス ID を有効にすると、Azure は、Azure サブスクリプションで使用される Azure AD テナントのサービス インスタンスの ID を自動的に作成します。 Azure は背後で、サービス インスタンスに ID の資格情報をプロビジョニングします。 コードは、Azure AD 認証をサポートするサービスのアクセス トークンを取得するためのローカル要求を行うことができるようになります。 Azure は、サービス インスタンスによって使用される資格情報のローリングを実行します。 サービス インスタンスが削除された場合、Azure は Azure AD の資格情報および ID を自動的にクリーンアップします。

管理対象サービス ID が Azure Virtual Machines で動作する方法の例を次に示します。

仮想マシン MSI の例

  1. Azure Resource Manager は、VM で MSI を有効にするメッセージを受け取ります。
  2. Azure Resource Manager は、Azure AD で VM の ID を表すサービス プリンシパルを作成します。 このサブスクリプションによって信頼されている Azure AD テナントで、サービス プリンシパルが作成されます。
  3. Azure Resource Manager は、VM の MSI VM 拡張機能でサービス プリンシパルの詳細を構成します。 この手順には、拡張機能で使用されるクライアント ID と証明書を構成して、Azure AD からアクセス トークンを取得することが含まれます。
  4. これで、VM のサービス プリンシパル ID が認識され、Azure リソースへのアクセスを付与することができます。 たとえば、コードが Azure Resource Manager を呼び出す必要がある場合、Azure AD でロールベースのアクセス制御 (RBAC) を使用して、VM のサービス プリンシパルに適切な役割を割り当てることができます。 コードが Key Vault を呼び出す必要がある場合、Key Vault 内の特定のシークレットまたはキーへのアクセスをコードに付与します。
  5. VM で実行されているコードは、次のように MSI VM 拡張機能によってホストされているローカル エンドポイントからトークンを要求します。http://localhost:50342/oauth2/token リソース パラメーターは、トークンの送信先となるサービスを指定します。 たとえば、Azure Resource Manager に認証するようにコードを設定する場合は、resource=https://management.azure.com/ を使用します。
  6. MSI VM 拡張機能は、構成したクライアント ID と証明書を使用して Azure AD からアクセス トークンを要求します。 Azure AD は、JSON Web トークン (JWT) アクセス トークンを返します。
  7. コードは、Azure AD 認証をサポートするサービスへの呼び出しでアクセス トークンを送信します。

管理対象サービス ID をサポートする各 Azure サービスには、アクセス トークンを取得するためのコードの独自のメソッドがあります。 トークンを取得する特定のメソッドを検索するには、各サービスのチュートリアルをご覧ください。

Azure サービスは管理対象サービス ID をサポートしますか。

管理対象サービス ID をサポートする Azure サービスでは、MSI を使用して Azure AD 認証をサポートするサービスを認証できます。 Azure 全体で MSI と Azure AD 認証を統合する処理を行っています。 更新プログラムがないかどうか、頻繁に確認してください。

管理対象サービス ID をサポートする Azure サービス

次の Azure サービスは管理対象サービス ID をサポートします。

サービス 状態 日付
Azure Virtual Machines Preview 2017 年 9 月
Azure App Service Preview 2017 年 9 月
Azure Functions Preview 2017 年 9 月

Azure AD 認証をサポートしている Azure サービス

次のサービスは、Azure AD 認証をサポートしており、管理対象サービス ID を使用するクライアント サービスでテストされています。

サービス Resource ID 状態 日付
Azure リソース マネージャー https://management.azure.com/ 使用可能 2017 年 9 月
Azure Key Vault https://vault.azure.net/ 使用可能 2017 年 9 月
Azure Data Lake https://datalake.azure.net/ 使用可能 2017 年 9 月

管理対象サービス ID にはどれくらいのコストがかかりますか。

管理対象サービス ID は、Azure サブスクリプションの既定値である Azure Active Directory Free に付属しています。 管理対象サービス ID のための追加コストはありません。

サポートとフィードバック

お気軽にお問い合わせください。

管理対象のサービス ID を試行する

さまざまな Azure リソースにアクセスするためのエンド ツー エンドのシナリオについては、管理対象サービス ID のチュートリアルを試してください。

アクセス元の MSI 対応リソース 説明内容
Azure VM (Windows) Windows VM 管理対象サービスID (MSI) を使用して Azure Resource Manager にアクセスする
Windows VM 管理対象サービスID (MSI) を使用して Azure Storage にアクセスする
Windows VM 管理対象サービス ID (MSI) および Azure Key Vault を使用して Azure AD 以外のリソースにアクセスする
Azure VM (Linux) Linux VM 管理対象サービスID (MSI) を使用して Azure Resource Manager にアクセスする
Linux VM 管理対象サービスID (MSI) を使用して Azure Storage にアクセスする
Linux VM 管理対象サービスID (MSI) を使用して Azure AD 以外のリソースにアクセスする
Azure App Service Azure App Service または Azure Functions で管理対象サービス ID を使用する
Azure 関数 Azure App Service または Azure Functions で管理対象サービス ID を使用する

Azure リソースでの MSI の有効化の基礎についてのみ知りたい場合は、以下を参照してください。

Azure リソース MSI の有効化/無効化に使用するもの
Azure VM (Windows) Azure ポータル
PowerShell
Azure CLI
Azure リソース マネージャーのテンプレート

次に、ロール ベースのアクセス制御 (RBAC) を使用して、他の Azure リソースにアクセスするための MSI 権限を付与する方法については、以下を参照してください。

アクセス元の MSI 対応リソース 他の Azure リソースに対するアクセス権の割り当てに使用するもの
Azure VM (Windows) Azure ポータル
PowerShell
Azure CLI