다음 단계에서는 사용자 할당 관리 ID가 할당된 새 Azure SQL 데이터베이스 논리 서버와 새 데이터베이스를 만드는 프로세스를 간략하게 설명합니다.
Azure Portal에서 SQL 배포 선택 옵션 페이지로 이동합니다.
Azure Portal에 아직 로그인하지 않은 경우 메시지가 표시되면 로그인합니다.
SQL 데이터베이스에서 리소스 유형을 단일 데이터베이스로 설정한 상태로 두고 만들기를 선택합니다.
SQL 데이터베이스 만들기 양식의 기본 탭에 있는 프로젝트 세부 정보 아래에서 원하는 Azure 구독을 선택합니다.
리소스 그룹에 새로 만들기를 선택하고, 새 리소스 그룹의 이름을 입력한 다음, 확인을 선택합니다.
데이터베이스 이름에 원하는 데이터베이스 이름을 입력합니다.
서버에 대해 새로 만들기를 선택하고 새 서버 양식을 다음 값으로 입력합니다.
- 서버 이름: 고유한 서버 이름을 입력합니다. 서버 이름은 구독 내에서만 고유한 것이 아니라 Azure의 모든 서버에 대해 전역적으로 고유해야 합니다.
- 서버 관리자 로그인: 관리자 로그인 이름(예:
azureuser
)을 입력합니다.
- 암호: 암호 요구 사항을 충족하는 암호를 입력하고, 암호 확인 필드에 다시 입력합니다.
- 위치: 드롭다운 목록에서 위치를 선택합니다.
완료되면 다음: 네트워킹을 선택합니다.
네트워킹 탭에서 연결 방법에 대해 퍼블릭 엔드포인트를 선택합니다.
방화벽 규칙의 경우 현재 클라이언트 IP 주소 추가를 예로 설정합니다. Azure 서비스 및 리소스가 이 서버에 액세스할 수 있도록 허용을 아니요로 설정된 상태로 둡니다.
페이지 하단에서 다음: 보안을 선택합니다.
보안 탭의 ID에서 ID 구성을 선택합니다.
ID 창 사용자 할당 관리 ID 아래에서 추가를 선택합니다. 원하는 구독을 선택한 다음, 사용자 할당 관리 ID 아래에서 선택한 구독에서 원하는 사용자 할당 관리 ID를 선택합니다. 그런 다음, 선택 단추를 선택합니다.
기본 ID 아래의 이전 단계에서 선택한 동일한 사용자 할당 관리 ID를 선택합니다.
참고
시스템 할당 관리 ID가 기본 ID인 경우 기본 ID 필드는 비어 있어야 합니다.
적용을 선택합니다.
페이지 아래쪽에서 검토 + 만들기를 선택합니다.
검토 + 만들기 페이지에서 검토 후 만들기를 선택합니다.
Azure CLI 명령 az sql server create
은 새 논리 서버를 프로비저닝하는 데 사용됩니다. 아래 명령은 사용자 할당 관리 ID를 사용하여 새 서버를 프로비전합니다. 또한 이 예시에서는 Microsoft Entra 전용 인증을 활성화하고 서버의 Microsoft Entra 관리자를 설정합니다.
서버 SQL 관리자 로그인이 자동으로 만들어지고 암호는 임의의 암호로 설정됩니다. 이 서버를 만들 때 SQL 인증 연결을 사용할 수 없으므로 SQL 관리자 로그인은 사용되지 않습니다.
서버 Microsoft Entra 관리자는 <AzureADAccount>
에 대해 설정한 계정이 되며 서버를 관리하는 데 사용할 수 있습니다.
예시에서 다음 값을 바꿉니다.
<subscriptionId>
: 구독 ID는 Azure Portal에서 확인할 수 있습니다.
<ResourceGroupName>
: 논리 서버의 리소스 그룹 이름
<managedIdentity>
: 사용자 할당 관리 ID. 기본 ID로도 사용할 수 있습니다.
<primaryIdentity>
: 서버 ID로 사용할 기본 ID
<AzureADAccount>
: Microsoft Entra 사용자 또는 그룹일 수 있습니다. 예를 들어 DummyLogin
<AzureADAccountSID>
: Microsoft Entra ID에 있는 사용자의 개체 ID입니다.
<ServerName>
: 고유한 논리 서버 이름 사용
<Location>
: 서버의 위치(예: westus
또는 centralus
)
subscription_id=<subscriptionId>
resource_group=<ResourceGroupName>
managed_identity=<managedIdentity>
primary_identity=<primaryIdentity>
azure_ad_account=<AzureADAccount>
azure_ad_account_sid=<AzureADAccountSID>
server_name=<ServerName>
location=<Location>
az sql server create \
--assign-identity \
--identity-type UserAssigned \
--user-assigned-identity-id /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$managed_identity \
--primary-user-assigned-identity-id /subscriptions/$subscription_id/resourceGroups/$resource_group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$primary_identity \
--enable-ad-only-auth \
--external-admin-principal-type User \
--external-admin-name $azure_ad_account \
--external-admin-sid $azure_ad_account_sid \
-g $resource_group \
-n $server_name \
-l $location
자세한 내용은 az sql server create를 참조하세요.
참고
위의 예시에서는 사용자 할당 관리 ID만 있는 서버를 프로비전합니다. 두 유형의 관리 ID를 서버와 함께 생성하려면 --identity-type
를 UserAssigned,SystemAssigned
로 설정할 수 있습니다.
만든 후 서버 상태를 확인하려면 다음 명령을 참조하세요.
az sql server show --name <ServerName> --resource-group <ResourceGroupName> --expand-ad-admin
PowerShell 명령 New-AzSqlServer
는 새 Azure SQL 논리 서버를 프로비저닝하는 데 사용됩니다. 아래 명령은 사용자 할당 관리 ID를 사용하여 새 서버를 프로비전합니다. 또한 이 예시에서는 Microsoft Entra 전용 인증을 활성화하고 서버의 Microsoft Entra 관리자를 설정합니다.
서버 SQL 관리자 로그인이 자동으로 만들어지고 암호는 임의의 암호로 설정됩니다. 이 서버를 만들 때 SQL 인증 연결을 사용할 수 없으므로 SQL 관리자 로그인은 사용되지 않습니다.
서버 Microsoft Entra 관리자는 <AzureADAccount>
에 대해 설정한 계정이 되며 서버를 관리하는 데 사용할 수 있습니다.
예시에서 다음 값을 바꿉니다.
<ResourceGroupName>
: 논리 서버의 리소스 그룹 이름
<Location>
: 서버의 위치(예: West US
또는 Central US
)
<ServerName>
: 고유한 논리 서버 이름 사용
<subscriptionId>
: 구독 ID는 Azure Portal에서 확인할 수 있습니다.
<managedIdentity>
: 사용자 할당 관리 ID. 기본 ID로도 사용할 수 있습니다.
<primaryIdentity>
: 서버 ID로 사용할 기본 ID
<AzureADAccount>
: Microsoft Entra 사용자 또는 그룹일 수 있습니다. 예를 들어 DummyLogin
$server = @{
ResourceGroupName = "<ResourceGroupName>"
Location = "<Location>"
ServerName = "<ServerName>"
ServerVersion = "12.0"
AssignIdentity = $true
IdentityType = "UserAssigned"
UserAssignedIdentityId = "/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>"
PrimaryUserAssignedIdentityId = "/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<primaryIdentity>"
ExternalAdminName = "<AzureADAccount>"
EnableActiveDirectoryOnlyAuthentication = $true
}
New-AzSqlServer @server
자세한 내용은 New-AzSqlServer를 참조하세요.
참고
위의 예시에서는 사용자 할당 관리 ID만 있는 서버를 프로비전합니다. 두 유형의 관리 ID를 서버와 함께 생성하려면 -IdentityType
를 "UserAssigned,SystemAssigned"
로 설정할 수 있습니다.
만든 후 서버 상태를 확인하려면 다음 명령을 참조하세요.
Get-AzSqlServer -ResourceGroupName "<ResourceGroupName>" -ServerName "<ServerName>" -ExpandActiveDirectoryAdministrator
서버 - 만들기 또는 업데이트 REST API를 사용하여 사용자 할당 관리 ID로 논리 서버를 만들 수 있습니다.
아래 스크립트는 논리 서버를 프로비저닝하고 Microsoft Entra 관리자를 <AzureADAccount>
(으)로 설정하고 Microsoft Entra 전용 인증을 사용하도록 설정합니다. 서버 SQL 관리자 로그인이 자동으로 만들어지고 암호가 임의의 암호로 설정됩니다. 이 프로비저닝 동안 SQL 인증 연결을 사용할 수 없으므로 SQL 관리자 로그인은 사용되지 않습니다.
프로비저닝이 완료되면 Microsoft Entra 관리자 <AzureADAccount>
(을)를 사용하여 서버를 관리할 수 있습니다.
예시에서 다음 값을 바꿉니다.
<tenantId>
: Azure Portal로 이동한 다음, Microsoft Entra ID 리소스로 이동하여 찾을 수 있습니다. 개요 창에 테넌트 ID가 표시됩니다.
<subscriptionId>
: 구독 ID는 Azure Portal에서 확인할 수 있습니다.
<ServerName>
: 고유한 논리 서버 이름 사용
<ResourceGroupName>
: 논리 서버의 리소스 그룹 이름
<AzureADAccount>
: Microsoft Entra 사용자 또는 그룹일 수 있습니다. 예를 들어 DummyLogin
<Location>
: 서버의 위치(예: westus2
또는 centralus
)
<objectId>
: Azure Portal로 이동한 다음, Microsoft Entra ID 리소스로 이동하여 찾을 수 있습니다. 사용자 창에서 Microsoft Entra 사용자를 검색하고 해당 개체 ID를 찾습니다.
<managedIdentity>
: 사용자 할당 관리 ID. 기본 ID로도 사용할 수 있습니다.
<primaryIdentity>
: 서버 ID로 사용할 기본 ID
Import-Module Azure
Import-Module MSAL.PS
$tenantId = '<tenantId>'
$clientId = '1950a258-227b-4e31-a9cf-717495945fc2' # Static Microsoft client ID used for getting a token
$subscriptionId = '<subscriptionId>'
$uri = "urn:ietf:wg:oauth:2.0:oob"
$authUrl = "https://login.windows.net/$tenantId"
$serverName = "<ServerName>"
$resourceGroupName = "<ResourceGroupName>"
Login-AzAccount -tenantId $tenantId
# login as a user with SQL Server Contributor role or higher
# Get a token
$result = Get-MsalToken -RedirectUri $uri -ClientId $clientId -TenantId $tenantId -Scopes "https://management.core.windows.net/.default"
#Authentication header
$authHeader = @{
'Content-Type'='application\json; '
'Authorization'=$result.CreateAuthorizationHeader()
}
# Enable Azure AD-only auth and sets a user-managed identity as the server identity
# No server admin is specified, and only Azure AD admin and Azure AD-only authentication is set to true
# Server admin (login and password) is generated by the system
# The sid is the Azure AD Object ID for the user
# Replace all values in a <>
$body = '{
"location": "<Location>",
"identity": {"type" : "UserAssigned", "UserAssignedIdentities" : {"/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>" : {}}},
"properties": { "PrimaryUserAssignedIdentityId":"/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<primaryIdentity>","administrators":{ "login":"<AzureADAccount>", "sid":"<objectId>", "tenantId":"<tenantId>", "principalType":"User", "azureADOnlyAuthentication":true }
}
}'
# Provision the server
Invoke-RestMethod -Uri https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Sql/servers/$serverName/?api-version=2020-11-01-preview -Method PUT -Headers $authHeader -Body $body -ContentType "application/json"
참고
위의 예시에서는 사용자 할당 관리 ID만 있는 서버를 프로비전합니다. 두 유형의 관리 ID를 서버와 함께 생성하려면 "type"
를 "UserAssigned,SystemAssigned"
로 설정할 수 있습니다.
서버 상태를 확인하려면 다음 스크립트를 사용할 수 있습니다.
$uri = 'https://management.azure.com/subscriptions/'+$subscriptionId+'/resourceGroups/'+$resourceGroupName+'/providers/Microsoft.Sql/servers/'+$serverName+'?api-version=2020-11-01-preview&$expand=administrators/activedirectory'
$responce=Invoke-WebRequest -Uri $uri -Method PUT -Headers $authHeader -Body $body -ContentType "application/json"
$responce.statuscode
$responce.content
다음은 사용자가 할당한 관리 ID로 Azure SQL 데이터베이스 논리 서버를 만드는 ARM 템플릿 예시입니다. 또한 템플릿은 서버의 Microsoft Entra 관리자 집합을 추가하고 Microsoft Entra 전용 인증을 활성화합니다. 하지만 이 템플릿 예시에서는 이를 다루지 않을 수 있습니다.
ARM 템플릿에 대한 자세한 내용은 Azure SQL 데이터베이스 및 SQL Managed Instance용 ARM 템플릿을 참조하세요.
Azure Portal의 사용자 지정 배포를 사용하고 편집기에서 사용자 고유의 템플릿을 빌드합니다. 다음으로, 예시에 붙여넣은 후에 구성을 저장합니다.
사용자 할당 관리 ID 리소스 ID를 가져오려면 Azure Portal에서 관리 ID를 검색합니다. 관리 ID를 찾아 속성으로 이동합니다. UMI 리소스 ID의 예는 /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
와 같습니다.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"server": {
"type": "string",
"defaultValue": "[uniqueString('sql', resourceGroup().id)]",
"metadata": {
"description": "The name of the logical server."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"aad_admin_name": {
"type": "String",
"metadata": {
"description": "The name of the Azure AD admin for the SQL server."
}
},
"aad_admin_objectid": {
"type": "String",
"metadata": {
"description": "The Object ID of the Azure AD admin."
}
},
"aad_admin_tenantid": {
"type": "String",
"defaultValue": "[subscription().tenantId]",
"metadata": {
"description": "The Tenant ID of the Azure Active Directory"
}
},
"aad_admin_type": {
"defaultValue": "User",
"allowedValues": [
"User",
"Group",
"Application"
],
"type": "String"
},
"aad_only_auth": {
"defaultValue": true,
"type": "Bool"
},
"user_identity_resource_id": {
"defaultValue": "",
"type": "String",
"metadata": {
"description": "The Resource ID of the user-assigned managed identity, in the form of /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>."
}
},
"AdminLogin": {
"minLength": 1,
"type": "String"
},
"AdminLoginPassword": {
"type": "SecureString"
}
},
"resources": [
{
"type": "Microsoft.Sql/servers",
"apiVersion": "2020-11-01-preview",
"name": "[parameters('server')]",
"location": "[parameters('location')]",
"identity": {
"type": "UserAssigned",
"UserAssignedIdentities": {
"[parameters('user_identity_resource_id')]": {}
}
},
"properties": {
"administratorLogin": "[parameters('AdminLogin')]",
"administratorLoginPassword": "[parameters('AdminLoginPassword')]",
"PrimaryUserAssignedIdentityId": "[parameters('user_identity_resource_id')]",
"administrators": {
"login": "[parameters('aad_admin_name')]",
"sid": "[parameters('aad_admin_objectid')]",
"tenantId": "[parameters('aad_admin_tenantid')]",
"principalType": "[parameters('aad_admin_type')]",
"azureADOnlyAuthentication": "[parameters('aad_only_auth')]"
}
}
}
]
}