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 dengan menggunakan portal 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 dengan menggunakan identitas terkelola.
Nota
Tutorial ini tidak berfungsi untuk R2DBC.
Prasyarat
- Langganan Azure. Jika Anda belum memilikinya, buat akun gratis.
- Azure CLI versi 2.45.0 atau yang lebih tinggi.
- Ekstensi Azure Spring Apps. Instal 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 dengan 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 mengonfigurasi wilayah yang lebih dekat dengan tempat Anda tinggal. Lihat 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 admin-user atau admin-password parameter, sistem akan menghasilkan pengguna admin default atau kata sandi admin acak.
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 menjalankan tugas berikut di latar belakang:
Mengaktifkan identitas terkelola yang ditetapkan sistem untuk aplikasi
$AZ_SPRING_APPS_APP_NAMEyang dihosting oleh Azure Spring Apps.Mengatur admin Microsoft Entra ke pengguna yang masuk saat ini.
Menambahkan pengguna database bernama
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAMEuntuk identitas terkelola yang dibuat di langkah 1 dan memberikan semua hak istimewa database$AZ_DATABASE_NAMEkepada pengguna ini.Menambahkan dua konfigurasi ke aplikasi
$AZ_SPRING_APPS_APP_NAME:spring.datasource.urldanspring.datasource.username.Nota
Jika Anda melihat pesan
The subscription is not registered to use Microsoft.ServiceLinkerkesalahan , 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 dengan 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 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, gunakan 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 Anda buat, seperti yang ditunjukkan 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