Bagikan melalui


Mengonfigurasi koneksi database tanpa kata sandi untuk aplikasi Java di Red Hat JBoss EAP

Artikel ini memperlihatkan kepada Anda cara mengonfigurasi koneksi database tanpa kata sandi untuk aplikasi Java di penawaran Red Hat JBoss EAP dengan portal Microsoft Azure.

Dalam panduan ini, Anda menyelesaikan tugas-tugas berikut:

  • Memprovisikan sumber daya database menggunakan Azure CLI.
  • Aktifkan administrator Microsoft Entra dalam database.
  • Siapkan identitas terkelola yang ditetapkan pengguna dan buat pengguna database untuk identitas tersebut.
  • Konfigurasikan koneksi database tanpa kata sandi di penawaran Red Hat JBoss EAP dengan portal Microsoft Azure.
  • Memvalidasi koneksi database.

Penawaran ini mendukung koneksi tanpa kata sandi untuk database Azure untuk database PostgreSQL dan Azure SQL.

Prasyarat

Pilih wilayah untuk penyebaran

Pilih wilayah yang memiliki SKU yang tersedia untuk database yang Anda inginkan. Perintah Azure CLI berikut mencantumkan SKU yang tersedia di wilayah tertentu. Terus coba wilayah yang berbeda hingga Anda menemukan wilayah yang memiliki beberapa hasil.

az mysql flexible-server list-skus --location "$REGION" --output table

Membuat grup sumber daya

Buat grup sumber daya dengan az group create. Karena grup sumber daya harus unik di dalam langganan, pilih nama unik. Cara mudah untuk memiliki nama unik adalah dengan menggunakan kombinasi inisial Anda, tanggal hari ini, dan beberapa pengidentifikasi - misalnya, abc1228rg. Contoh beriku ini membuat nama grup sumber daya abc1228rg di eastus lokasi.

export RESOURCE_GROUP_NAME="abc1228rg"
export REGION=eastus
az group create \
    --name ${RESOURCE_GROUP_NAME} \
    --location ${REGION}

Buatlah sebuah server basis data dan sebuah basis data

Buat server fleksibel dengan perintah az mysql flexible-server create. Contoh ini membuat server fleksibel bernama mysql20221201 dengan pengguna azureuser admin dan kata sandi Secret123456admin . Ganti kata sandi dengan kata sandi Anda. Untuk informasi selengkapnya, lihat Membuat Server Fleksibel Azure Database for MySQL menggunakan Azure CLI.

export MYSQL_NAME="mysql20221201"
export MYSQL_ADMIN_USER="azureuser"
export MYSQL_ADMIN_PASSWORD="Secret123456"

az mysql flexible-server create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $MYSQL_NAME \
    --location ${REGION} \
    --admin-user $MYSQL_ADMIN_USER \
    --admin-password $MYSQL_ADMIN_PASSWORD \
    --public-access 0.0.0.0 \
    --tier Burstable \
    --sku-name Standard_B1ms

Buat database dengan az mysql flexible-server db create.

export DATABASE_NAME="contoso"

# create mysql database
az mysql flexible-server db create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server-name $MYSQL_NAME \
    --database-name $DATABASE_NAME

Saat perintah selesai, Anda akan melihat output yang mirip dengan contoh berikut:

Creating database with utf8 charset and utf8_general_ci collation
{
  "charset": "utf8",
  "collation": "utf8_general_ci",
  "id": "/subscriptions/contoso-hashcode/resourceGroups/abc1228rg/providers/Microsoft.DBforMySQL/flexibleServers/mysql20221201/databases/contoso",
  "name": "contoso",
  "resourceGroup": "abc1228rg",
  "systemData": null,
  "type": "Microsoft.DBforMySQL/flexibleServers/databases"
}

Mengonfigurasi administrator Microsoft Entra untuk database Anda

Sekarang setelah Anda membuat database, Anda harus membuatnya siap untuk mendukung koneksi tanpa kata sandi. Koneksi tanpa kata sandi memerlukan kombinasi identitas terkelola untuk sumber daya Azure dan autentikasi Microsoft Entra. Untuk gambaran umum identitas terkelola untuk sumber daya Azure, lihat Apa itu identitas terkelola untuk sumber daya Azure?

Untuk informasi tentang bagaimana Server Fleksibel MySQL berinteraksi dengan identitas terkelola, lihat dokumentasi Azure Database for MySQL.

Contoh berikut mengonfigurasi pengguna Azure CLI saat ini sebagai akun administrator Microsoft Entra. Untuk mengaktifkan autentikasi Azure, Anda perlu menetapkan identitas ke Server Fleksibel MySQL.

Pertama, buat identitas terkelola dengan az identity create dan tetapkan identitas ke server MySQL dengan az mysql flexible-server identity assign.

export MYSQL_UMI_NAME="id-mysql-aad-20221205"

# create a User Assigned Managed Identity for MySQL to be used for AAD authentication
az identity create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $MYSQL_UMI_NAME

## assign the identity to the MySQL server
az mysql flexible-server identity assign \
    --resource-group $RESOURCE_GROUP_NAME \
    --server-name $MYSQL_NAME \
    --identity $MYSQL_UMI_NAME

Kemudian, atur pengguna Azure CLI saat ini sebagai akun administrator Microsoft Entra dengan az mysql flexible-server ad-admin create.

export CURRENT_USER=$(az account show --query user.name --output tsv)
export CURRENT_USER_OBJECTID=$(az ad signed-in-user show --query id --output tsv)

az mysql flexible-server ad-admin create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server-name $MYSQL_NAME \
    --object-id $CURRENT_USER_OBJECTID \
    --display-name $CURRENT_USER \
    --identity $MYSQL_UMI_NAME

Buat identitas terkelola yang ditetapkan pengguna

Selanjutnya, di Azure CLI, buat identitas di langganan Anda dengan menggunakan perintah az identity create. Anda menggunakan identitas terkelola ini untuk menyambungkan ke database Anda.

az identity create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myManagedIdentity

Untuk mengonfigurasi identitas dalam langkah-langkah berikut, gunakan perintah az identity show untuk menyimpan ID klien identitas dalam variabel shell.

# Get client ID of the user-assigned identity
export CLIENT_ID=$(az identity show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myManagedIdentity \
    --query clientId \
    --output tsv)

Buat pengguna database untuk identitas terkelola Anda

Pertama, Anda diharuskan membuat aturan firewall untuk mengakses server database dari klien CLI Anda. Jalankan perintah berikut untuk mendapatkan alamat IP Anda saat ini:

export MY_IP=$(curl http://whatismyip.akamai.com)

Jika Anda mengerjakan Subsistem Windows untuk Linux (WSL) dengan VPN diaktifkan, perintah berikut mungkin mengembalikan alamat IPv4 yang salah. Salah satu cara untuk mendapatkan alamat IPv4 Anda adalah dengan mengunjungi whatismyipaddress.com. Atur variabel lingkungan MY_IP sebagai alamat IPv4 tempat Anda ingin menyambungkan ke database. Anda akan mengonfigurasi firewall database dengan alamat IP ini nantinya.

Sambungkan sebagai pengguna administrator Microsoft Entra ke database MySQL Anda, dan buat pengguna MySQL untuk identitas terkelola Anda.

Buat aturan firewall sementara dengan az mysql flexible-server firewall-rule create.

az mysql flexible-server firewall-rule create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $MYSQL_NAME \
    --rule-name AllowCurrentMachineToConnect \
    --start-ip-address ${MY_IP} \
    --end-ip-address ${MY_IP}

Selanjutnya, siapkan file SQL untuk membuat pengguna database untuk identitas terkelola. Contoh berikut menambahkan pengguna dengan nama login identity-contoso dan memberikan hak istimewa pengguna untuk mengakses database contoso:

export IDENTITY_LOGIN_NAME="identity-contoso"

cat <<EOF >createuser.sql
SET aad_auth_validate_oids_in_tenant = OFF;
DROP USER IF EXISTS '${IDENTITY_LOGIN_NAME}'@'%';
CREATE AADUSER '${IDENTITY_LOGIN_NAME}' IDENTIFIED BY '${CLIENT_ID}';
GRANT ALL PRIVILEGES ON ${DATABASE_NAME}.* TO '${IDENTITY_LOGIN_NAME}'@'%';
FLUSH privileges;
EOF

Jalankan file SQL dengan perintah az mysql flexible-server execute. Anda dapat mengambil token akses Anda dengan perintah az account get-access-token.

export RDBMS_ACCESS_TOKEN=$(az account get-access-token \
    --resource-type oss-rdbms \
    --query accessToken \
    --output tsv) 

az mysql flexible-server execute \
    --name ${MYSQL_NAME} \
    --admin-user ${CURRENT_USER} \
    --admin-password ${RDBMS_ACCESS_TOKEN} \
    --file-path "createuser.sql"

Anda mungkin diminta untuk menginstal ekstensi rdbms-connect, seperti yang ditunjukkan dalam output berikut. Tekan dan untuk melanjutkan. Jika Anda tidak bekerja bersama pengguna root, Anda perlu memasukkan kata sandi pengguna.

The command requires the extension rdbms-connect. Do you want to install it now? The command will continue to run after the extension is installed. (Y/n): y
Run 'az config set extension.use_dynamic_install=yes_without_prompt' to allow installing extensions without prompt.
This extension depends on gcc, libpq-dev, python3-dev and they will be installed first.
[sudo] password for user:

Jika file SQL berhasil dijalankan, output Anda mirip dengan contoh berikut:

Running *.sql* file 'createuser.sql'...
Successfully executed the file.
Closed the connection to mysql20221201

Identitas terkelola myManagedIdentity sekarang memiliki akses ke database saat mengautentikasi dengan nama pengguna identity-contoso.

Jika Anda tidak ingin lagi mengakses server dari alamat IP ini, Anda bisa menghapus aturan firewall dengan menggunakan perintah berikut:

az mysql flexible-server firewall-rule delete \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $MYSQL_NAME \
    --rule-name AllowCurrentMachineToConnect \
    --yes

Terakhir, gunakan perintah berikut untuk mendapatkan string koneksi yang Anda gunakan di bagian berikutnya:

export CONNECTION_STRING="jdbc:mysql://${MYSQL_NAME}.mysql.database.azure.com:3306/${DATABASE_NAME}?useSSL=true"
echo ${CONNECTION_STRING}

Mengonfigurasi koneksi database tanpa kata sandi untuk Red Hat JBoss EAP di Azure VM

Sebelum melanjutkan, pastikan bahwa identitas Azure yang Anda gunakan untuk masuk dan menyelesaikan artikel ini memiliki peran Pemilik dalam langganan saat ini atau peran Kontributor dan Administrator Akses Pengguna dalam langganan saat ini. Untuk gambaran umum peran Azure, lihat Apa itu kontrol akses berbasis peran Azure (Azure RBAC)? Untuk detail tentang peran tertentu yang diperlukan oleh penawaran marketplace Red Hat JBoss EAP, lihat Peran bawaan Azure.

Bagian ini menunjukkan kepada Anda cara mengonfigurasi koneksi sumber data tanpa kata sandi menggunakan penawaran Marketplace Azure untuk Red Hat JBoss EAP.

Pertama, mulai proses penyebaran penawaran. Berikut ini menawarkan dukungan koneksi database tanpa kata sandi:

Masukkan informasi yang diperlukan di panel Dasar dan panel lainnya jika Anda ingin mengaktifkan fitur tersebut. Saat Anda mencapai panel Database, masukkan konfigurasi tanpa kata sandi seperti yang diperlihatkan dalam langkah-langkah berikut:

  1. Untuk Sambungkan ke database?, pilih Ya.
  2. Di bawah Pengaturan koneksi, untuk Pilih jenis database, buka menu dropdown lalu pilih Azure SQL (mendukung koneksi tanpa kata sandi).
  3. Untuk Nama JNDI, masukkan testpasswordless atau nilai yang Anda harapkan.
  4. Untuk DataSource Connection String, masukkan string koneksi yang Anda peroleh di bagian terakhir.
  5. Pilih Gunakan koneksi sumber data tanpa kata sandi.
  6. Untuk Identitas terkelola yang ditetapkan pengguna, pilih identitas terkelola yang Anda buat di langkah sebelumnya. Dalam contoh ini, namanya myManagedIdentity.
  7. Pilih Tambahkan.

Bagian Pengaturan koneksi akan terlihat seperti cuplikan layar berikut:

Cuplikan layar portal Microsoft Azure yang memperlihatkan halaman Pilih jenis database.

Memverifikasi koneksi database

Koneksi database berhasil dikonfigurasi jika penyebaran penawaran selesai tanpa kesalahan.

Setelah penyebaran selesai, ikuti langkah-langkah ini di portal Microsoft Azure untuk menemukan URL konsol Admin.

  1. Temukan grup sumber daya tempat Anda menyebarkan JBoss EAP.
  2. Di bawah Pengaturan, pilih Penyebaran.
  3. Pilih penyebaran dengan Durasi terpanjang. Penyebaran ini harus ditempatkan di bagian bawah daftar.
  4. Pilih Output.
  5. URL konsol admin adalah nilai output adminConsole .
  6. Salin nilai variabel output adminConsole.
  7. Tempelkan nilai ke bilah alamat browser Anda dan tekan Enter untuk membuka halaman masuk Konsol Solusi Terintegrasi.

Gunakan langkah-langkah berikut untuk memverifikasi koneksi database:

  1. Masuk ke konsol admin dengan nama pengguna dan kata sandi yang Anda berikan di panel Dasar .

    Cuplikan layar login konsol admin.

  2. Setelah Masuk, pilih Konfigurasi dari menu utama.

  3. Pada kolom browser, pilih Subsistem, Sumber-sumber Data & Pengandar, Sumber-sumber Data, dataSource-mssqlserver.

  4. Di menu dropdown, pilih Uji koneksi

  5. Anda akan melihat pesan yang menyatakan sesuatu yang mirip dengan Successfully tested connection for data source dataSource-mssqlserver.

Cuplikan layar berikut menyoroti elemen antarmuka pengguna yang relevan:

Cuplikan layar konsol admin yang menampilkan halaman database pengujian.

Membersihkan sumber daya

Jika Anda tidak memerlukan sumber daya ini, Anda dapat menghapusnya dengan menggunakan perintah berikut:

az group delete --name ${RESOURCE_GROUP_NAME}
az group delete --name <resource-group-name-that-deploys-the-offer>

Langkah selanjutnya

Pelajari selengkapnya tentang menjalankan JBoss EAP di Azure RedHat OpenShift dan komputer virtual dengan mengikuti tautan berikut: