As etapas a seguir descrevem o processo de criação de um novo servidor lógico do Banco de Dados SQL do Azure e um novo banco de dados com uma identidade gerenciada atribuída pelo usuário atribuída.
Navegue até a página Selecionar opção de implantação SQL no portal do Azure.
Se você ainda não estiver conectado ao portal do Azure, entre quando solicitado.
Em Bancos de dados SQL, deixe Tipo de recurso definido como Banco de dados único e selecione Criar.
Na guia Noções básicas do formulário Criar Banco de Dados SQL, em Detalhes do projeto, selecione a Assinatura do Azure desejada.
Em Grupo de recursos, selecione Criar novo, insira um nome para o grupo de recursos e selecione OK.
Em Nome do banco de dados, insira o nome do banco de dados desejado.
Em Servidor, selecione Criar novo e preencha o formulário Novo servidor com os seguintes valores:
- Nome do servidor: insira um nome de servidor exclusivo. Os nomes de servidor devem ser globalmente exclusivos para todos os servidores no Azure, não apenas exclusivos dentro de uma assinatura.
- Login de administrador do servidor: insira um nome de login de administrador, por exemplo:
azureuser
.
- Palavra-passe: introduza uma palavra-passe que cumpra os requisitos de palavra-passe e introduza-a novamente no campo Confirmar palavra-passe.
- Localização: selecione um local na lista suspensa
Selecione Next: Networking na parte inferior da página.
Na guia Rede, para Método de conectividade, selecione Ponto de extremidade público.
Para regras de firewall, defina Adicionar endereço IP do cliente atual como Sim. Deixe Permitir que os serviços e recursos do Azure acessem este servidor definido como Não.
Selecione Seguinte: Segurança na parte inferior da página.
Na guia Segurança, em Identidade, selecione Configurar Identidades.
Na folha Identidade, em Identidade gerenciada atribuída ao usuário, selecione Adicionar. Selecione a Assinatura desejada e, em Identidades gerenciadas atribuídas pelo usuário, selecione a identidade gerenciada atribuída ao usuário desejada na assinatura selecionada. Em seguida, selecione o botão Selecionar .
Em Identidade principal, selecione a mesma identidade gerenciada atribuída pelo usuário selecionada na etapa anterior.
Nota
Se a identidade gerenciada atribuída ao sistema for a identidade principal, o campo Identidade primária deverá estar vazio.
Selecione Aplicar
Selecione Rever + criar na parte inferior da página
Na página Rever + criar, depois de rever, selecione Criar.
O comando az sql server create
CLI do Azure é usado para provisionar um novo servidor lógico. O comando abaixo provisionará um novo servidor com uma identidade gerenciada atribuída pelo usuário. O exemplo também habilitará a autenticação somente do Microsoft Entra, e definirá um administrador do Microsoft Entra para o servidor.
O login do SQL Administrator do servidor será criado automaticamente e a senha será definida como uma senha aleatória. Como a conectividade da Autenticação SQL está desabilitada com essa criação de servidor, o logon do Administrador do SQL não será usado.
O servidor Microsoft Entra admin será a conta que você definiu para , e pode ser usado para <AzureADAccount>
gerenciar o servidor.
Substitua os seguintes valores no exemplo:
<subscriptionId>
: Sua ID de assinatura pode ser encontrada no portal do Azure
<ResourceGroupName>
: Nome do grupo de recursos para o servidor lógico
<managedIdentity>
: A identidade gerenciada atribuída pelo usuário. Também pode ser usado como a identidade principal.
<primaryIdentity>
: A identidade principal que você deseja usar como a identidade do servidor
<AzureADAccount>
: Pode ser um usuário ou grupo do Microsoft Entra. Por exemplo, DummyLogin
<AzureADAccountSID>
: A ID de objeto do Microsoft Entra para o usuário
<ServerName>
: Use um nome de servidor lógico exclusivo
<Location>
: Localização do servidor, como westus
, ou 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
Para obter mais informações, consulte az sql server create.
Nota
O exemplo acima provisiona um servidor com apenas uma identidade gerenciada atribuída pelo usuário. Você poderia definir como --identity-type
sendo UserAssigned,SystemAssigned
se quisesse que ambos os tipos de identidades gerenciadas fossem criados com o servidor.
Para verificar o status do servidor após a criação, consulte o seguinte comando:
az sql server show --name <ServerName> --resource-group <ResourceGroupName> --expand-ad-admin
O comando New-AzSqlServer
PowerShell é usado para provisionar um novo servidor lógico SQL do Azure. O comando abaixo provisionará um novo servidor com uma identidade gerenciada atribuída pelo usuário. O exemplo também habilitará a autenticação somente do Microsoft Entra, e definirá um administrador do Microsoft Entra para o servidor.
O login do SQL Administrator do servidor será criado automaticamente e a senha será definida como uma senha aleatória. Como a conectividade da Autenticação SQL está desabilitada com essa criação de servidor, o logon do Administrador do SQL não será usado.
O servidor Microsoft Entra admin será a conta que você definiu para , e pode ser usado para <AzureADAccount>
gerenciar o servidor.
Substitua os seguintes valores no exemplo:
<ResourceGroupName>
: Nome do grupo de recursos para o servidor lógico
<Location>
: Localização do servidor, como West US
, ou Central US
<ServerName>
: Use um nome de servidor lógico exclusivo
<subscriptionId>
: Sua ID de assinatura pode ser encontrada no portal do Azure
<managedIdentity>
: A identidade gerenciada atribuída pelo usuário. Também pode ser usado como a identidade principal
<primaryIdentity>
: A identidade principal que você deseja usar como a identidade do servidor
<AzureADAccount>
: Pode ser um usuário ou grupo do Microsoft Entra. Por exemplo, 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
Para obter mais informações, consulte New-AzSqlServer.
Nota
O exemplo acima provisiona um servidor com apenas uma identidade gerenciada atribuída pelo usuário. Você poderia definir como -IdentityType
sendo "UserAssigned,SystemAssigned"
se quisesse que ambos os tipos de identidades gerenciadas fossem criados com o servidor.
Para verificar o status do servidor após a criação, consulte o seguinte comando:
Get-AzSqlServer -ResourceGroupName "<ResourceGroupName>" -ServerName "<ServerName>" -ExpandActiveDirectoryAdministrator
A API REST Servidores - Criar ou Atualizar pode ser usada para criar um servidor lógico com uma identidade gerenciada atribuída pelo usuário.
O script abaixo provisionará um servidor lógico, definirá o administrador do Microsoft Entra como <AzureADAccount>
e habilitará a autenticação somente do Microsoft Entra. O login do SQL Administrator do servidor também será criado automaticamente e a senha será definida como uma senha aleatória. Como a conectividade da Autenticação SQL está desabilitada com esse provisionamento, o logon do Administrador do SQL não será usado.
O administrador <AzureADAccount>
do Microsoft Entra pode ser usado para gerenciar o servidor quando o provisionamento estiver concluído.
Substitua os seguintes valores no exemplo:
<tenantId>
: Pode ser encontrado acessando o portal do Azure e acessando seu recurso Microsoft Entra ID. No painel Visão geral, você verá sua ID de locatário
<subscriptionId>
: Sua ID de assinatura pode ser encontrada no portal do Azure
<ServerName>
: Use um nome de servidor lógico exclusivo
<ResourceGroupName>
: Nome do grupo de recursos para o servidor lógico
<AzureADAccount>
: Pode ser um usuário ou grupo do Microsoft Entra. Por exemplo, DummyLogin
<Location>
: Localização do servidor, como westus2
, ou centralus
<objectId>
: Pode ser encontrado acessando o portal do Azure e acessando seu recurso Microsoft Entra ID. No painel Usuário, procure o usuário do Microsoft Entra e encontre sua ID de objeto
<managedIdentity>
: A identidade gerenciada atribuída pelo usuário. Também pode ser usado como a identidade principal
<primaryIdentity>
: A identidade principal que você deseja usar como a identidade do servidor
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"
#Authetication 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"
Nota
O exemplo acima provisiona um servidor com apenas uma identidade gerenciada atribuída pelo usuário. Você poderia definir como "type"
sendo "UserAssigned,SystemAssigned"
se quisesse que ambos os tipos de identidades gerenciadas fossem criados com o servidor.
Para verificar o status do servidor, você pode usar o seguinte script:
$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
Aqui está um exemplo de um modelo ARM que cria um servidor lógico do Banco de Dados SQL do Azure com uma identidade gerenciada atribuída pelo usuário. O modelo também adiciona um conjunto de administradores do Microsoft Entra para o servidor e habilita a autenticação somente do Microsoft Entra, mas isso pode ser removido do exemplo de modelo.
Para obter mais informações e modelos ARM, consulte Modelos do Azure Resource Manager para o Banco de Dados SQL do Azure & Instância Gerenciada SQL.
Use uma implantação personalizada no portal do Azure e crie seu próprio modelo no editor. Em seguida, salve a configuração depois de colar no exemplo.
Para obter sua ID de Recurso de identidade gerenciada atribuída pelo usuário, pesquise Identidades Gerenciadas no portal do Azure. Encontre sua identidade gerenciada e vá para Propriedades. Um exemplo do seu ID de recurso UMI será semelhante ao /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')]"
}
}
}
]
}