Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini memperlihatkan kepada Anda cara menggunakan koneksi tanpa kata sandi ke database Azure di aplikasi Spring Boot yang disebarkan ke Azure Spring Apps.
Dalam tutorial ini, Anda menyelesaikan tugas berikut menggunakan portal Microsoft Azure atau Azure CLI. Kedua metode dijelaskan dalam prosedur berikut.
- Menyediakan instans Azure Spring Apps.
- Membangun dan menyebarkan aplikasi ke Azure Spring Apps.
- Jalankan aplikasi yang tersambung ke database Azure menggunakan identitas terkelola.
Nota
Tutorial ini tidak berfungsi untuk R2DBC.
Prasyarat
- Langganan Azure. Jika Anda belum memilikinya, buat akun gratis sebelum memulai.
- Azure CLI 2.45.0 atau yang lebih tinggi diperlukan.
- Ekstensi Azure Spring Apps. Anda dapat menginstal ekstensi dengan menggunakan perintah:
az extension add --name spring. - Java Development Kit (JDK), versi 8, 11, atau 17.
- Klien Git.
- cURL atau utilitas HTTP serupa untuk menguji fungsionalitas.
- Klien baris perintah MySQL jika Anda memilih untuk menjalankan Azure Database for MySQL. Anda dapat terhubung ke server Anda dengan Azure Cloud Shell menggunakan alat klien populer, alat baris perintah mysql.exe. Atau, Anda dapat menggunakan baris perintah
mysqldi lingkungan lokal Anda. - ODBC Driver 18 untuk SQL Server jika Anda memilih untuk menjalankan Azure SQL Database.
Menyiapkan lingkungan kerja
Pertama, siapkan beberapa variabel lingkungan dengan menggunakan perintah berikut:
export AZ_RESOURCE_GROUP=passwordless-tutorial-rg
export AZ_DATABASE_SERVER_NAME=<YOUR_DATABASE_SERVER_NAME>
export AZ_DATABASE_NAME=demodb
export AZ_LOCATION=<YOUR_AZURE_REGION>
export AZ_SPRING_APPS_SERVICE_NAME=<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
export AZ_SPRING_APPS_APP_NAME=hellospring
export AZ_DB_ADMIN_USERNAME=<YOUR_DB_ADMIN_USERNAME>
export AZ_DB_ADMIN_PASSWORD=<YOUR_DB_ADMIN_PASSWORD>
export AZ_USER_IDENTITY_NAME=<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
Gantikan placeholder dengan nilai berikut, yang digunakan di seluruh artikel ini.
-
<YOUR_DATABASE_SERVER_NAME>: Nama server Azure Database Anda, yang harus unik di seluruh Azure. -
<YOUR_AZURE_REGION>: Wilayah Azure yang ingin Anda gunakan. Anda dapat menggunakaneastussecara default, tetapi kami sarankan Anda mengonfigurasi wilayah yang lebih dekat dengan tempat tinggal Anda. Anda dapat melihat daftar lengkap wilayah yang tersedia dengan menggunakanaz account list-locations. -
<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>: Nama instans Azure Spring Apps Anda. Panjang nama harus antara 4 dan 32 karakter dan hanya boleh berisi huruf kecil, angka, dan tanda hubung. Karakter pertama dari nama layanan harus berupa huruf dan karakter terakhir harus berupa huruf atau angka. -
<AZ_DB_ADMIN_USERNAME>: Nama pengguna admin server database Azure Anda. -
<AZ_DB_ADMIN_PASSWORD>: Kata sandi admin untuk server database Azure Anda. -
<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>: Nama server identitas terkelola yang ditetapkan pengguna Anda, yang harus unik di seluruh Azure.
Menyediakan instans Azure Spring Apps
Gunakan langkah-langkah berikut untuk menyediakan instans Azure Spring Apps.
Perbarui Azure CLI dengan ekstensi Azure Spring Apps dengan menggunakan perintah berikut:
az extension update --name springMasuk ke Azure CLI dan pilih langganan aktif Anda dengan menggunakan perintah berikut:
az login az account list --output table az account set --subscription <name-or-ID-of-subscription>Gunakan perintah berikut untuk membuat grup sumber daya untuk berisi layanan Azure Spring Apps Anda dan instans layanan Azure Spring Apps:
az group create \ --name $AZ_RESOURCE_GROUP \ --location $AZ_LOCATION az spring create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_SPRING_APPS_SERVICE_NAME
Membuat instans database Azure
Gunakan langkah-langkah berikut untuk menyediakan instans Azure Database.
- Azure Database for MySQL
- Basis Data Azure untuk PostgreSQL
- Azure SQL Database
Buat server Azure Database for MySQL dengan menggunakan perintah berikut:
az mysql flexible-server create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_DATABASE_SERVER_NAME \ --location $AZ_LOCATION \ --admin-user $AZ_DB_ADMIN_USERNAME \ --admin-password $AZ_DB_ADMIN_PASSWORD \ --yes
Nota
Jika Anda tidak menyediakan parameter admin-user atau admin-password, sistem akan menghasilkan pengguna admin default atau kata sandi admin acak secara default.
Buat database baru dengan menggunakan perintah berikut:
az mysql flexible-server db create \ --resource-group $AZ_RESOURCE_GROUP \ --database-name $AZ_DATABASE_NAME \ --server-name $AZ_DATABASE_SERVER_NAME
Membuat aplikasi dengan titik akhir publik yang ditetapkan
Gunakan perintah berikut untuk membuat aplikasi.
az spring app create \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--name $AZ_SPRING_APPS_APP_NAME \
--runtime-version=Java_17
--assign-endpoint true
Menyambungkan Azure Spring Apps ke database Azure
Pertama, instal Konektor Layanan ekstensi tanpa kata sandi untuk Azure CLI:
az extension add --name serviceconnector-passwordless --upgrade
- Azure Database for MySQL
- Basis Data Azure untuk PostgreSQL
- Azure SQL Database
Kemudian, gunakan perintah berikut untuk membuat identitas terkelola yang ditetapkan pengguna untuk autentikasi Microsoft Entra. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi Microsoft Entra untuk Azure Database for MySQL - Server Fleksibel.
export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
--name $AZ_USER_IDENTITY_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--query id \
--output tsv)
Penting
Setelah membuat identitas yang ditetapkan pengguna, minta administrator global Anda atau Administrator Peran Istimewa untuk memberikan izin berikut untuk identitas ini: User.Read.All, GroupMember.Read.All, dan Application.Read.ALL. Untuk informasi selengkapnya, lihat bagian Izin dari autentikasi Direktori Aktif.
Selanjutnya, gunakan perintah berikut untuk membuat koneksi tanpa kata sandi ke database.
az spring connection create mysql-flexible \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--app $AZ_SPRING_APPS_APP_NAME \
--target-resource-group $AZ_RESOURCE_GROUP \
--server $AZ_DATABASE_SERVER_NAME \
--database $AZ_DATABASE_NAME \
--system-identity mysql-identity-id=$AZ_IDENTITY_RESOURCE_ID
Perintah Konektor Layanan ini melakukan tugas-tugas berikut di latar belakang:
Aktifkan identitas terkelola yang ditetapkan sistem untuk aplikasi
$AZ_SPRING_APPS_APP_NAMEdihosting oleh Azure Spring Apps.Atur admin Microsoft Entra ke pengguna yang masuk saat ini.
Tambahkan pengguna database bernama
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAMEuntuk identitas terkelola yang dibuat di langkah 1 dan berikan semua hak istimewa database$AZ_DATABASE_NAMEkepada pengguna ini.Tambahkan dua konfigurasi ke aplikasi
$AZ_SPRING_APPS_APP_NAME:spring.datasource.urldanspring.datasource.username.Nota
Jika Anda melihat pesan kesalahan
The subscription is not registered to use Microsoft.ServiceLinker, jalankan perintahaz provider register --namespace Microsoft.ServiceLinkeruntuk mendaftarkan penyedia sumber daya Konektor Layanan, lalu jalankan perintah koneksi lagi.
Membangun dan menyebarkan aplikasi
Langkah-langkah berikut menjelaskan cara mengunduh, mengonfigurasi, membangun, dan menyebarkan aplikasi sampel.
Gunakan perintah berikut untuk mengkloning repositori kode sampel:
- Azure Database for MySQL
- Basis Data Azure untuk PostgreSQL
- Azure SQL Database
git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sampleTambahkan dependensi berikut ke file pom.xml Anda:
- Azure Database for MySQL
- Basis Data Azure untuk PostgreSQL
- Azure SQL Database
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>Dependensi ini menambahkan dukungan untuk starter Spring Cloud Azure.
Nota
Untuk informasi selengkapnya tentang cara mengelola versi pustaka Spring Cloud Azure dengan menggunakan tagihan materi (BOM), lihat bagian Memulai panduan pengembang Spring Cloud Azure.
Gunakan perintah berikut untuk memperbarui file application.properties :
- Azure Database for MySQL
- Basis Data Azure untuk PostgreSQL
- Azure SQL Database
cat << EOF > passwordless-sample/src/main/resources/application.properties logging.level.org.springframework.jdbc.core=DEBUG spring.datasource.azure.passwordless-enabled=true spring.sql.init.mode=always EOFGunakan perintah berikut untuk membangun proyek menggunakan Maven:
cd passwordless-sample ./mvnw clean package -DskipTestsGunakan perintah berikut untuk menerapkan file target/demo-0.0.1-SNAPSHOT.jar untuk aplikasi:
az spring app deploy \ --name $AZ_SPRING_APPS_APP_NAME \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --artifact-path target/demo-0.0.1-SNAPSHOT.jarKueri status aplikasi setelah penyebaran dengan menggunakan perintah berikut:
az spring app list \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --output tableAnda akan melihat output yang mirip dengan contoh berikut.
Name Location ResourceGroup Production Deployment Public Url Provisioning Status CPU Memory Running Instance Registered Instance Persistent Storage ----------------- ---------- --------------- ----------------------- --------------------------------------------------- --------------------- ----- -------- ------------------ --------------------- -------------------- <app name> eastus <resource group> default Succeeded 1 2 1/1 0/1 -
Menguji aplikasi
Untuk menguji aplikasi, Anda dapat menggunakan cURL. Pertama, buat item "todo" baru di database dengan menggunakan perintah berikut:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done": "true"}' \
https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Perintah ini mengembalikan item yang dibuat, seperti yang ditunjukkan dalam contoh berikut:
{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}
Selanjutnya, ambil data dengan menggunakan permintaan cURL berikut:
curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Perintah ini mengembalikan daftar item "todo", termasuk item yang telah Anda buat, seperti yang diperlihatkan dalam contoh berikut:
[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]
Membersihkan sumber daya
Untuk membersihkan semua sumber daya yang digunakan selama tutorial ini, hapus grup sumber daya dengan menggunakan perintah berikut:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes