Dela via


Konfigurera lösenordslösa databasanslutningar för Java-appar på Red Hat JBoss EAP

Den här artikeln visar hur du konfigurerar lösenordslösa databasanslutningar för Java-appar på Red Hat JBoss EAP-erbjudanden med Azure-portalen.

I den här guiden utför du följande uppgifter:

  • Etablera databasresurser med Hjälp av Azure CLI.
  • Aktivera Microsoft Entra-administratören i databasen.
  • Etablera en användartilldelad hanterad identitet och skapa en databasanvändare för den.
  • Konfigurera en lösenordslös databasanslutning i Red Hat JBoss EAP-erbjudanden med Azure-portalen.
  • Verifiera databasanslutningen.

Erbjudandena stöder lösenordslösa anslutningar för Azure Database for PostgreSQL- och Azure SQL-databaser.

Förutsättningar

Välj en region för distributionen

Välj en region som har tillgängliga SKU:er för din önskade databas. Följande Azure CLI-kommando visar en lista över tillgängliga SKU:er i en viss region. Fortsätt att prova olika regioner tills du hittar en som har några resultat.

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

Skapa en resursgrupp

Skapa en resursgrupp med az group create. Eftersom resursgrupper måste vara unika i en prenumeration väljer du ett unikt namn. Ett enkelt sätt att få unika namn är att använda en kombination av dina initialer, dagens datum och någon identifierare – till exempel abc1228rg. I det här exemplet skapas en resursgrupp med namnet abc1228rgeastus platsen.

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

Skapa en databasserver och en databas

Skapa en flexibel server med kommandot az mysql flexible-server create. Det här exemplet skapar en flexibel server med namnet mysql20221201 med administratörsanvändare azureuser och administratörslösenord Secret123456. Ersätt lösenordet med ditt. Mer information finns i Skapa en flexibel Azure Database for MySQL-server med 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

Skapa en databas med 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

När kommandot har slutförts bör du se utdata som liknar följande exempel:

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

Konfigurera en Microsoft Entra-administratör för databasen

Nu när du har skapat databasen måste du göra den redo att stödja lösenordslösa anslutningar. En lösenordslös anslutning kräver en kombination av hanterade identiteter för Azure-resurser och Microsoft Entra-autentisering. En översikt över hanterade identiteter för Azure-resurser finns i Vad är hanterade identiteter för Azure-resurser?

Information om hur MySQL – flexibel server interagerar med hanterade identiteter finns i dokumentationen Azure Database for MySQL.

I följande exempel konfigureras den aktuella Azure CLI-användaren som ett Microsoft Entra-administratörskonto. För att aktivera Azure-autentisering är det nödvändigt att tilldela en identitet till MySQL – flexibel server.

Skapa först en hanterad identitet med az identity create och tilldela identiteten till MySQL-servern med 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

Ange sedan den aktuella Azure CLI-användaren som Microsoft Entra-administratörskonto med 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

Skapa en användartilldelad hanterad identitet

I Azure CLI skapar du sedan en identitet i din prenumeration med hjälp av kommandot az identity create. Du använder den här hanterade identiteten för att ansluta till databasen.

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

Om du vill konfigurera identiteten i följande steg använder du kommandot az identity show för att lagra identitetens klient-ID i en gränssnittsvariabel.

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

Skapa en databasanvändare för din hanterade identitet

Först måste du skapa en brandväggsregel för åtkomst till databasservern från CLI-klienten. Kör följande kommandon för att hämta din aktuella IP-adress:

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

Om du arbetar med Windows Undersystem för Linux (WSL) med VPN aktiverat kan följande kommando returnera en felaktig IPv4-adress. Ett sätt att få din IPv4-adress är genom att besöka whatismyipaddress.com. Ange miljövariabeln MY_IP som den IPv4-adress som du vill ansluta till databasen från. Du konfigurerar databasbrandväggen med den här IP-adressen senare.

Anslut som Microsoft Entra-administratörsanvändare till din MySQL-databas och skapa en MySQL-användare för din hanterade identitet.

Skapa en tillfällig brandväggsregel med 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}

Förbered sedan en SQL-fil för att skapa en databasanvändare för den hanterade identiteten. I följande exempel läggs en användare med inloggningsnamn identity-contoso och ger användaren behörighet att komma åt databasen 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

Kör SQL-filen med kommandot az mysql flexible-server execute. Du kan hämta din åtkomsttoken med kommandot 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"

Du kan uppmanas att installera tillägget rdbms-connect, som visas i följande utdata. Tryck på y för att fortsätta. Om du inte arbetar med root användaren måste du ange användarlösenordet.

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:

Om SQL-filen körs korrekt liknar dina utdata följande exempel:

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

Den hanterade identiteten myManagedIdentity har nu åtkomst till databasen när du autentiserar med användarnamnet identity-contoso.

Om du inte längre vill komma åt servern från den här IP-adressen kan du ta bort brandväggsregeln med hjälp av följande kommando:

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

Använd slutligen följande kommando för att hämta anslutningssträngen som du använder i nästa avsnitt:

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

Konfigurera en lösenordslös databasanslutning för Red Hat JBoss EAP på virtuella Azure-datorer

Innan du fortsätter kontrollerar du att den Azure-identitet som du använder för att logga in och slutföra den här artikeln har rollen Ägare i den aktuella prenumerationen eller rollen Deltagare och Administratör för användaråtkomst i den aktuella prenumerationen. En översikt över Azure-roller finns i Vad är rollbaserad åtkomstkontroll i Azure (Azure RBAC)? Mer information om de specifika roller som krävs av Red Hat JBoss EAP Marketplace-erbjudandet finns i Inbyggda Roller i Azure.

Det här avsnittet visar hur du konfigurerar den lösenordslösa datakällans anslutning med hjälp av Azure Marketplace-erbjudandena för Red Hat JBoss EAP.

Börja med att distribuera ett erbjudande. Följande erbjudanden stöder lösenordslösa databasanslutningar:

Ange nödvändig information i fönstret Grundläggande och andra fönster om du vill aktivera funktionerna. När du når fönstret Database anger du den lösenordslösa konfigurationen enligt följande steg:

  1. Välj Ja för Anslut till databas?.
  2. Under Anslutningsinställningar går du till Välj databastyp, öppnar den nedrullningsbara menyn och väljer sedan Azure SQL (stöder lösenordslös anslutning).
  3. För JNDI-namn anger du testpasswordless eller ditt förväntade värde.
  4. För DataSource-anslutningssträng anger du den anslutningssträng du fick i förra avsnittet.
  5. Välj Använd lösenordslös datakällaanslutning.
  6. För Användartilldelad hanterad identitet väljer du den hanterade identitet som du skapade i föregående steg. I det här exemplet är namnet myManagedIdentity.
  7. Välj Lägg till.

Avsnittet Anslutningsinställningar bör se ut som på följande skärmbild:

Skärmbild av Azure-portalen som visar sidan Välj databastyp.

Verifiera databasanslutningen

Databasanslutningen är konfigurerad korrekt om utplaceringen av erbjudandet slutförs utan fel.

När distributionen är klar följer du de här stegen i Azure-portalen för att hitta administratörskonsolens URL.

  1. Leta reda på den resursgrupp där du distribuerade JBoss EAP.
  2. Under Inställningar väljer du Distributioner.
  3. Välj distributionen med den längsta varaktigheten. Den här distributionen bör finnas längst ned i listan.
  4. Välj Utdata.
  5. URL:en för administratörskonsolen är värdet för adminConsole-utdata .
  6. Kopiera värdet för utdatavariabeln adminConsole.
  7. Klistra in värdet i webbläsarens adressfält och tryck på Retur för att öppna inloggningssidan i konsolen för integrerade lösningar.

Använd följande steg för att verifiera databasanslutningen:

  1. Logga in på administratörskonsolen med det användarnamn och lösenord som du angav i fönstret Grundläggande.

    Skärmbild av inloggningsskärmen för administratörskonsolen.

  2. När du har loggat in väljer du Konfiguration på huvudmenyn.

  3. I kolumnwebbläsaren väljer du Undersystem, Datakällor och drivrutiner, Datakällor, dataSource-mssqlserver.

  4. I den nedrullningsbara menyn väljer du Testa anslutning

  5. Du bör se ett meddelande som anger något som liknar Successfully tested connection for data source dataSource-mssqlserver.

Följande skärmbild visar relevanta användargränssnittselement:

Skärmbild av administratörskonsolen som visar testdatabassidan.

Rensa resurser

Om du inte behöver dessa resurser kan du ta bort dem med hjälp av följande kommandon:

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

Nästa steg

Läs mer om att köra JBoss EAP på Azure RedHat OpenShift och virtuella datorer genom att följa dessa länkar: