Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Serviços de DevOps do Azure
Saiba como usar scripts para criar conexões de serviço do Azure Resource Manager com identidade de carga de trabalho no Azure Pipelines. Os scripts garantem consistência, eficiência e repetibilidade ao configurar conexões de serviço, reduzindo o risco de erro humano. Eles economizam tempo, especialmente ao criar várias conexões ou implantar em ambientes diferentes. Esses scripts também podem ser integrados a um processo de automação para dimensionar e gerenciar melhor grandes implantações.
O uso de scripts como parte de um processo de automação ajuda a impor políticas de segurança e requisitos de conformidade, garantindo que as conexões de serviço usem as permissões e configurações corretas. Ele também serve como documentação para o processo de configuração.
Pré-requisitos
Produto | Requisitos |
---|---|
Azure DevOps | - Uma organização de DevOps do Azure e um projeto. Crie uma organização ou um projeto , caso ainda não o tenha feito. |
Azure | Uma assinatura do Azure. Permissões: - Para criar uma atribuição de função no Azure: você deve ter permissões de Administrador de Acesso de Usuário ou Administrador de Controle de Acesso Baseado em Função , ou superior. Essas funções permitem gerenciar o acesso e atribuir funções necessárias para criar identidades. Para obter mais informações, consulte Funções incorporadas do Azure. |
Entra |
Permissões: - Para criar um registro de aplicativo no Microsoft Entra: A delegação de registro de aplicativo deve estar habilitada ou você deve ter a função de Desenvolvedor de Aplicativos . Para obter mais informações, veja Funções incorporadas do Microsoft Entra. Em vez de criar um registro de aplicativo no Entra, você também pode criar uma identidade gerenciada no Azure. |
Processo
Restrições
- Na automação,
"creationMode": "Manual"
deve ser usado ao criar conexões de serviço que precisam de uma identidade do Microsoft Entra. Privilégios significativos do Microsoft Entra seriam necessários para que o Azure DevOps criasse todos os objetos em nome do chamador; portanto, o Azure DevOps não suporta o uso de"creationMode": "Automatic"
para principais que não sejam usuários. Em vez disso, a automação de ponta a ponta deve criar cada objeto (identidade, conexão de serviço, credencial, atribuição de função) individualmente. - A federação de identidades de carga de trabalho define uma relação bidirecional entre a identidade e a conexão de serviço. Como resultado, os objetos precisam ser criados em uma determinada ordem e a credencial federada só pode ser criada depois que a conexão de serviço é criada.
Ordem de execução de comando
Esta tabela fornece uma visão geral das principais propriedades trocadas entre os comandos de criação de cada objeto. As dependências no resultado determinam a ordem de execução.
Passo | Entrada | Resultado |
---|---|---|
Criar identidade no Microsoft Entra ou Azure | tenantId |
appId , principalId |
Criar conexão de serviço no Azure DevOps | appId |
workloadIdentityFederationIssuer , workloadIdentityFederationSubject |
Criar credencial federada no Microsoft Entra ou Azure |
appId , workloadIdentityFederationIssuer , workloadIdentityFederationSubject |
|
Criar atribuição de função no Azure | principalId |
1. Entrar com a CLI do Azure
Os comandos a seguir usam a CLI do Azure. Inicie sessão no locatário pretendido:
az login --tenant TENANT_ID
Saiba mais em Autenticar no Azure usando a CLI do Azure.
2. Criar identidade
Crie uma identidade usando a identidade gerenciada ou um registro de aplicativo.
Crie uma identidade gerida com az identity create
.
az identity create --name MyIdentity --resource-group MyResourceGroup --query '{clientId:clientId,principalId:principalId}'
Exemplo de saída:
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}
Uma identidade gerenciada cria uma entidade de serviço no Microsoft Entra. O ID do objeto da entidade de serviço também é chamado de principalId
. Use o principal de serviço posteriormente para atribuir funções RBAC. O appId
é usado para criar a conexão de serviço no Azure DevOps.
Saiba mais em az identity create.
3. Criar uma conexão de serviço
Este exemplo usa a extensão Azure DevOps da CLI do Azure e um arquivo de configuração para criar a conexão de serviço. Isso configura a identidade criada em uma nova conexão de serviço do Azure. O parâmetro de autorização servicePrincipalId
é preenchido com o appId
da identidade.
Você precisará de um appId
para usar como entrada.
O primeiro trecho de código é um arquivo de configuração, ServiceConnectionGeneric.json
.
{
"data": {
"subscriptionId": "SUBSCRIPTION_ID",
"subscriptionName": "My Azure Subscription",
"environment": "AzureCloud",
"scopeLevel": "Subscription",
"creationMode": "Manual"
},
"name": "MyNewServiceEndpoint",
"type": "AzureRM",
"url": "https://management.azure.com/",
"authorization": {
"parameters": {
"tenantid": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"serviceprincipalid": "00001111-aaaa-2222-bbbb-3333cccc4444"
},
"scheme": "WorkloadIdentityFederation"
},
"isShared": false,
"isReady": true,
"serviceEndpointProjectReferences": [
{
"projectReference": {
"id": "c7e5f0b3-71fa-4429-9fb3-3321963a7c06",
"name": "TestProject"
},
"name": "MyNewServiceEndpoint"
}
]
}
az devops service-endpoint create -service-endpoint-configuration ./ServiceConnectionGeneric.json --query authorization.parameters
az devops service-endpoint create
automatiza a criação de uma conexão de serviço no Azure DevOps usando ServiceConnectionGeneric.json
. A saída inclui parâmetros de autorização que você usará em etapas futuras.
Exemplo de saída:
{
"serviceprincipalid": "00001111-aaaa-2222-bbbb-3333cccc4444",
"tenantid": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"workloadIdentityFederationIssuer": "https://login.microsoftonline.com/aaaabbbb-0000-cccc-1111-dddd2222eeee/v2.0",
"workloadIdentityFederationIssuerType": "EntraID",
"workloadIdentityFederationSubject": "<federation-subject>"
}
Para obter mais informações sobre este comando, consulte a secção Ponto de extremidade do serviço CLI do Azure DevOps.
4. Criar uma credencial de identidade federada
Crie uma credencial federada usando a saída de workloadIdentityFederationIssuer
e workloadIdentityFederationSubject
da etapa Criar uma conexão de serviço.
az identity federated-credential create --name fic-for-sc
--identity-name MyIdentity
--resource-group MyResourceGroup
--issuer "https://login.microsoftonline.com/TENANT_ID/v2.0"
--subject "<federation-subject>"
--subscription MSI_SUBSCRIPTION_ID
az identity federated-credential create
vincula uma credencial de identidade federada a uma identidade gerida, permitindo que a identidade gerida se autentique com o Microsoft Entra ID usando a alegação de sujeito fornecida.
Sugestão
Adicione um caractere de continuação de linha (Bash: backslash, PowerShell: backquote) no final de quaisquer linhas que não concluam o comando.
A identidade gerida não precisa ser criada na mesma assinatura para a qual é concedida acesso na etapa Criar atribuição de função.
Para obter mais informações sobre esse comando, consulte az identity federated-credential create.
5. Criar atribuição de função
Adicione uma atribuição de função à sua identidade gerida ou ao registo da aplicação com az role assignment create
. Para funções disponíveis, consulte Funções internas do Azure. O cessionário da função é o principal de serviço associado ao registo da aplicação ou à identidade gerida. Uma entidade de serviço é identificada pelo seu ID, também chamado de principalId
. O principalId
está na saída do comando Create identity .
az role assignment create --role Contributor --scope /subscriptions/SUBSCRIPTION_ID --assignee-object-id PRINCIPAL_ID --assignee-principal-type ServicePrincipal
az role assignment create --role Contributor
atribui a função de Colaborador a uma entidade de serviço no nível da assinatura. Isso permite que a entidade de serviço gerencie recursos dentro da assinatura especificada.
Para obter mais informações sobre esse comando, consulte az role assignment create.