Konfigurowanie bez hasła połączeń bazy danych dla aplikacji Java na serwerach Oracle WebLogic

W tym artykule pokazano, jak skonfigurować bez hasła połączenia bazy danych dla aplikacji Java w ofertach oracle WebLogic Server w witrynie Azure Portal.

W tym przewodniku wykonasz następujące zadania:

  • Aprowizuj zasoby bazy danych przy użyciu interfejsu wiersza polecenia platformy Azure.
  • Włącz administratora firmy Microsoft Entra w bazie danych.
  • Aprowizuj tożsamość zarządzaną przypisaną przez użytkownika i utwórz dla niej użytkownika bazy danych.
  • Skonfiguruj połączenie bez hasła z bazą danych w ofertach Oracle WebLogic za pomocą witryny Azure Portal.
  • Zweryfikuj połączenie z bazą danych.

Oferuje ona obsługę połączeń bez hasła dla baz danych PostgreSQL, MySQL i Azure SQL Database.

Wymagania wstępne

Tworzenie grupy zasobów

Utwórz grupę zasobów za pomocą polecenia az group create. Ponieważ grupy zasobów muszą być unikatowe w ramach subskrypcji, wybierz unikatową nazwę. Łatwym sposobem na używanie unikatowych nazw jest użycie kombinacji inicjałów, dzisiejszej daty i identyfikatora. Na przykład abc1228rg. W tym przykładzie eastus zostanie utworzona grupa zasobów o nazwie abc1228rg w lokalizacji:

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

Tworzenie serwera bazy danych i bazy danych

Utwórz serwer elastyczny za pomocą polecenia az mysql flexible-server create . W tym przykładzie tworzony jest serwer elastyczny o nazwie z mysql20221201 hasłem Secret123456administratora azureuser i administratora. Zastąp hasło twoimi. Aby uzyskać więcej informacji, zobacz Create an Azure Database for MySQL Flexible Server using Azure CLI (Tworzenie serwera elastycznego usługi Azure Database for MySQL przy użyciu interfejsu wiersza polecenia platformy Azure).

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 eastus \
    --admin-user $MYSQL_ADMIN_USER \
    --admin-password $MYSQL_ADMIN_PASSWORD \
    --public-access 0.0.0.0 \
    --tier Burstable \
    --sku-name Standard_B1ms

Utwórz bazę danych za pomocą polecenia 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

Po zakończeniu wykonywania polecenia powinny zostać wyświetlone dane wyjściowe podobne do następującego przykładu:

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"
}

Konfigurowanie administratora usługi Microsoft Entra w bazie danych

Po utworzeniu bazy danych musisz przygotować ją do obsługi połączeń bez hasła. Połączenie bez hasła wymaga kombinacji tożsamości zarządzanych dla zasobów platformy Azure i uwierzytelniania firmy Microsoft Entra. Aby zapoznać się z omówieniem tożsamości zarządzanych dla zasobów platformy Azure, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure?

Aby uzyskać informacje na temat interakcji serwera elastycznego MySQL z tożsamościami zarządzanymi, zobacz Use Microsoft Entra ID for authentication with MySQL (Używanie identyfikatora Entra firmy Microsoft do uwierzytelniania za pomocą programu MySQL).

Poniższy przykład umożliwia skonfigurowanie bieżącego użytkownika interfejsu wiersza polecenia platformy Azure jako konta administratora firmy Microsoft Entra. Aby włączyć uwierzytelnianie platformy Azure, należy przypisać tożsamość do serwera elastycznego MySQL.

Najpierw utwórz tożsamość zarządzaną za pomocą polecenia az identity create i przypisz tożsamość do serwera MySQL za pomocą polecenia 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

Następnie ustaw bieżącego użytkownika interfejsu wiersza polecenia platformy Azure jako konto administratora usługi Microsoft Entra za pomocą polecenia 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

Tworzenie tożsamości zarządzanej przypisanej przez użytkownika

Następnie w interfejsie wiersza polecenia platformy Azure utwórz tożsamość w ramach subskrypcji przy użyciu polecenia az identity create . Ta tożsamość zarządzana służy do nawiązywania połączenia z bazą danych.

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

Aby skonfigurować tożsamość w poniższych krokach, użyj polecenia az identity show , aby zapisać identyfikator klienta tożsamości w zmiennej powłoki.

# 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)

Tworzenie użytkownika bazy danych dla tożsamości zarządzanej

Teraz połącz się jako użytkownik administratora firmy Microsoft Entra z bazą danych MySQL i utwórz użytkownika MySQL dla swojej tożsamości zarządzanej.

Najpierw należy utworzyć regułę zapory w celu uzyskania dostępu do serwera MySQL z poziomu klienta interfejsu wiersza polecenia. Uruchom następujące polecenia, aby uzyskać bieżący adres IP.

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

Jeśli pracujesz nad Podsystem Windows dla systemu Linux (WSL) z włączoną siecią VPN, następujące polecenie może zwrócić nieprawidłowy adres IPv4. Jednym ze sposobów uzyskania adresu IPv4 jest wizyta whatismyipaddress.com. W każdym razie ustaw zmienną środowiskową MY_IP jako adres IPv4, z którego chcesz nawiązać połączenie z bazą danych.

Utwórz tymczasową regułę zapory za pomocą polecenia 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}

Następnie przygotuj plik .sql , aby utworzyć użytkownika bazy danych dla tożsamości zarządzanej. Poniższy przykład dodaje użytkownika z nazwą identity-contoso logowania i przyznaje użytkownikowi uprawnienia dostępu do bazy danych 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

Wykonaj plik .sql za pomocą polecenia az mysql flexible-server execute. Token dostępu można uzyskać za pomocą polecenia 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"

Może zostać wyświetlony monit o zainstalowanie rdbms-connect rozszerzenia, jak pokazano w poniższych danych wyjściowych. Naciśnij klawisz y , aby kontynuować. Jeśli nie pracujesz z użytkownikiem root , musisz wprowadzić hasło użytkownika.

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:

Jeśli plik .sql zostanie wykonany pomyślnie, znajdziesz dane wyjściowe podobne do następującego przykładu:

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

Tożsamość myManagedIdentity zarządzana ma teraz dostęp do bazy danych podczas uwierzytelniania przy użyciu nazwy użytkownika identity-contoso.

Jeśli nie chcesz już uzyskiwać dostępu do serwera z tego adresu IP, możesz usunąć regułę zapory przy użyciu następującego polecenia.

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

Na koniec użyj następującego polecenia, aby uzyskać parametry połączenia, które są używane w następnej sekcji.

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

Konfigurowanie połączenia bez hasła bazy danych dla serwera Oracle WebLogic na maszynach wirtualnych platformy Azure

W tej sekcji pokazano, jak skonfigurować połączenie bez hasła ze źródłem danych przy użyciu ofert witryny Azure Marketplace dla serwera Oracle WebLogic.

Najpierw rozpocznij proces wdrażania oferty. Poniższe oferty obsługują połączenia bez hasła z bazą danych:

Wypełnij wymagane informacje w okienku Podstawy i inne okienka , jeśli chcesz włączyć te funkcje. Po dotarciu do okienka Baza danych wypełnij konfigurację bez hasła, jak pokazano w poniższych krokach.

  1. W przypadku Połączenie do bazy danych?, wybierz pozycję Tak.
  2. W obszarze ustawienia Połączenie ion w polu Wybierz typ bazy danych otwórz menu rozwijane, a następnie wybierz pozycję MySQL (z obsługą połączenia bez hasła).
  3. W polu Nazwa JNDI wprowadź wartość testpasswordordless lub oczekiwaną wartość.
  4. W polu DataSource Połączenie ion String wprowadź parametry połączenia uzyskane w ostatniej sekcji.
  5. W polu Nazwa użytkownika bazy danych wprowadź nazwę użytkownika bazy danych tożsamości zarządzanej ${IDENTITY_LOGIN_NAME}(wartość ). W tym przykładzie wartość to identity-contoso.
  6. Wybierz pozycję Użyj połączenia źródła danych bez hasła.
  7. W polu Tożsamość zarządzana przypisana przez użytkownika wybierz wcześniej utworzoną tożsamość zarządzaną. W tym przykładzie jego nazwa to myManagedIdentity.

Sekcja ustawień Połączenie ion powinna wyglądać podobnie jak na poniższym zrzucie ekranu, który używa klastra Oracle WebLogic Server na maszynach wirtualnych jako przykładu.

Zrzut ekranu witryny Azure Portal przedstawiający okienko Konfigurowanie bazy danych na stronie Tworzenie serwera Oracle WebLogic na maszynach wirtualnych.

Zakończono konfigurowanie połączenia bez hasła. Możesz kontynuować wypełnianie następujących okienk lub wybrać pozycję Przejrzyj i utwórz, a następnie pozycję Utwórz , aby wdrożyć ofertę.

Weryfikowanie połączenia z bazą danych

Połączenie z bazą danych zostało pomyślnie skonfigurowane, jeśli wdrożenie oferty zakończy się bez błędu.

Kontynuuj wykonywanie klastra Oracle WebLogic Server na maszynach wirtualnych jako przykład po zakończeniu wdrażania, wykonaj następujące kroki w witrynie Azure Portal, aby znaleźć adres URL konsoli Administracja.

  1. Znajdź grupę zasobów, w której wdrożono usługę WLS.
  2. W obszarze Ustawienia wybierz pozycję Wdrożenia.
  3. Wybierz wdrożenie z najdłuższym czasem trwania. To wdrożenie powinno znajdować się w dolnej części listy.
  4. Wybierz pozycję Dane wyjściowe.
  5. Adres URL konsoli webLogic Administracja istration jest wartością danych wyjściowych adminConsoleUrl.
  6. Skopiuj wartość zmiennej adminConsoleUrlwyjściowej .
  7. Wklej wartość na pasku adresu przeglądarki i naciśnij klawisz Enter, aby otworzyć stronę logowania w konsoli webLogic Administracja istration.

Wykonaj poniższe kroki, aby zweryfikować połączenie z bazą danych.

  1. Zaloguj się do konsoli Administracja istration WebLogic przy użyciu nazwy użytkownika i hasła podanego w okienku Podstawy.

  2. W obszarze Struktura domeny wybierz pozycję Usługi, Źródła danych, a następnie testpasswordless.

  3. Wybierz kartę Monitorowanie, na której jest uruchomiony stan źródła danych, jak pokazano na poniższym zrzucie ekranu.

  4. Wybierz kartę Testowanie , a następnie wybierz przycisk radiowy obok żądanego serwera.

  5. Wybierz pozycję Testuj źródło danych. Powinien zostać wyświetlony komunikat informujący o pomyślnym teście, jak pokazano na poniższym zrzucie ekranu.

    Zrzut ekranu przedstawiający portal konsoli WebLogic przedstawiający pomyślny test źródła danych.

Czyszczenie zasobów

Jeśli te zasoby nie są potrzebne, możesz je usunąć, wykonując następujące polecenia:

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

Następne kroki

Dowiedz się więcej na temat uruchamiania zabezpieczeń WLS na usłudze AKS lub maszynach wirtualnych, korzystając z następujących linków: