Criar uma entidade de serviço e uma chave
Agora que você entende o conceito de entidade de serviço, pode se perguntar como ela prova sua identidade para o Microsoft Entra ID. Nesta unidade, você aprenderá sobre o processo de autenticação e as credenciais das entidades de serviço. Você também aprenderá como criar uma entidade de serviço e dar-lhe uma chave.
Compreender como as entidades de serviço são autenticadas
Quando uma entidade de serviço precisa se comunicar com o Azure, ela entra na ID do Microsoft Entra. Depois que o Microsoft Entra ID verifica a identidade da entidade de serviço, ele emite um token que o aplicativo cliente armazena e usa quando faz solicitações ao Azure.
Em termos gerais, esse processo é semelhante a como as coisas funcionam quando você mesmo entra no Azure como usuário. No entanto, em comparação com os usuários, as entidades de serviço têm um tipo ligeiramente diferente de credencial para provar sua identidade. As entidades de serviço usam duas credenciais principais: chaves e certificados.
Nota
Lembre-se de que as identidades gerenciadas são entidades de serviço especiais que funcionam no Azure. Eles têm um tipo diferente de processo de autenticação que não exige que você conheça ou manipule credenciais.
Chaves
As chaves são semelhantes às senhas. No entanto, as chaves são muito mais longas e complexas. Na verdade, para a maioria das situações, o Microsoft Entra ID gera chaves para garantir que:
- As chaves são criptograficamente aleatórias. Ou seja, são extremamente difíceis de adivinhar.
- Os seres humanos não usam acidentalmente senhas fracas como chaves.
As entidades de serviço geralmente têm permissões altamente privilegiadas, por isso é essencial que estejam seguras. Normalmente, você só precisa manipular a chave brevemente ao configurar pela primeira vez a entidade de serviço e seu pipeline. Assim, a chave não precisa ser memorável ou fácil de digitar.
Uma única entidade de serviço pode ter várias chaves ao mesmo tempo, mas os usuários não podem ter várias senhas. Tal como as palavras-passe, as chaves têm uma data de validade. Você aprenderá mais sobre isso em breve.
Nota
Pense em chaves como senhas muito importantes, semelhantes às chaves de conta de armazenamento. Deve tratá-los com o mesmo nível de segurança e cuidado.
Certificados
Os certificados são outra maneira de autenticar entidades de serviço. Eles são muito seguros, mas podem ser difíceis de gerenciar. Algumas organizações exigem o uso de certificados para determinados tipos de entidades de serviço.
Não discutiremos certificados neste módulo. No entanto, se você trabalha com uma entidade de serviço que usa autenticação de certificado, ela basicamente funciona da mesma maneira que qualquer outra entidade de serviço em termos de gerenciamento e concessão de permissão para seu pipeline.
Nota
Os certificados são uma boa opção quando você pode usá-los. São mais difíceis para os atacantes roubarem. Também é mais difícil intercetar e modificar solicitações que usam certificados. No entanto, os certificados exigem mais infraestrutura e têm alguma sobrecarga de manutenção contínua.
Trabalhar com chaves para entidades de serviço
Quando você cria uma entidade de serviço, geralmente pede ao Azure para criar uma chave ao mesmo tempo. O Azure normalmente gera uma chave aleatória para você.
Nota
Lembra-se da nossa discussão anterior sobre como funcionam as entidades de serviço? As chaves são armazenadas como parte do objeto de registro do aplicativo. Se você abrir o portal do Azure, procurar dentro da configuração do Microsoft Entra e, em seguida, ir para os registros do aplicativo, você pode criar e excluir chaves lá também.
O Azure mostra a chave quando você cria a entidade de serviço. Esta é a única vez que o Azure lhe mostrará a chave. Depois disso, você não pode mais recuperá-lo. É importante que você copie a chave com segurança para que possa usá-la ao configurar seu pipeline. Não partilhe a chave por e-mail ou outro meio não seguro. Se você perder uma chave, deverá excluí-la e criar uma nova.
Gerenciar entidades de serviço para Pipelines do Azure
Quando você cria uma chave para a entidade de serviço de um pipeline, é uma boa ideia copiar imediatamente a chave para a configuração do pipeline. Dessa forma, você evita armazenar ou transmitir a chave desnecessariamente.
As ferramentas de pipeline incluem maneiras seguras de especificar o ID e a chave do aplicativo da entidade de serviço. Nunca armazene credenciais de qualquer tipo no controle do código-fonte. Em vez disso, use conexões de serviço ao trabalhar com o Azure Pipelines. Neste módulo, discutimos apenas como criar uma entidade de serviço e uma chave. Você aprenderá como configurar seu pipeline com a chave em um módulo posterior.
Gorjeta
Os Pipelines do Azure podem criar entidades de serviço para você automaticamente. Neste módulo, você criará e gerenciará manualmente suas entidades de serviço para obter uma melhor compreensão do que está acontecendo. Em outros módulos, você usará o método de criação automática para simplificar.
Criar uma entidade de serviço e uma chave
Você pode usar a CLI do Azure para criar e gerenciar entidades de serviço.
Nota
Criar e modificar entidades de serviço requer que você tenha as permissões relacionadas no ID do Microsoft Entra. Em algumas organizações, você pode precisar de um administrador para executar essas etapas para você.
Para criar uma entidade de serviço e uma chave, use o az ad sp create-for-rbac
comando. Este comando aceita vários argumentos e, opcionalmente, pode atribuir funções à entidade de serviço. Você aprenderá sobre esse assunto mais adiante neste módulo. Por enquanto, aqui está um exemplo que ilustra como criar uma entidade de serviço sem nenhuma atribuição de função do Azure:
az ad sp create-for-rbac --name MyPipeline
Quando você executa esse comando, a CLI do Azure retorna uma resposta JSON com uma password
propriedade. Esta propriedade é a chave da entidade de serviço. Você não pode obter essa chave novamente, então certifique-se de usá-la imediatamente ou salvá-la em algum lugar com segurança.
Nota
O az ad sp create-for-rbac
comando cria um registro de aplicativo no Microsoft Entra ID, adiciona uma entidade de serviço ao locatário do Microsoft Entra e cria uma chave para o registro do aplicativo. Outro comando, , az ad sp create
cria apenas a entidade de serviço em seu locatário (não o registro do aplicativo). Quando você cria entidades de serviço para pipelines, az ad sp create-for-rbac
geralmente é o melhor comando a ser usado.
Você pode usar os cmdlets do Azure PowerShell para criar e gerenciar entidades de serviço.
Nota
Criar e modificar entidades de serviço requer que você tenha as permissões relacionadas no ID do Microsoft Entra. Em algumas organizações, você pode precisar de um administrador para executar essas etapas para você.
Para criar uma entidade de serviço e uma chave, use o New-AzADServicePrincipal
cmdlet. Este cmdlet aceita vários argumentos e, opcionalmente, pode atribuir funções à entidade de serviço. Você aprenderá sobre esse assunto mais adiante neste módulo. Por enquanto, aqui está um exemplo que ilustra como criar uma entidade de serviço sem nenhuma atribuição de função do Azure:
$servicePrincipal = New-AzADServicePrincipal -DisplayName MyPipeline
Quando você executa esse comando, o Azure PowerShell preenche a variável com informações sobre a entidade de serviço, incluindo a servicePrincipal
chave:
$servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
Você não pode obter essa chave novamente, então certifique-se de usá-la imediatamente ou salvá-la em algum lugar seguro.
Nota
O New-AzADServicePrincipal
cmdlet cria um registro de aplicativo na ID do Microsoft Entra, adiciona uma entidade de serviço ao locatário do Microsoft Entra e cria uma chave para o registro do aplicativo.
Identificar uma entidade de serviço
As entidades de serviço têm vários identificadores e nomes que você usa para identificar e trabalhar com elas. Os identificadores que você mais usa são:
- ID do aplicativo: o registro do aplicativo tem um identificador exclusivo, geralmente chamado de ID do aplicativo ou, às vezes, de ID do cliente. Normalmente, você o usa como o nome de usuário quando a entidade de serviço entra no Azure.
- ID do objeto: O registro do aplicativo e a entidade de serviço têm suas próprias IDs de objeto separadas, que são identificadores exclusivos atribuídos pela ID do Microsoft Entra. Ocasionalmente, você precisará usar essas IDs de objeto ao gerenciar uma entidade de serviço.
- Nome para exibição: este é um nome legível por humanos que descreve a entidade de serviço.
Gorjeta
Use um nome de exibição claro e descritivo para sua entidade de serviço. É importante ajudar sua equipe a entender para que serve a entidade de serviço, para que ninguém a exclua acidentalmente ou altere suas permissões.
Atenção
Um nome para exibição não é exclusivo. Várias entidades de serviço podem compartilhar o mesmo nome para exibição. Tenha cuidado ao conceder permissões a uma entidade de serviço usando seu nome de exibição para identificá-la. Você pode acidentalmente dar permissões para a entidade de serviço errada. É uma boa prática usar o ID do aplicativo.
Quando você cria uma entidade de serviço, normalmente define apenas o nome para exibição. O Azure atribui os outros nomes e identificadores automaticamente.
Manipular chaves expiradas
As entidades de serviço não expiram, mas suas chaves sim. Ao criar uma chave, você pode configurar seu tempo de expiração. Por padrão, o tempo de expiração é definido como um ano. Após esse tempo de expiração, a chave não funciona mais e o pipeline não pode entrar no Microsoft Entra ID. Você precisa renovar ou girar as chaves regularmente.
Atenção
Pode ser tentador definir longos tempos de expiração para as suas chaves, mas não deve fazê-lo. As entidades de serviço são protegidas apenas por suas credenciais. Se um invasor obtiver a chave de uma entidade de serviço, ele pode causar muitos danos. A melhor abordagem para minimizar o período que um ataque pode durar é mudar regularmente as suas chaves. Você também deve excluir e recriar chaves se suspeitar que elas foram vazadas.
Para redefinir uma chave para uma entidade de serviço, use o az ad sp
comando com a ID do aplicativo, como neste exemplo:
az ad sp credential reset --id "b585b740-942d-44e9-9126-f1181c95d497"
Você também pode remover e recriar a chave da entidade de serviço em duas etapas separadas usando os comandos e, em seguida, os az ad sp credential delete
az ad sp credential reset --append
comandos.
Para redefinir uma chave para uma entidade de serviço, primeiro use o Remove-AzADServicePrincipalCredential
cmdlet para remover a credencial existente. Em seguida, use o New-AzADServicePrincipalCredential
cmdlet para adicionar uma nova credencial. Ambos os cmdlets usam a ID do objeto da entidade de serviço para identificá-lo. Antes de usar os cmdlets, você precisa obter essa ID da ID do aplicativo:
$applicationId = APPLICATION_ID
$servicePrincipalObjectId = (Get-AzADServicePrincipal -ApplicationId $applicationId).Id
Remove-AzADServicePrincipalCredential -ObjectId $servicePrincipalObjectId
$newCredential = New-AzADServicePrincipalCredential -ObjectId $servicePrincipalObjectId
$newKey = $newCredential.SecretText
Gorjeta
Uma única entidade de serviço pode ter várias chaves. Você pode atualizar com segurança seu aplicativo para usar uma nova chave enquanto a chave antiga ainda estiver válida e, em seguida, excluir a chave antiga quando ela não estiver mais em uso. Esta técnica evita o tempo de inatividade da expiração da chave.
Gerencie o ciclo de vida da sua entidade de serviço
É importante considerar todo o ciclo de vida de cada entidade de serviço criada. Quando você cria uma entidade de serviço para um pipeline, o que acontecerá se o pipeline for eventualmente excluído ou não for mais usado?
As entidades de serviço não são removidas automaticamente, portanto, você precisa auditar e remover entidades de serviço antigas. É importante remover entidades de serviço antigas pelo mesmo motivo que você exclui contas de usuário antigas: os invasores podem obter acesso às suas chaves. É melhor não ter credenciais que não sejam usadas ativamente.
É uma boa prática documentar seus diretores de serviço em um local que você e sua equipe possam acessar facilmente. Você deve incluir as seguintes informações para cada entidade de serviço:
- Informações de identificação essenciais, incluindo o seu nome e ID de aplicação.
- A finalidade da entidade de serviço.
- Quem o criou, quem é responsável por gerenciá-lo e suas chaves e quem pode ter respostas se houver um problema.
- As permissões de que necessita e uma justificação clara para o motivo pelo qual precisa delas.
- Qual é a sua vida útil esperada.
Você deve auditar regularmente suas entidades de serviço para garantir que elas ainda estejam sendo usadas e que as permissões atribuídas ainda estejam corretas.