이 문서에서는 Azure Portal을 사용하여 Red Hat JBoss EAP 제품의 Java 앱에 대한 암호 없는 데이터베이스 연결을 구성하는 방법을 보여 줍니다.
이 가이드에서는 다음 작업을 수행합니다.
- Azure CLI를 사용하여 데이터베이스 리소스를 프로비전합니다.
- 데이터베이스에서 Microsoft Entra 관리자를 사용하도록 설정합니다.
- 사용자 할당 관리 ID를 프로비전하고 데이터베이스 사용자를 만듭니다.
- Azure Portal을 사용하여 Red Hat JBoss EAP 제안에서 암호 없는 데이터베이스 연결을 구성합니다.
- 데이터베이스 연결의 유효성을 검사합니다.
이 제품은 PostgreSQL 및 Azure SQL 데이터베이스용 Azure 데이터베이스에 대한 암호 없는 연결을 지원합니다.
필수 조건
Azure 구독. Azure 구독이 아직 없는 경우, 시작하기 전에 무료 계정을 만드십시오.
Bash 환경을 사용하여 Azure Cloud Shell 사용합니다. Azure CLI 버전이 2.43.0 이상인지 확인합니다.
원하는 경우 Azure CLI 2.43.0 이상을 설치하여 Azure CLI 명령을 실행합니다.
- 로컬 설치를 사용하는 경우
az login명령을 사용하여 Azure CLI로 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI로 로그인을 참조하세요. - 메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI에서 확장 사용을 참조하세요.
-
az version실행하여 설치된 버전 및 종속 라이브러리를 찾습니다. 최신 버전으로 업그레이드하려면az upgrade실행합니다.
- 로컬 설치를 사용하는 경우
로그인하고 이 문서를 완료하는 데 사용하는 Azure ID에 현재 구독의 소유자 역할 또는 현재 구독의 기여자 및 사용자 액세스 관리자 역할이 있는지 확인합니다. Azure 역할에 대한 개요는 Azure RBAC(Azure 역할 기반 액세스 제어)란? Oracle WebLogic Marketplace 제품에 필요한 특정 역할에 대한 자세한 내용은 Azure 기본 제공 역할을 참조하세요.
배포할 지역 선택
원하는 데이터베이스에 사용할 수 있는 SKU가 있는 지역을 선택합니다. 다음 Azure CLI 명령은 지정된 지역에서 사용 가능한 SKU를 나열합니다. 결과가 있는 지역을 찾을 때까지 다른 지역을 계속 시도하세요.
az mysql flexible-server list-skus --location "$REGION" --output table
리소스 그룹 만들기
az group create로 리소스 그룹을 만듭니다. 리소스 그룹은 구독 내에서 고유해야 하므로 고유한 이름을 선택합니다. 고유한 이름을 갖는 쉬운 방법은 이니셜, 오늘 날짜 및 일부 식별자(예: abc1228rg)의 조합을 사용하는 것입니다. 다음 예제에서는 abc1228rg 위치에 eastus이라는 리소스 그룹을 만듭니다.
export RESOURCE_GROUP_NAME="abc1228rg"
export REGION=eastus
az group create \
--name ${RESOURCE_GROUP_NAME} \
--location ${REGION}
데이터베이스 서버 및 데이터베이스 만들기
az mysql flexible-server create 명령을 사용하여 유연한 서버를 만듭니다. 이 예제에서는 관리자 사용자 mysql20221201 및 관리자 암호azureuser로 명명된 Secret123456 유연한 서버를 만듭니다. 암호를 사용자 암호로 바꿉니다. 자세한 내용은 Azure CLI를 사용하여 Azure Database for MySQL 유연한 서버 만들기를 참조하세요.
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
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
명령이 완료되면 다음 예제와 유사한 출력이 표시됩니다.
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"
}
데이터베이스에 대한 Microsoft Entra 관리자 구성
이제 데이터베이스를 만들었으므로 암호 없는 연결을 지원할 수 있도록 준비해야 합니다. 암호 없는 연결에는 Azure 리소스 및 Microsoft Entra 인증에 대한 관리 ID 조합이 필요합니다. Azure 리소스에 대한 관리 ID에 대한 개요는 Azure 리소스에 대한 관리 ID란?
MySQL 유연한 서버가 관리 ID와 상호 작용하는 방법에 대한 자세한 내용은 Azure Database for MySQL 설명서참조하세요.
다음 예제에서는 현재 Azure CLI 사용자를 Microsoft Entra 관리자 계정으로 구성합니다. Azure 인증을 사용하도록 설정하려면 MySQL 유연한 서버에 ID를 할당해야 합니다.
먼저 az identity create 사용하여 관리 ID를 만들고 az mysql flexible-server identity assign사용하여 MySQL 서버에 ID를 할당합니다.
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
그런 다음, 현재 Azure CLI 사용자를 az mysql flexible-server ad-admin create의 Microsoft Entra 관리자 계정으로 설정합니다.
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
사용자 할당 관리 ID 만들기
다음으로, Azure CLI에서 az identity create 명령을 사용하여 구독에 ID를 만듭니다. 이 관리 ID를 사용하여 데이터베이스에 연결합니다.
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name myManagedIdentity
다음 단계에서 ID를 구성하려면 az identity show 명령을 사용하여 ID의 클라이언트 ID를 셸 변수에 저장합니다.
# 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)
관리 ID에 대한 데이터베이스 사용자 만들기
먼저 CLI 클라이언트에서 데이터베이스 서버에 액세스하는 방화벽 규칙을 만들어야 합니다. 다음 명령을 실행하여 현재 IP 주소를 가져옵니다.
export MY_IP=$(curl http://whatismyip.akamai.com)
VPN을 사용하도록 설정된 WSL(Linux용 Windows 하위 시스템)에서 작업하는 경우 다음 명령은 잘못된 IPv4 주소를 반환할 수 있습니다. IPv4 주소를 가져오는 한 가지 방법은 whatismyipaddress.com 방문하는 것입니다.
MY_IP 환경 변수를 데이터베이스에 연결하려는 IPv4 주소로 설정합니다. 나중에 이 IP 주소를 사용하여 데이터베이스 방화벽을 구성합니다.
Microsoft Entra 관리자 사용자로서 MySQL 데이터베이스에 연결하고, 관리 ID를 위한 MySQL 사용자를 만듭니다.
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}
다음으로, 관리 ID에 대한 데이터베이스 사용자를 만들기 위해 SQL 파일을 준비합니다. 다음 예제에서는 로그인 이름 identity-contoso 사용자를 추가하고 데이터베이스 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
명령 az mysql flexible-server execute사용하여 SQL 파일을 실행합니다. 명령 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"
다음 출력과 같이 rdbms-connect 확장을 설치하라는 메시지가 표시될 수 있습니다. 계속하려면 y 누릅니다. 현재 root 사용자와 작업하지 않는 경우 사용자 암호를 입력해야 합니다.
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:
SQL 파일이 성공적으로 실행되면 출력은 다음 예제와 유사합니다.
Running *.sql* file 'createuser.sql'...
Successfully executed the file.
Closed the connection to mysql20221201
이제 관리 ID myManagedIdentity 는 사용자 이름으로 identity-contoso인증할 때 데이터베이스에 액세스할 수 있습니다.
이 IP 주소에서 서버에 더 이상 액세스하지 않으려면 다음 명령을 사용하여 방화벽 규칙을 제거할 수 있습니다.
az mysql flexible-server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--name $MYSQL_NAME \
--rule-name AllowCurrentMachineToConnect \
--yes
마지막으로 다음 명령을 사용하여 다음 섹션에서 사용하는 연결 문자열을 가져옵니다.
export CONNECTION_STRING="jdbc:mysql://${MYSQL_NAME}.mysql.database.azure.com:3306/${DATABASE_NAME}?useSSL=true"
echo ${CONNECTION_STRING}
Azure VM에서 Red Hat JBoss EAP에 대한 암호 없는 데이터베이스 연결 구성
계속하기 전에 이 문서에 로그인하고 완료하는 데 사용하는 Azure ID에 현재 구독의 소유자 역할 또는 현재 구독의 기여자 및 사용자 액세스 관리자 역할이 있는지 확인합니다. Azure 역할에 대한 개요 는 Azure RBAC(Azure 역할 기반 액세스 제어)란? Red Hat JBoss EAP Marketplace 제품에 필요한 특정 역할에 대한 자세한 내용은 Azure 기본 제공 역할을 참조하세요.
이 섹션에서는 Red Hat JBoss EAP용 Azure Marketplace 제품을 사용하여 암호 없는 데이터 원본 연결을 구성하는 방법을 보여 줍니다.
먼저 제안 배포 프로세스를 시작합니다. 다음은 암호 없는 데이터베이스 연결 지원합니다.
- RHEL VM의 JBoss EAP 독립 실행형
- RHEL VM의 JBoss EAP 클러스터. 자세한 내용은 빠른 시작: Azure VM(Virtual Machines)에 JBoss EAP 클러스터 배포를 참조하세요.
기능을 사용하도록 설정하려면 기본 창 및 기타 창에 필요한 정보를 입력합니다. 데이터베이스 창에 도달하면 다음 단계에 표시된 대로 암호 없는 구성을 입력합니다.
- 데이터베이스에 연결하려면 [예]를 선택합니다.
- 연결 설정에서 데이터베이스 유형 선택에 대해 드롭다운 메뉴를 열고 Azure SQL(암호 없는 연결 지원)을 선택합니다.
- JNDI 이름에 testpasswordless 또는 예상 값을 입력합니다.
- DataSource 연결 문자열의 경우 마지막 섹션에서 얻은 연결 문자열 입력합니다.
- 암호 없는 데이터 원본 연결 사용을 선택합니다.
- 사용자가 할당한 관리 ID의 경우 이전 단계에서 만든 관리 ID를 선택합니다. 이 예제에서 그 이름은 myManagedIdentity입니다.
- 추가를 선택합니다.
연결 설정 섹션은 다음 스크린샷과 같습니다.
데이터베이스 연결 확인
제품 배포가 오류 없이 완료된 경우 데이터베이스 연결이 성공적으로 구성됩니다.
배포가 완료되면 Azure Portal에서 다음 단계에 따라 관리 콘솔 URL을 찾습니다.
- JBoss EAP를 배포한 리소스 그룹을 찾습니다.
- 설정에서 배포를 선택합니다.
- 기간이 가장 긴 배포를 선택합니다. 이 배포는 목록의 맨 아래에 있어야 합니다.
- 출력을 선택합니다.
- 관리 콘솔의 URL은 adminConsole 출력의 값입니다.
- adminConsole 출력 변수의 값을 복사합니다.
- 브라우저 주소 표시줄에 값을 붙여넣고 Enter 키를 눌러 통합 솔루션 콘솔의 로그인 페이지를 엽니다.
다음 단계를 사용하여 데이터베이스 연결을 확인합니다.
기본 창에서 제공한 사용자 이름 및 암호를 사용하여 관리 콘솔에 로그인합니다.
로그인한 후 주 메뉴에서 구성 을 선택합니다.
열 브라우저에서 하위 시스템, 데이터 원본 및 드라이버, 데이터 원본, dataSource-mssqlserver를 선택합니다.
드롭다운 메뉴에서 연결 테스트 선택
다음과 유사한 내용이 표시되는 메시지가 표시됩니다.
Successfully tested connection for data source dataSource-mssqlserver.
다음 스크린샷은 관련 사용자 인터페이스 요소를 강조 표시합니다.
자원을 정리하세요
이러한 리소스가 필요하지 않은 경우 다음 명령을 사용하여 삭제할 수 있습니다.
az group delete --name ${RESOURCE_GROUP_NAME}
az group delete --name <resource-group-name-that-deploys-the-offer>
다음 단계
다음 링크를 따라 Azure RedHat OpenShift 및 가상 머신에서 JBoss EAP를 실행하는 방법에 대해 자세히 알아봅니다.