🐕

学生AzureアカウントでAzure SQL Database利用する時に躓いた所

2023/10/07に公開

やろうとしたこと

Static web app内包Functionsを使用して、Azure SQL Databaseに接続する実装をしました。
その際にAzureAD認証を利用してDBへ接続を行っていたのですが、デプロイ先の環境でエラーが発生して、何となく無理っぽそうな香りがしたので諦めです。備忘録です。

環境

詳しく

やったこと

Azure Static Web Appsの設定画面から、接続文字列SqlConnectionStringを設定しました。
ローカルでは、しっかりDBに接続できていました。

エラー内容

その後デプロイして、StaticWebAppのデプロイ先URLを参照すると、DB全件取得のFunctionsから500エラーが発生していました。

AppInsightsExtensionからエラーを詳しく調べると、SWAの環境変数として、接続文字列のほかに、AZURE_TENANT_IDAZURE_CLIENT_ID,AZURE_CLIENT_SECRETを追加で設定する必要があることがわかりました。

結局できなかったこと

AZURE_TENANT_IDは取得できたのですが、AZURE_CLIENT_IDAZURE_CLIENT_SECRETを取得するには、所属している大学用アカウントのAzure ADの権限が必要であることがわかりました。
私は、大学用アカウントのAzure ADの権限を持っていないため、AZURE_CLIENT_IDAZURE_CLIENT_SECRETを取得することができませんでした。


Azure Active Directory(Microsoft Entra ID)にアクセスしようとするとこうなる。

解決策

結局SQL認証を使用してDBと接続するしかないです。
SQL認証でやり直し、接続文字列をSQL認証のものに更新すると、無事上手くいきました。
ここで注意なのですが、SQL認証の接続文字列には、パスワードを含める必要があるので、見落とさないようにしてください。

まとめ

大学用アカウントのAzure ADの権限が無いため、デプロイ先の環境ではAzure AD認証を利用したDB接続は行えませんでした。
Azure ADのリソース作成時点でAzure AD認証が利用でき、ローカルデバッグの際には認証が通っていたのが何とも言えないですね。
Azure AD(Entra ID)、まだまだ分からないことだらけなので、もう少し勉強したいですね。

参考資料

https://learn.microsoft.com/en-us/azure/databricks/dev-tools/service-prin-aad-token
https://learn.microsoft.com/ja-jp/dotnet/api/azure.identity?view=azure-dotnet

Discussion