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.
Berlaku untuk:Azure SQL Database
Permintaan aplikasi ke Azure SQL Database harus diautentikasi. Meskipun ada beberapa opsi untuk mengautentikasi ke Azure SQL Database, Anda harus memprioritaskan koneksi tanpa kata sandi di aplikasi Anda jika memungkinkan. Metode autentikasi tradisional yang menggunakan kata sandi atau kunci rahasia menciptakan risiko dan komplikasi keamanan. Kunjungi koneksi tanpa kata sandi untuk hub layanan Azure untuk mempelajari selengkapnya tentang keuntungan pindah ke koneksi tanpa kata sandi.
Tutorial berikut menjelaskan cara memigrasikan aplikasi Node.js yang ada untuk menyambungkan ke Azure SQL Database untuk menggunakan koneksi tanpa kata sandi alih-alih solusi nama pengguna dan kata sandi.
Mengonfigurasi Azure SQL Database
Koneksi tanpa kata sandi menggunakan autentikasi Microsoft Entra untuk menyambungkan ke layanan Azure, termasuk Azure SQL Database. Autentikasi Microsoft Entra, Anda dapat mengelola identitas di lokasi pusat untuk menyederhanakan manajemen izin. Pelajari selengkapnya tentang mengonfigurasi autentikasi Microsoft Entra untuk Azure SQL Database Anda:
Untuk panduan migrasi ini, pastikan Anda memiliki admin Microsoft Entra yang ditetapkan ke Azure SQL Database Anda.
Navigasi ke halaman Microsoft Entra dari server logis Anda.
Pilih Atur admin untuk membuka menu flyout ID Microsoft Entra.
Di menu flyout ID Microsoft Entra, cari pengguna yang ingin Anda tetapkan sebagai admin.
Pilih pengguna dan pilih Pilih.
Mengonfigurasi lingkungan pengembangan lokal Anda
Koneksi tanpa kata sandi dapat dikonfigurasi agar berfungsi untuk lingkungan lokal dan yang dihosting Azure. Di bagian ini, Anda menerapkan konfigurasi untuk memungkinkan pengguna individual mengautentikasi ke Azure SQL Database untuk pengembangan lokal.
Masuk ke Azure
Untuk pengembangan lokal, pastikan Anda masuk dengan akun Microsoft Azure AD yang sama dengan yang ingin Anda gunakan untuk mengakses Azure SQL Database. Anda dapat mengautentikasi melalui alat pengembangan populer, seperti Azure CLI atau Azure PowerShell. Alat pengembangan yang dapat Anda autentikasi bervariasi di seluruh bahasa.
Masuk ke Azure melalui Azure CLI menggunakan perintah berikut:
az login
Membuat pengguna database dan menetapkan peran
Membuat pengguna di Azure SQL Database. Pengguna harus sesuai dengan akun Azure yang Anda gunakan untuk masuk secara lokal di bagian Masuk ke Azure .
Di portal Azure, telusuri ke database SQL Anda dan pilih Editor kueri (pratinjau).
Pilih Lanjutkan seperti
<your-username>di sisi kanan layar untuk masuk ke database menggunakan akun Anda.Pada tampilan editor kueri, jalankan perintah T-SQL berikut ini:
CREATE USER [user@domain] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [user@domain]; ALTER ROLE db_datawriter ADD MEMBER [user@domain]; ALTER ROLE db_ddladmin ADD MEMBER [user@domain]; GOMenjalankan perintah ini menetapkan peran Kontributor SQL DB ke akun yang ditentukan. Peran ini memungkinkan identitas untuk membaca, menulis, dan memodifikasi data dan skema database Anda. Untuk informasi selengkapnya tentang peran yang ditetapkan, lihat Peran database tetap.
Memperbarui konfigurasi koneksi lokal
Buat pengaturan lingkungan untuk aplikasi Anda.
AZURE_SQL_SERVER=<YOURSERVERNAME>.database.windows.net AZURE_SQL_DATABASE=<YOURDATABASENAME> AZURE_SQL_PORT=1433Kode aplikasi yang ada yang tersambung ke Azure SQL Database menggunakan Driver SQL Node.js - melelahkan terus bekerja dengan koneksi tanpa kata sandi dengan perubahan kecil. Untuk menggunakan identitas terkelola yangditetapkan pengguna, berikan
authentication.typeproperti danoptions.clientId.import sql from 'mssql'; // Environment settings - no user or password const server = process.env.AZURE_SQL_SERVER; const database = process.env.AZURE_SQL_DATABASE; const port = parseInt(process.env.AZURE_SQL_PORT); // Passwordless configuration const config = { server, port, database, authentication: { type: 'azure-active-directory-default', }, options: { encrypt: true, clientId: process.env.AZURE_CLIENT_ID // <----- user-assigned managed identity } }; // Existing application code export default class Database { config = {}; poolconnection = null; connected = false; constructor(config) { this.config = config; console.log(`Database: config: ${JSON.stringify(config)}`); } async connect() { try { console.log(`Database connecting...${this.connected}`); if (this.connected === false) { this.poolconnection = await sql.connect(this.config); this.connected = true; console.log('Database connection successful'); } else { console.log('Database already connected'); } } catch (error) { console.error(`Error connecting to database: ${JSON.stringify(error)}`); } } async disconnect() { try { this.poolconnection.close(); console.log('Database connection closed'); } catch (error) { console.error(`Error closing database connection: ${error}`); } } async executeQuery(query) { await this.connect(); const request = this.poolconnection.request(); const result = await request.query(query); return result.rowsAffected[0]; } } const databaseClient = new Database(config); const result = await databaseClient.executeQuery(`select * from mytable where id = 10`);Variabel
AZURE_CLIENT_IDlingkungan dibuat nanti dalam tutorial ini.
Menguji aplikasi
Jalankan aplikasi Anda secara lokal dan verifikasi bahwa koneksi ke Azure SQL Database berfungsi seperti yang diharapkan. Perlu diingat bahwa diperlukan waktu beberapa menit agar perubahan pada pengguna dan peran Azure disebarluaskan melalui lingkungan Azure Anda. Aplikasi Anda sekarang dikonfigurasi untuk berjalan secara lokal tanpa pengembang harus mengelola rahasia dalam aplikasi itu sendiri.
Mengonfigurasikan lingkungan hosting Azure
Setelah aplikasi Anda dikonfigurasi untuk menggunakan koneksi tanpa kata sandi secara lokal, kode yang sama dapat mengautentikasi ke Azure SQL Database setelah disebarkan ke Azure. Bagian yang mengikuti menjelaskan cara mengonfigurasi aplikasi yang disebarkan untuk menyambungkan ke Azure SQL Database menggunakan identitas terkelola. Identitas terkelola menyediakan identitas terkelola secara otomatis di ID Microsoft Entra (sebelumnya Azure Active Directory) untuk digunakan aplikasi saat menyambungkan ke sumber daya yang mendukung autentikasi Microsoft Entra. Pelajari selengkapnya tentang identitas terkelola:
- Gambaran umum tanpa kata sandi
- Praktik terbaik identitas terkelola
- Identitas terkelola di Microsoft Entra untuk Azure SQL
Buat identitas terkelola
Buat identitas terkelola yang ditetapkan pengguna menggunakan portal Azure atau Azure CLI. Aplikasi Anda menggunakan identitas untuk mengautentikasi ke layanan lain.
- Di bagian atas portal Azure, cari Identitas terkelola. Pilih hasil Identitas Terkelola.
- Pilih + Buat di bagian atas halaman gambaran umum Identitas Terkelola.
- Pada tab Dasar , masukkan nilai berikut ini:
- Langganan: Pilih langganan yang Anda inginkan.
- Grup sumber daya: Pilih grup sumber daya yang Anda inginkan.
- Wilayah: Pilih wilayah di dekat lokasi Anda.
- Nama: Masukkan nama yang dapat dikenali untuk identitas Anda, seperti MigrationIdentity.
- Pilih Tinjau + buat di bagian bawah halaman.
- Setelah pemeriksaan validasi selesai, pilih Buat. Azure membuat identitas baru yang ditetapkan pengguna.
Setelah sumber daya dibuat, pilih Buka sumber daya untuk melihat detail identitas terkelola.
Mengaitkan identitas terkelola dengan aplikasi web Anda
Konfigurasikan aplikasi web Anda untuk menggunakan identitas terkelola yang ditetapkan pengguna yang Anda buat.
Selesaikan langkah-langkah berikut di portal Azure untuk mengaitkan identitas terkelola yang ditetapkan pengguna dengan aplikasi Anda. Langkah-langkah yang sama ini berlaku untuk layanan Azure berikut ini:
- Azure Spring Apps
- Azure Container Apps
- Komputer virtual Azure
- Azure Kubernetes Service
- Navigasi ke halaman gambaran umum aplikasi web Anda.
Pilih Identitas dari navigasi kiri.
Pada halaman Identitas , beralihlah ke tab Pengguna yang ditetapkan.
Pilih + Tambahkan untuk membuka flyout Tambahkan identitas terkelola yang ditetapkan pengguna.
Pilih langganan yang Anda gunakan sebelumnya untuk membuat identitas.
Cari MigrationIdentity menurut nama dan pilih dari hasil pencarian.
Pilih Tambahkan untuk mengaitkan identitas dengan aplikasi Anda.
Membuat pengguna database untuk identitas dan menetapkan peran
Buat pengguna database SQL yang memetakan kembali ke identitas terkelola yang ditetapkan pengguna. Tetapkan peran SQL yang diperlukan kepada pengguna untuk memungkinkan aplikasi Anda membaca, menulis, dan memodifikasi data dan skema database Anda.
Di portal Azure, telusuri ke database SQL Anda dan pilih Editor kueri (pratinjau).
Pilih Lanjutkan seperti
<username>di sisi kanan layar untuk masuk ke database menggunakan akun Anda.Pada tampilan editor kueri, jalankan perintah T-SQL berikut ini:
CREATE USER [user-assigned-identity-name] FROM EXTERNAL PROVIDER; ALTER ROLE db_datareader ADD MEMBER [user-assigned-identity-name]; ALTER ROLE db_datawriter ADD MEMBER [user-assigned-identity-name]; ALTER ROLE db_ddladmin ADD MEMBER [user-assigned-identity-name]; GOMenjalankan perintah ini menetapkan peran Kontributor SQL DB ke identitas terkelola yang ditetapkan pengguna. Peran ini memungkinkan identitas untuk membaca, menulis, dan memodifikasi data dan skema database Anda.
Penting
Berhati-hatilah saat menetapkan peran pengguna database di lingkungan produksi perusahaan. Dalam skenario tersebut, aplikasi tidak boleh melakukan semua operasi menggunakan satu identitas yang ditingkatkan. Cobalah untuk menerapkan prinsip hak istimewa paling sedikit dengan mengonfigurasi beberapa identitas dengan izin tertentu untuk tugas tertentu.
Anda dapat membaca selengkapnya tentang mengonfigurasi peran database dan keamanan pada sumber daya berikut:
Membuat pengaturan aplikasi untuk ID klien identitas terkelola
Untuk menggunakan . Anda dapat mengatur variabel ini di bagian Konfigurasi aplikasi Anda di portal Azure. Anda dapat menemukan ID klien di bagian Gambaran Umum sumber daya identitas terkelola di portal Azure.
Simpan perubahan Anda dan mulai ulang aplikasi jika tidak melakukannya secara otomatis.
Jika Anda perlu menggunakan identitas terkelola yang ditetapkan sistem, hilangkanoptions.clientId properti . Anda masih perlu melewati authentication.type properti .
const config = {
server,
port,
database,
authentication: {
type: 'azure-active-directory-default'
},
options: {
encrypt: true
}
};
Uji aplikasi
Uji aplikasi Anda untuk memastikan semuanya masih berfungsi. Dibutuhkan beberapa menit agar semua perubahan disebarluaskan melalui lingkungan Azure Anda.