マネージド ID による Azure SQL Database のセキュリティ強化がさらに簡単に!

執筆者: Nick Brown (Security Software Engineer, Cloud & AI Security Green Team)

このポストは、2019 年 4 月 25 日に投稿された Securing Azure SQL Databases with managed identities just got easier! の翻訳です。

 

Azure Services App Authentication ライブラリ バージョン 1.2.0 (英語) のプレビュー 2 がリリースされました。このリリースでは、既存の .NET アプリで Azure SQL Database へのシンプルかつシームレスな認証が可能になり、コードを変更する必要はなく、設定を変更するだけで済むようになりました。これまで既存の SQL アプリでマネージド ID と AAD ベース認証を使用するには、認証に使用するアクセス トークンを取得および設定するために、コードを変更する必要がありました。開発者の多くは App Authentication ライブラリを使い慣れているため、そこから次のようにアクセス トークンを取得していました。

 SqlConnection connection = new SqlConnection(connectionString);
connection.AccessToken = await (new AzureServiceTokenProvider()).GetAccessTokenAsync("https://database.windows.net/")
connection.Open();

このコード変更の実装とテストは、簡単に済まないケースがよく見られました。EntityFramework が複雑に絡んでくることが原因で、エラーが発生しやすかったためです。それは StackOverflow (英語) に寄せられた問い合わせの多さ (英語) からも明らかでした。しかし、.NET Framework 4.7.2 (英語) では SqlClient 向けの新機能が追加され、アプリの設定を介して SQL 認証プロバイダーを登録できるようになりました。この SQL 認証プロバイダーの実装作業は既に完了しているため、この後示すとおり、プロバイダーを登録するための簡単な設定変更のみでよくなりました。

今回リリースされた新しい App Authentication ライブラリによって、多くの開発者の皆様が SQL を基盤とした既存のソリューションで新機能を試し、App Authentication ライブラリとマネージド ID によるセキュリティ上のメリットを得られるようになると考えています。この新機能の詳細情報と試用については、こちらのサンプル (英語) をご確認ください。

リリース前: 資格情報を含む接続文字列を使用

 <connectionStrings>
   <!-- using connection string containing credentials -->
   <add name="MyDbConnection" connectionString="Data Source=tcp:[SQL Server Name].database.windows.net;Initial Catalog=[SQL DB name];UID=[UID];Password=[pwd]" providerName="System.Data.SqlClient" />
</connectionStrings>

リリース後: App Authentication の SqlAppAuthenticationProvider を登録

 <configSections>
   ...
   <!-- Change #1: Register the new SqlAuthenticationProvider configuration section -->
   <section name="SqlAuthenticationProviders" type="System.Data.SqlClient.SqlAuthenticationProviderConfigurationSection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<connectionStrings>
   <!-- Change #2: Update the connection string to remove credentials and reference the registered SQL authentication provider from change #3 -->
   <add name="MyDbConnection" connectionString="Data Source=tcp:[SQL Server Name].database.windows.net;Initial Catalog=[SQL DB Name];UID=AnyString;Authentication=Active Directory Interactive" providerName="System.Data.SqlClient" />
</connectionStrings>
<!-- Change #3: Add the new SqlAuthenticationProvider configuration section, registering the built-in authentication provider in AppAuth library -->
<SqlAuthenticationProviders>
   <providers>
     <add name="Active Directory Interactive" type="Microsoft.Azure.Services.AppAuthentication.SqlAppAuthenticationProvider, Microsoft.Azure.Services.AppAuthentication" />
   </providers>
</SqlAuthenticationProviders>

ぜひ今すぐ App Authentication ライブラリの新しい SQL 認証プロバイダー機能をお試しください。不明な点や懸念事項がございましたら、StackOverflow (英語) までお寄せください。