Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure DevOps Services
Saiba como usar scripts para criar conexões de serviço do Azure Resource Manager com a identidade da 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 implantações grandes.
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 instalação.
Pré-requisitos
Produto | Requisitos |
---|---|
Azure DevOps | - Uma organização do Azure DevOps e um projeto. Crie uma organização ou um projeto , caso ainda não tenha feito isso. |
Azul | 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 do Usuário ou Administrador de Controle de Acesso Baseado em Função ou superior. Essas funções permitem que você gerencie o acesso e atribua funções necessárias para a criação de identidades. Para obter mais informações, veja Funções internas do Azure. |
Entra |
Permissões: – Para criar um registro de aplicativo no Microsoft Entra: a delegação de registro de aplicativo deve ser habilitada ou você deve ter a função de Desenvolvedor de Aplicativos . Para obter mais informações, confira Funções internas 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 dá suporte ao uso de principais não usuários de"creationMode": "Automatic"
. 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 identidade 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 após a criação da conexão de serviço.
Ordem de execução de comando
Esta tabela fornece uma visão geral das propriedades de chave trocadas entre os comandos de criação de cada objeto. As dependências da saída determinam a ordem de execução.
Passo | Entrada | Saída |
---|---|---|
Criar identidade no Microsoft Entra ou no Azure | tenantId |
appId , principalId |
Criar conexão de serviço no Azure DevOps | appId |
workloadIdentityFederationIssuer , workloadIdentityFederationSubject |
Criar credencial federada no Microsoft Entra ou no Azure |
appId , , workloadIdentityFederationIssuer workloadIdentityFederationSubject |
|
Criar atribuição de função no Azure | principalId |
1. Entre com a CLI do Azure
Os comandos a seguir usam a CLI do Azure. Entre 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.
Criar uma identidade gerenciada 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 um service principal no Microsoft Entra. O ID do objeto do principal de serviço também é chamado principalId
. Utilize 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 CLI do Azure para o Azure DevOps 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 snippet 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 ponto de extremidade de serviço da CLI do Azure DevOps.
4. Criar uma credencial de identidade federada
Crie uma credencial federada usando a workloadIdentityFederationIssuer
e workloadIdentityFederationSubject
saída 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 gerenciada, permitindo que a identidade gerenciada se autentique com o Microsoft Entra ID usando a declaração de sujeito fornecida.
Dica
Adicione um caractere de continuação de linha (Bash: barra invertida, PowerShell: backquote) no final de qualquer linha que não conclua o comando.
A identidade gerenciada não precisa ser criada na mesma assinatura à qual é concedido 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 à identidade gerenciada ou ao registro de aplicativo com az role assignment create
. Para funções disponíveis, consulte as funções internas do Azure. O atribuídor da função é a entidade de serviço associada ao registro do aplicativo ou à identidade gerenciada. Uma entidade de serviço é identificada por sua ID, também chamada principalId
. Está principalId
na saída do comando Criar identidade.
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
O comando atribui a função de Colaborador a um principal de serviço no nível da assinatura. Isso permite que a entidade de serviço gerencie recursos na assinatura especificada.
Para obter mais informações sobre esse comando, consulte az role assignment create.