Azure リソースのマネージド ID を使用したコンテナーの認証
Azure Key Vault では、Microsoft Entra ID を使用して、コンテナーへのアクセスを試みるユーザーとアプリを認証します。 コンテナーへのアクセスを Web アプリに付与するには、まず Microsoft Entra ID にアプリを登録する必要があります。 登録すると、アプリに対して ID が作成されます。 アプリに ID が作成されると、それにコンテナーのアクセス許可を割り当てることができるようになります。
アプリとユーザーは、Microsoft Entra の認証トークンを使用して、Key Vault に対して認証を行います。 Microsoft Entra ID からトークンを取得するには、シークレットまたは証明書が必要です。 トークンを持つすべてのユーザーは、アプリ ID を使用して、コンテナー内のすべてのシークレットにアクセスできます。
アプリのシークレットは、コンテナーでセキュリティにより保護されていますが、それにアクセスするために、コンテナー外でもシークレットまたは証明書を保持する必要があります。 この問題は、"ブートストラップの問題" と呼ばれており、Azure にはそのソリューションがあります。
Azure リソースのマネージド ID
Azure リソース用マネージド ID は、アプリが Key Vault やその他の Azure サービスへアクセスするために使用できる Azure の機能であり、コンテナーの外部で単一のシークレットを管理する必要はありません。 マネージド ID の使用は、Web アプリから Key Vault を活用するための単純かつ安全な方法です。
Web アプリでマネージド ID を有効にすると、Azure ではご利用のアプリが専用に使用されるよう、個別のトークンが付与される REST サービスがアクティブ化されます。 アプリからのトークンの要求は、直接 Microsoft Entra ID からではなく、このサービスから行われます。 アプリはシークレットを使ってこのサービスにアクセスする必要がありますが、そのシークレットは、アプリの起動時に App Service によってご利用のアプリの環境変数に挿入されます。 このシークレット値をどこかで管理したり格納する必要はありません。また、アプリ外部からこのシークレットまたはマネージド ID トークン サービスのエンドポイントにアクセスすることはできません。
Azure リソース用マネージド ID では、アプリも Microsoft Entra ID 内に登録されます。 Web アプリを削除するか、そのマネージド ID を無効にすると、Microsoft Entra ID によって登録が削除されます。
マネージド ID は、Azure サブスクリプションに付属している Free エディションを含む、Microsoft Entra ID のすべてのエディションで利用できます。 これを App Service で使用する場合、追加コストや構成が不要です。またアプリでいつでも有効または無効にできます。
Web アプリのマネージド ID を有効にするには、構成は不要で、1 つの Azure CLI コマンドのみで実行できます。 これは、後ほど App Service アプリを設定し、Azure にデプロイするときに行います。 ただし、その前に、マネージド ID に関する知識を使って、アプリ用のコードを記述します。