マネージド ID を使用して Azure SQL Database を Azure Spring Apps にデプロイされたアプリに接続する
Note
Azure Spring Apps は、Azure Spring Cloud サービスの新しい名前です。 サービスの名前は新しくなりましたが、スクリーンショット、ビデオ、図などの資産の更新に取り組んでいる間、場所によってはしばらく古い名前が表示されます。
この記事の適用対象: ✔️ Java ✔️ C#
この記事の適用対象: ✔️ Basic または Standard ✔️ Enterprise
この記事では、Azure Spring Apps にデプロイされたアプリのマネージド ID を作成し、それを使用して Azure SQL Database にアクセスする方法について説明します。
Azure SQL Database は、クラウド向けに構築されたインテリジェントでスケーラブルなリレーショナル データベース サービスです。 パフォーマンスと持続性を最適化する、AI を活用した自動機能により、常に最新の状態に保たれます。 サーバーレス コンピューティングと Hyperscale ストレージ オプションを使用することで、リソースが必要に応じて自動的にスケーリングされるため、ストレージ サイズやリソースの管理に煩わされずに、新しいアプリケーションの構築に専念できます。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Azure CLI バージョン 2.45.0 以上。
- Spring Data JPA チュートリアルに従って Azure SQL Database をプロビジョニングし、Java アプリをローカルで操作できるようにします。
- Azure Spring Apps のシステム割り当てマネージド ID チュートリアルに従って、マネージド ID を有効にして Azure Spring Apps でアプリをプロビジョニングします。
マネージド ID を使用して Azure SQL Database に接続する
手動の手順に従うか、Service Connector を使用して、マネージド ID を使用してアプリケーションを Azure SQL Database に接続できます。
マネージド ID にアクセス許可を付与する
SQL サーバーに接続して、次の SQL クエリを実行します。
CREATE USER [<managed-identity-name>] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [<managed-identity-name>];
ALTER ROLE db_datawriter ADD MEMBER [<managed-identity-name>];
ALTER ROLE db_ddladmin ADD MEMBER [<managed-identity-name>];
GO
<managed-identity-name>
プレースホルダーの値はルール <service-instance-name>/apps/<app-name>
に従います (例: myspringcloud/apps/sqldemo
)。 次のコマンドを使用して、Azure CLI でマネージド ID 名のクエリを実行することもできます。
az ad sp show --id <identity-object-ID> --query displayName
マネージド ID を使用するように Java アプリを構成する
次の例に示すように、src/main/resources/application.properties ファイルを開き、spring.datasource.url
行の末尾に Authentication=ActiveDirectoryMSI;
を追加します。 $AZ _DATABASE_NAME 変数には、必ず正しい値を使用してください。
spring.datasource.url=jdbc:sqlserver://$AZ_DATABASE_NAME.database.windows.net:1433;database=demo;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;Authentication=ActiveDirectoryMSI;
アプリを構築して Azure Spring Apps にデプロイする
アプリをリビルドし、「前提条件」の 2 番目の箇条書きでプロビジョニングした Azure Spring Apps にデプロイします。 これで、JPA を使用して Azure Spring Apps の Azure SQL Database にデータを格納および取得するマネージド ID によって認証された Spring Boot アプリケーションが作成されました。