Delen via


Databaseverbindingen zonder wachtwoord configureren voor Java-apps in Red Hat JBoss EAP

In dit artikel leest u hoe u databaseverbindingen zonder wachtwoord configureert voor Java-apps in Red Hat JBoss EAP met azure Portal.

In deze handleiding voert u de volgende taken uit:

  • Databasebronnen inrichten met behulp van Azure CLI.
  • Schakel de Microsoft Entra-beheerder in de database in.
  • Richt een door de gebruiker toegewezen beheerde identiteit in en maak er een databasegebruiker voor.
  • Configureer een databaseverbinding zonder wachtwoord in Red Hat JBoss EAP-aanbiedingen met Azure Portal.
  • Controleer de databaseverbinding.

De aanbiedingen bieden ondersteuning voor verbindingen zonder wachtwoord voor Azure Database for PostgreSQL en Azure SQL-databases.

Vereiste voorwaarden

Selecteer een regio voor de implementatie

Selecteer een regio met beschikbare SKU's voor de gewenste database. De volgende Azure CLI-opdracht bevat de beschikbare SKU's in een bepaalde regio. Blijf verschillende regio's proberen totdat u een regio met een aantal resultaten vindt.

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

Een brongroep maken

Maak een resourcegroep met az group create. Omdat resourcegroepen uniek moeten zijn binnen een abonnement, kiest u een unieke naam. Een eenvoudige manier om unieke namen te hebben, is door een combinatie van uw initialen, de datum van vandaag en een id te gebruiken, abc1228rgbijvoorbeeld. In dit voorbeeld wordt een resourcegroep gemaakt met de naam abc1228rg op de eastus locatie.

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

Een databaseserver en een database maken

Maak een flexibele server met de opdracht az mysql flexible-server create. In dit voorbeeld wordt een flexibele server gemaakt met de naam mysql20221201 admin user azureuser en admin password Secret123456. Vervang het wachtwoord door uw wachtwoord. Zie Een Azure Database for MySQL Flexible Server maken met behulp van Azure CLI voor meer informatie.

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

Een database maken met 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

Wanneer de opdracht is voltooid, ziet u uitvoer die vergelijkbaar is met het volgende voorbeeld:

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

Een Microsoft Entra-beheerder configureren voor uw database

Nu u de database hebt gemaakt, moet u deze gereed maken om wachtwoordloze verbindingen te ondersteunen. Een verbinding zonder wachtwoord vereist een combinatie van beheerde identiteiten voor Azure-resources en Microsoft Entra-verificatie. Zie Wat zijn beheerde identiteiten voor Azure-resources voor een overzicht van beheerde identiteiten voor Azure-resources?

Zie de documentatie voor Azure Database for MySQLvoor meer informatie over hoe MySQL Flexible Server communiceert met beheerde identiteiten.

In het volgende voorbeeld wordt de huidige Azure CLI-gebruiker geconfigureerd als een Microsoft Entra-beheerdersaccount. Als u Azure-verificatie wilt inschakelen, moet u een identiteit toewijzen aan MySQL Flexible Server.

Maak eerst een beheerde identiteit met az identity create en wijs de identiteit toe aan de MySQL-server met 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

Stel vervolgens de huidige gebruiker van de Azure CLI in als Microsoft Entra-beheerder met 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

Maak een door de gebruiker toegewezen beheerde identiteit

Maak vervolgens in Azure CLI een identiteit in uw abonnement met behulp van de opdracht az identity create. U gebruikt deze beheerde identiteit om verbinding te maken met uw database.

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

Als u de identiteit in de volgende stappen wilt configureren, gebruikt u de opdracht az identity show om de client-id van de identiteit op te slaan in een shellvariabele.

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

Een databasegebruiker maken voor uw beheerde identiteit

Eerst moet u een firewallregel maken voor toegang tot de databaseserver vanuit uw CLI-client. Voer de volgende opdrachten uit om uw huidige IP-adres op te halen:

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

Als u werkt met windows-subsysteem voor Linux (WSL) waarvoor VPN is ingeschakeld, retourneert de volgende opdracht mogelijk een onjuist IPv4-adres. Een manier om uw IPv4-adres te verkrijgen, is door whatismyipaddress.com te bezoeken. Stel de omgevingsvariabele in MY_IP als het IPv4-adres waaruit u verbinding wilt maken met de database. U configureert de firewall van de database later met dit IP-adres.

Maak verbinding als de Microsoft Entra-beheerdergebruiker met uw MySQL-database en maak een MySQL-gebruiker voor uw beheerde identiteit.

Maak een tijdelijke firewallregel met 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}

Bereid vervolgens een SQL-bestand voor om een databasegebruiker te maken voor de beheerde identiteit. In het volgende voorbeeld wordt een gebruiker met aanmeldingsnaam identity-contoso toegevoegd en worden de gebruikersbevoegdheden verleend voor toegang tot de 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

Voer het SQL-bestand uit met de opdracht az mysql flexible-server execute. U kunt uw toegangstoken ophalen met de opdracht 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"

Mogelijk wordt u gevraagd om de rdbms-connect-extensie te installeren, zoals wordt weergegeven in de volgende uitvoer. Druk op y- om door te gaan. Als u niet met de root gebruiker werkt, moet u het gebruikerswachtwoord invoeren.

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:

Als het SQL-bestand wordt uitgevoerd, is de uitvoer vergelijkbaar met het volgende voorbeeld:

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

De beheerde identiteit myManagedIdentity heeft nu toegang tot de database bij het verifiëren met de gebruikersnaam identity-contoso.

Als u vanaf dit IP-adres geen toegang meer wilt krijgen tot de server, kunt u de firewallregel verwijderen met behulp van de volgende opdracht:

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

Gebruik ten slotte de volgende opdracht om de verbindingsreeks op te halen die u in de volgende sectie gebruikt:

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

Een databaseverbinding zonder wachtwoord configureren voor Red Hat JBoss EAP op Azure-VM's

Voordat u doorgaat, moet u ervoor zorgen dat de Azure-identiteit die u gebruikt om u aan te melden en dit artikel te voltooien, de rol Eigenaar in het huidige abonnement of de rol Inzender en Beheerder voor gebruikerstoegang in het huidige abonnement heeft. Zie Wat is op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC)voor een overzicht van Azure-rollen? Zie ingebouwde Azure-rollen voor meer informatie over de specifieke rollen die zijn vereist voor de aanbieding voor Red Hat JBoss EAP Marketplace.

In deze sectie wordt beschreven hoe u de verbinding met de gegevensbron zonder wachtwoord configureert met behulp van de Azure Marketplace-aanbiedingen voor Red Hat JBoss EAP.

Begin eerst met het implementeren van een aanbieding. De volgende aanbiedingen bieden ondersteuning voor databaseverbindingen zonder wachtwoord:

Voer de vereiste gegevens in het deelvenster Basisinformatie basisinformatie en andere deelvensters in als u de functies wilt inschakelen. Wanneer u het deelvenster Database bereikt, voert u de configuratie zonder wachtwoord in, zoals wordt weergegeven in de volgende stappen:

  1. Voor Verbinding maken met database?, selecteert u Ja.
  2. Open onder Verbindingsinstellingen voor databasetype Kiezen de vervolgkeuzelijst en selecteer vervolgens Azure SQL (ondersteunt verbinding zonder wachtwoord).
  3. Voer voor JNDI-naamtestpasswordless of de verwachte waarde in.
  4. Voer voor DataSource-verbindingsreeks de verbindingsreeks in die u in de laatste sectie hebt verkregen.
  5. Selecteer Wachtwoordloze gegevensbronverbinding gebruiken.
  6. Voor door de gebruiker toegewezen beheerde identiteit selecteert u de beheerde identiteit die u in de vorige stap hebt gemaakt. In dit voorbeeld is zijn naam myManagedIdentity.
  7. Selecteer Toevoegen.

De sectie Verbindingsinstellingen moet er als volgt uitzien:

Schermopname van Azure Portal met de pagina Databasetype kiezen.

De databaseverbinding controleren

De databaseverbinding is geconfigureerd als de implementatie van de aanbieding zonder fouten is voltooid.

Nadat de implementatie is voltooid, volgt u deze stappen in Azure Portal om de URL van de beheerconsole te vinden.

  1. Zoek de resourcegroep waarin u JBoss EAP hebt geïmplementeerd.
  2. Selecteer Onder Instellingen de optie Implementaties.
  3. Selecteer de implementatie met de langste duur. Deze implementatie moet onder aan de lijst staan.
  4. Selecteer Uitvoer.
  5. De URL van de beheerconsole is de waarde van de adminConsole-uitvoer .
  6. Kopieer de waarde van de uitvoervariabele adminConsole.
  7. Plak de waarde in de adresbalk van uw browser en druk op Enter om de aanmeldingspagina van de Integrated Solutions Console te openen.

Gebruik de volgende stappen om de databaseverbinding te controleren:

  1. Meld u aan bij de beheerconsole met de gebruikersnaam en het wachtwoord die u hebt opgegeven in het deelvenster Basisinformatie .

    Schermopname van het aanmeldingsscherm van de beheerconsole.

  2. Nadat u zich hebt aangemeld, selecteert u Configuratie in het hoofdmenu.

  3. Selecteer in de kolombrowser Subsystemen, Datasources & Drivers, Datasources, dataSource-mssqlserver.

  4. Selecteer Verbinding testen in de vervolgkeuzelijst

  5. U zou een bericht moeten zien dat iets vermeldt als Successfully tested connection for data source dataSource-mssqlserver.

In de volgende schermopname worden de relevante elementen van de gebruikersinterface gemarkeerd:

Schermopname van de beheerconsole met de pagina testdatabase.

De hulpbronnen opschonen

Als u deze resources niet nodig hebt, kunt u ze verwijderen met behulp van de volgende opdrachten:

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

Volgende stappen

Volg deze koppelingen voor meer informatie over het uitvoeren van JBoss EAP op Azure RedHat OpenShift en virtuele machines: