As etapas a seguir descrevem o processo de criação de um novo servidor lógico do Banco de Dados SQL do Azure e de um novo banco de dados com uma identidade gerenciada atribuída pelo usuário designada.
Navegue até a página com a opção Selecionar implantação do SQL no portal do Azure.
Se você ainda não entrou no portal do Azure, entre quando solicitado.
Em Bancos de dados SQL, deixe Tipo de recurso definido como Banco de dados individual 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.
Para Grupo de recursos, selecione Criar, insira um nome para o grupo de recursos e selecione OK.
Para Nome do banco de dados, insira o nome desejado.
Para Servidor, selecione Criar e preencha o formulário Novo servidor com os seguintes valores:
- Nome do servidor: insira um nome exclusivo para o servidor. Os nomes dos servidores devem ser globalmente exclusivos para todos os servidores no Azure, não apenas para uma assinatura.
- Logon do administrador do servidor: insira um nome de logon de administrador, por exemplo:
azureuser
.
- Senha: insira uma senha que atenda aos requisitos de senha e insira-a novamente no campo Confirmar senha.
- Localização: Selecione uma localização na lista suspensa
Selecione Avançar: Rede 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 serviços e recursos do Azure acessem este servidor definido como Não.
Selecione Próximo: Segurança na parte inferior da página.
Na guia “Segurança”, em Identidade, selecione Configurar identidades.
No painel Identidade, em Identidade gerenciada atribuída pelo usuário, selecione Adicionar. Selecione a Assinatura desejada e, em Identidades gerenciadas atribuídas pelo usuário, selecione a identidade gerenciada atribuída pelo usuário desejado na assinatura selecionada. Em seguida, clique no botão Selecionar.
Em Identidade primária, selecione a mesma identidade gerenciada atribuída pelo usuário que foi selecionada na etapa anterior.
Observação
Se a identidade gerenciada atribuída pelo sistema for a identidade primária, o campo Identidade primária deverá estar vazio.
Selecione Aplicar.
Selecione Revisar + criar na parte inferior da página
Na página Examinar + criar, após examinar, selecione Criar.
O comando az sql server create
da CLI do Azure é usado para provisionar um novo servidor lógico. O comando abaixo fornecerá 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 logon do Administrador do SQL do servidor será criado automaticamente, e a senha será definida como uma senha aleatória. Como a conectividade da Autenticação do SQL está desabilitada com a criação desse servidor, o logon do Administrador do SQL não será usado.
O administrador do Microsoft Entra do servidor será a conta que você definiu para a <AzureADAccount>
e pode ser usado para gerenciar o servidor.
Substitua os seguintes valores no exemplo:
<subscriptionId>
: sua ID da 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 usada como a identidade primária.
<primaryIdentity>
: a identidade primária 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 do objeto do Microsoft Entra para o usuário
<ServerName>
: use um nome do 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, confira az sql server create.
Observação
O exemplo acima provisiona um servidor somente com uma identidade gerenciada atribuída pelo usuário. Para que os dois tipos de identidades gerenciadas sejam criadas com o servidor, é possível definir --identity-type
como UserAssigned,SystemAssigned
.
Para verificar o status do servidor após a criação, confira o seguinte comando:
az sql server show --name <ServerName> --resource-group <ResourceGroupName> --expand-ad-admin
O comando New-AzSqlServer
do PowerShell é usado para provisionar um novo servidor lógico do SQL do Azure. O comando abaixo fornecerá 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 logon do Administrador do SQL do servidor será criado automaticamente, e a senha será definida como uma senha aleatória. Como a conectividade da Autenticação do SQL está desabilitada com a criação desse servidor, o logon do Administrador do SQL não será usado.
O administrador do Microsoft Entra do servidor será a conta que você definiu para a <AzureADAccount>
e pode ser usado para 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 do servidor lógico exclusivo
<subscriptionId>
: sua ID da assinatura pode ser encontrada no portal do Azure
<managedIdentity>
: a identidade gerenciada atribuída pelo usuário. Também é possível usá-la como a identidade primária
<primaryIdentity>
: a identidade primária 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, confira New-AzSqlServer.
Observação
O exemplo acima provisiona um servidor somente com uma identidade gerenciada atribuída pelo usuário. Para que os dois tipos de identidades gerenciadas sejam criadas com o servidor, é possível definir -IdentityType
como "UserAssigned,SystemAssigned"
.
Para verificar o status do servidor após a criação, confira 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 logon do Administrador do SQL do servidor também será criado automaticamente, e a senha será definida como uma senha aleatória. Como a conectividade da Autenticação do SQL está desabilitada com esse provisionamento, o logon do Administrador do SQL não será usado.
O administrador do Microsoft Entra, <AzureADAccount>
, poderá ser usado para gerenciar o servidor quando o provisionamento for concluído.
Substitua os seguintes valores no exemplo:
<tenantId>
: encontra-se acessando o portal do Azure e o recurso Microsoft Entra ID. No painel Visão geral, você verá a ID de Locatário
<subscriptionId>
: sua ID da assinatura pode ser encontrada no portal do Azure
<ServerName>
: use um nome do 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>
: encontra-se acessando o portal do Azure e o recurso Microsoft Entra ID. No painel Usuário, procure o usuário do Microsoft Entra e encontre a ID de Objeto dele
<managedIdentity>
: a identidade gerenciada atribuída pelo usuário. Também é possível usá-la como a identidade primária
<primaryIdentity>
: a identidade primária 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"
Observação
O exemplo acima provisiona um servidor somente com uma identidade gerenciada atribuída pelo usuário. Para que os dois tipos de identidades gerenciadas sejam criadas com o servidor, é possível definir "type"
como "UserAssigned,SystemAssigned"
.
Para verificar o status do servidor, use 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
Veja a seguir um exemplo de um modelo do 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 do modelo.
Para obter mais informações e modelos do ARM, confira Modelos do Azure Resource Manager para o Banco de Dados SQL do Azure e a Instância Gerenciada de SQL.
Use uma implantação personalizada no portal do Azure e crie um modelo próprio no editor. Em seguida, salve a configuração depois de colá-la no exemplo.
Para obter a ID de recurso da identidade gerenciada atribuída pelo usuário, pesquise Identidades gerenciadas no portal do Azure. Encontre sua identidade gerenciada e acesse Propriedades. Um exemplo da ID de recurso da UMI será semelhante a /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')]"
}
}
}
]
}