Eventos
Crie aplicativos e agentes de IA
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Observação
Estamos lançando a nova experiência de criação de conexão de serviço do Azure. Recebê-lo em sua organização depende de vários fatores, e você ainda pode ver a experiência do usuário mais antigo.
Uma conexão de serviço do Azure Resource Manager permite que você se conecte a recursos do Azure, como o Azure Key Vault, a partir do seu Pipeline. Essa conexão permite que você use um Pipeline para implantar em recursos do Azure, assim como um aplicativo do Serviço de Aplicativo do Azure, sem precisar se autenticar todas as vezes.
Você tem várias opções de autenticação para se conectar ao Azure com uma conexão de serviço do Azure Resource Manager. As opções recomendadas são usar a federação de identidade de carga de trabalho com um registro de aplicativo ou identidade gerenciada.
As opções de conexão de serviço recomendadas do Azure Resource Manager são:
Há outras opções de autenticação de conexão de serviço do Azure Resource Manager que não estão incluídas neste artigo:
Ao criar uma conexão de serviço do Azure Resource Manager, você escolherá entre dois tipos diferentes de credenciais: federação de identidade de carga de trabalho ou um segredo.
Você pode usar essa abordagem se todos os itens a seguir forem verdadeiros para seu cenário:
Com essa seleção, o Azure DevOps consulta automaticamente a assinatura, o grupo de gerenciamento ou o workspace do Machine Learning ao qual você deseja se conectar e cria uma federação de identidade de carga de trabalho para autenticação.
No projeto do Azure DevOps, acesse Configurações do projeto>Conexões de serviço.
Para saber mais, confira Abra as configurações do projeto.
Selecione Nova conexão de serviço, Azure Resource Manager e Avançar.
Selecione Registro de aplicativo (automático) com a credencial Federação de identidade de carga de trabalho.
Selecione um Nível de escopo. Selecione Assinatura, Grupo de Gerenciamento ou Workspace do Machine Learning. Grupos de gerenciamento são contêineres que ajudarão você a gerenciar o acesso, a política e a conformidade entre várias assinaturas. O workspace do Machine Learning é um local para criar artefatos de Machine Learning.
Para o escopo da Assinatura, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
Assinatura | Obrigatória. Selecione a Assinatura do Azure. |
Grupo de recursos | Opcional. Selecione o grupo de recursos do Azure. |
Para o escopo do Grupo de Gerenciamento, selecione o Grupo de Gerenciamento do Azure.
Para o escopo do Workspace do Machine Learning, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
Assinatura | Obrigatória. Selecione a Assinatura do Azure. |
Grupo de Recursos | Obrigatória. Selecione o grupo de recursos que contém o workspace. |
Workspace do Machine Learning | Obrigatória. Selecione o workspace do Azure Machine Learning. |
Insira o nome de uma conexão de serviço.
Você também pode inserir uma descrição para a conexão de serviço.
Selecione Conceder permissão de acesso a todos os pipelines para permitir que todos os pipelines usem essa conexão de serviço. Se você não selecionar essa opção, deverá conceder acesso manualmente a cada pipeline que usa essa conexão de serviço.
Selecione Salvar.
Após criar a nova conexão de serviço, copie o nome da conexão e cole-o no seu código como o valor para azureSubscription
.
Com essa seleção, o Azure DevOps consulta automaticamente a assinatura, o grupo de gerenciamento ou o Workspace do Machine Learning ao qual você deseja se conectar e cria um segredo para autenticação.
Aviso
O uso de um segredo requer rotação e gerenciamento manuais e não é recomendado. A federação de identidade de carga de trabalho é o tipo de credencial preferencial.
Você pode usar essa abordagem se todos os itens a seguir forem verdadeiros para seu cenário:
No projeto do Azure DevOps, acesse Configurações do projeto>Conexões de serviço.
Para saber mais, confira Abra as configurações do projeto.
Selecione Nova conexão de serviço, Azure Resource Manager e Avançar.
Selecione Registro de aplicativo (automático) com a credencial Segredo.
Selecione um Nível de escopo. Selecione Assinatura, Grupo de Gerenciamento ou Workspace do Machine Learning. Grupos de gerenciamento são contêineres que ajudarão você a gerenciar o acesso, a política e a conformidade entre várias assinaturas. O workspace do Machine Learning é um local para criar artefatos de Machine Learning.
Para o escopo da Assinatura, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
Assinatura | Obrigatória. Selecione a Assinatura do Azure. |
Grupo de recursos | Obrigatória. Selecione o grupo de recursos do Azure. |
Para o escopo do Grupo de Gerenciamento, selecione o Grupo de Gerenciamento do Azure.
Para o escopo do Workspace do Machine Learning, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
Assinatura | Obrigatória. Selecione a Assinatura do Azure. |
Grupo de Recursos | Obrigatória. Selecione o grupo de recursos que contém o workspace. |
Workspace do Machine Learning | Obrigatória. Selecione o workspace do Azure Machine Learning. |
Insira o nome de uma conexão de serviço.
Você também pode inserir uma descrição para a conexão de serviço.
Selecione Conceder permissão de acesso a todos os pipelines para permitir que todos os pipelines usem essa conexão de serviço. Se você não selecionar essa opção, deverá conceder acesso manualmente a cada pipeline que usa essa conexão de serviço.
Selecione Salvar.
Após criar a nova conexão de serviço, copie o nome da conexão e cole-o no seu código como o valor para azureSubscription
.
Use essa opção para criar automaticamente uma credencial de identidade de carga de trabalho para uma identidade gerenciada atribuída pelo usuário existente. Você precisa ter uma identidade gerenciada atribuída pelo usuário existente antes de começar.
No projeto do Azure DevOps, acesse Configurações do projeto>Conexões de serviço.
Para saber mais, confira Abra as configurações do projeto.
Selecione Nova conexão de serviço, Azure Resource Manager e Avançar.
Selecione Identidade gerenciada.
Na Etapa 1: detalhes da identidade gerenciada:
Na Etapa 2: escopo do Azure:
Selecione o Nível de escopo. Selecione Assinatura, Grupo de Gerenciamento ou Workspace do Machine Learning. Grupos de gerenciamento são contêineres que ajudarão você a gerenciar o acesso, a política e a conformidade entre várias assinaturas. O workspace do Machine Learning é um local para criar artefatos de Machine Learning.
Para o escopo da Assinatura, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
Assinatura para conexão de serviço | Obrigatória. Selecione o nome da assinatura do Azure que sua identidade gerenciada acessará. |
Grupo de recursos para conexão de serviço | Opcional. Insira para limitar o acesso à identidade gerenciada a um grupo de recursos. |
Para o escopo do Grupo de Gerenciamento, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
Grupo de gerenciamento | Obrigatória. Selecione o grupo de gerenciamento do Azure. |
Para o escopo do Workspace do Machine Learning, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
Assinatura | Obrigatória. Selecione o nome da assinatura do Azure. |
Grupo de recursos para conexão de serviço | Opcional. Selecione o grupo de recursos que contém o workspace. |
Espaço de trabalho do ML Workspace | Obrigatória. Insira o nome do workspace existente do Azure Machine Learning. |
Na seção Etapa 3: detalhes da conexão do serviço:, insira ou selecione os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
Nome da conexão de serviço | Obrigatório. O nome que você irá usar para se referir a essa conexão de serviço nas propriedades da tarefa. Não nome da sua assinatura do Azure. |
Referência do Gerenciamento de Serviços | Opcional. Informações de contexto de um banco de dados ITSM. |
Descrição | Opcional. Insira uma descrição da conexão de serviço. |
Na seção Segurança, selecione Conceder permissão de acesso a todos os pipelines para permitir que todos os pipelines usem essa conexão de serviço. Se você não selecionar essa opção, deverá conceder acesso manualmente a cada pipeline que usa essa conexão de serviço.
Selecione Salvar para validar e criar a conexão de serviço.
Você pode converter rapidamente uma conexão de serviço existente do Azure Resource Manager para usar a federação de identidade da carga de trabalho para autenticação em vez de um segredo. Você poderá usar a ferramenta de conversão de conexão de serviço dentro do Azure DevOps se sua conexão de serviço atender a esses requisitos:
Para poder converter uma conexão de serviço:
No projeto do Azure DevOps, acesse Configurações do projeto>Conexões de serviço.
Para saber mais, confira Abra as configurações do projeto.
Selecione a conexão de serviço que você quer converter para usar a identidade do workload.
Selecione Converter.
Se você tiver uma credencial existente com um segredo expirado, verá uma opção diferente para converter.
Selecione Converter novamente para confirmar que você deseja criar uma nova conexão de serviço.
A conversão pode levar alguns minutos. Se quiser reverter a conexão, reverta dentro de sete dias.
Use um script para atualizar várias conexões de serviço de uma só vez para agora usar a federação de identidades de carga de trabalho para autenticação.
Este exemplo de script do PowerShell requer dois parâmetros: organização do Azure DevOps (exemplo: https://dev.azure.com/fabrikam-tailspin
) e projeto do Azure DevOps (exemplo: Space game web agent
). Em seguida, o script recupera as conexões de serviço associadas para seu projeto e organização do Azure DevOps.
Ao converter conexões de serviço para usar a federação de identidade de carga de trabalho, você é solicitado a confirmar a atualização para cada conexão que ainda não a esteja usando. Após a confirmação, o script atualiza essas conexões de serviço por meio da API REST do Azure DevOps para utilizar a federação de identidade de carga de trabalho.
O script requer o PowerShell 7.3 ou posterior e a CLI do Azure para ser executado. Salve o script em um arquivo .ps1
e execute-o usando o PowerShell 7.
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Convert multiple Azure Resource Manager service connection(s) to use Workload identity federation
.LINK
https://aka.ms/azdo-rm-workload-identity-conversion
.EXAMPLE
./convert_azurerm_service_connection_to_oidc_simple.ps1 -Project <project> -OrganizationUrl https://dev.azure.com/<organization>
#>
#Requires -Version 7.3
param (
[parameter(Mandatory=$true,HelpMessage="Name of the Azure DevOps Project")]
[string]
[ValidateNotNullOrEmpty()]
$Project,
[parameter(Mandatory=$true,HelpMessage="Url of the Azure DevOps Organization")]
[uri]
[ValidateNotNullOrEmpty()]
$OrganizationUrl
)
$apiVersion = "7.1"
$PSNativeCommandArgumentPassing = "Standard"
#-----------------------------------------------------------
# Log in to Azure
$azdoResource = "499b84ac-1321-427f-aa17-267ca6975798" # application id of Azure DevOps
az login --allow-no-subscriptions --scope ${azdoResource}/.default
$OrganizationUrl = $OrganizationUrl.ToString().Trim('/')
#-----------------------------------------------------------
# Retrieve the service connection
$getApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints?authSchemes=ServicePrincipal&type=azurerm&includeFailed=false&includeDetails=true&api-version=${apiVersion}"
az rest --resource $azdoResource -u "${getApiUrl} " -m GET --query "sort_by(value[?authorization.scheme=='ServicePrincipal' && data.creationMode=='Automatic' && !(isShared && serviceEndpointProjectReferences[0].projectReference.name!='${Project}')],&name)" -o json `
| Tee-Object -Variable rawResponse | ConvertFrom-Json | Tee-Object -Variable serviceEndpoints | Format-List | Out-String | Write-Debug
if (!$serviceEndpoints -or ($serviceEndpoints.count-eq 0)) {
Write-Warning "No convertible service connections found"
exit 1
}
foreach ($serviceEndpoint in $serviceEndpoints) {
# Prompt user to confirm conversion
$choices = @(
[System.Management.Automation.Host.ChoiceDescription]::new("&Convert", "Converting service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Skip", "Skipping service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Exit", "Exit script")
)
$prompt = $serviceEndpoint.isShared ? "Convert shared service connection '$($serviceEndpoint.name)'?" : "Convert service connection '$($serviceEndpoint.name)'?"
$decision = $Host.UI.PromptForChoice([string]::Empty, $prompt, $choices, $serviceEndpoint.isShared ? 1 : 0)
if ($decision -eq 0) {
Write-Host "$($choices[$decision].HelpMessage)"
} elseif ($decision -eq 1) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
continue
} elseif ($decision -ge 2) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
exit
}
# Prepare request body
$serviceEndpoint.authorization.scheme = "WorkloadIdentityFederation"
$serviceEndpoint.data.PSObject.Properties.Remove('revertSchemeDeadline')
$serviceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
$serviceEndpoint | ConvertTo-Json -Depth 4 -Compress | Set-Variable serviceEndpointRequest
$putApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints/$($serviceEndpoint.id)?operation=ConvertAuthenticationScheme&api-version=${apiVersion}"
# Convert service connection
az rest -u "${putApiUrl} " -m PUT -b $serviceEndpointRequest --headers content-type=application/json --resource $azdoResource -o json `
| ConvertFrom-Json | Set-Variable updatedServiceEndpoint
$updatedServiceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
if (!$updatedServiceEndpoint) {
Write-Debug "Empty response"
Write-Error "Failed to convert service connection '$($serviceEndpoint.name)'"
exit 1
}
Write-Host "Successfully converted service connection '$($serviceEndpoint.name)'"
}
Você pode reverter uma conexão de serviço automática convertida com seu segredo por sete dias. Após sete dias, crie manualmente um novo segredo.
Se criar e converter sua conexão de serviço manualmente, você não poderá revertê-la com a ferramenta de conversão de conexão de serviço, pois o Azure DevOps não tem permissões para modificar suas próprias credenciais.
Para reverter uma conexão de serviço:
No projeto do Azure DevOps, acesse Pipelines>Conexões de serviço.
Escolha uma conexão de serviço existente para reverter.
Selecione Reverter conversão para o esquema original.
Selecione Reverter novamente para confirmar sua escolha.
Se você quiser usar um conjunto predefinido de permissões de acesso e ainda não tiver uma entidade de serviço definida para esta finalidade, siga um destes tutoriais para criar uma entidade de serviço:
Para criar uma conexão de serviço que usa uma entidade de serviço existente:
No projeto do Azure DevOps, acesse Configurações do projeto>Conexões de serviço.
Para saber mais, confira Abra as configurações do projeto.
Selecione Nova conexão de serviço, Azure Resource Manager e Avançar.
Selecione Entidade de serviço (manual) e Avançar.
Na caixa de diálogo Nova conexão de serviço do Azure, selecione o Ambiente. Se você selecionar Azure Stack, insira a URL do ambiente, que é algo como https://management.local.azurestack.external
.
Selecione o Nível de escopo. Selecione Assinatura ou Grupo de Gerenciamento. Grupos de gerenciamento são contêineres que ajudarão você a gerenciar o acesso, a política e a conformidade entre várias assinaturas.
Para o escopo da Assinatura, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
ID da assinatura | Obrigatória. Insira a ID da assinatura do Azure. |
Nome da assinatura | Obrigatória. Insira o nome da assinatura do Azure. |
Para o escopo do Grupo de Gerenciamento, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
ID do Grupo de Gerenciamento | Obrigatória. Insira a ID do grupo de gerenciamento do Azure. |
Nome do Grupo de Gerenciamento | Obrigatória. Insira o nome do grupo de gerenciamento do Azure. |
Na seção Autenticação, insira ou selecione os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
Service Principal (ID da Entidade de Serviço) | Obrigatória. Insira a ID da entidade de serviço. |
Credencial | Selecione a Chave da Entidade de Serviço ou o Certificado. Se você selecionou a Chave da Entidade de Serviço, insira a chave (senha). Se você selecionou Certificado, insira o certificado. |
ID do locatário | Obrigatória. Insira a ID do locatário. |
Verificar | Selecione para validar as configurações inseridas. |
Na seção Detalhes, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
Nome da conexão | Obrigatório. O nome que você irá usar para se referir a essa conexão de serviço nas propriedades da tarefa. Não nome da sua assinatura do Azure. |
Descrição | Opcional. Insira uma descrição da conexão de serviço. |
Segurança | Selecione Conceder permissão de acesso a todos os pipelines para permitir que todos os pipelines usem essa conexão de serviço. Se você não selecionar essa opção, deverá conceder acesso manualmente a cada pipeline que usa essa conexão de serviço. |
Selecione Verificar e salvar para validar e criar a conexão de serviço.
No projeto do Azure DevOps, acesse Configurações do projeto>Conexões de serviço.
Para saber mais, confira Abra as configurações do projeto.
Selecione Nova conexão de serviço e Azure Resource Manager.
No diálogo Adicionar uma conexão de serviço do Azure Resource Manager, preencha os campos da seguinte maneira:
Insira o Nome da conexão.
Selecione o Ambiente. Se você selecionar Azure Stack, insira a URL do ambiente, que é algo como https://management.local.azurestack.external
.
Selecione o Nível do escopo, **Assinatura, ou o Grupo de Gerenciamento. Grupos de gerenciamento são contêineres que ajudarão você a gerenciar o acesso, a política e a conformidade entre várias assinaturas.
Para o escopo da Assinatura, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
ID da assinatura | Obrigatória. Insira a ID da assinatura do Azure. |
Nome da assinatura | Obrigatória. Insira o nome da assinatura do Azure. |
Para o escopo do Grupo de Gerenciamento, insira os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
ID do Grupo de Gerenciamento | Obrigatória. Insira a ID do grupo de gerenciamento do Azure. |
Nome do Grupo de Gerenciamento | Obrigatória. Insira o nome do grupo de gerenciamento do Azure. |
Insira a ID da entidade de serviço.
Selecionar o tipo de credencial:
Insira a ID do locatário.
Selecione Verificar conexão para validar a conexão de serviço.
Opcionalmente, selecione Permita que todos os pipelines usem esta conexão. Se você não selecionar essa opção, deverá conceder acesso manualmente a cada pipeline que usa essa conexão de serviço.
Selecione Salvar para criar a conexão de serviço.
Depois que a nova conexão de serviço for criada:
azureSubscription
.Se for preciso, modifique a entidade de serviço para expor as permissões apropriadas.
Para obter mais informações sobre como autenticar com uma entidade de serviço, consulte Usar o controle de acesso baseado em função para gerenciar o acesso aos seus recursos ou a postagem do blog Automatizar uma implantação de grupo de recursos do Azure usando uma entidade de serviço no Visual Studio.
Para mais informações, consulte Solucionar problemas de conexões de serviço do Azure Resource Manager.
Eventos
Crie aplicativos e agentes de IA
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Módulo
Usar a autenticação entidade de serviço em conectores personalizados - Training
Saiba como usar a autenticação entidade de serviço com conectores personalizados.
Certificação
Microsoft Certified: Identity and Access Administrator Associate - Certifications
Demonstrar os recursos do Microsoft Entra ID para modernizar as soluções de identidade, implementar soluções híbridas e implementar a governança de identidade.