Create an Azure service principal with Azure CLI (Criar um principal de serviço do Azure com a CLI do Azure)
As ferramentas automatizadas que usam os serviços do Azure sempre devem ter permissões restritas para garantir que os recursos do Azure estejam seguros. Portanto, em vez de fazer com que os aplicativos entrem como um usuário totalmente privilegiado, o Azure oferece entidades de serviço. Uma entidade de serviço do Azure é uma identidade criada para uso com aplicativos, serviços hospedados e ferramentas automatizadas. Essa identidade é usada para acessar recursos.
Neste tutorial, irá aprender a:
- Criar um principal de serviço
- Iniciar sessão utilizando uma entidade de serviço e uma palavra-passe
- Entrar usando uma entidade de serviço e um certificado
- Gerir funções de principais de serviço
- Criar um recurso do Azure usando uma entidade de serviço
- Redefinir credenciais da entidade de serviço
Pré-requisitos
- Em uma assinatura, você deve ter
User Access Administrator
ouRole Based Access Control Administrator
permissões, ou superiores, para criar uma entidade de serviço. Para obter uma lista de funções disponíveis para o controle de acesso baseado em função do Azure (Azure RBAC), consulte Funções internas do Azure.
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.
Criar um principal de serviço
Use o comando az ad sp create-for-rbac Azure CLI reference para criar uma entidade de serviço. Este exemplo não especifica um --name
parâmetro, portanto, um nome contendo um carimbo de data/hora é criado automaticamente.
az ad sp create-for-rbac
Console de saída:
{
"appId": "myAppId",
"displayName": "myServicePrincipalName",
"password": "myServicePrincipalPassword",
"tenant": "myTentantId"
}
Se você não estiver aderindo às convenções de nomenclatura de recursos e planeja criar uma função e um escopo para sua nova entidade de serviço mais tarde, o az ad sp create-for-rbac
comando sem parâmetros é uma solução aceitável. No entanto, sem uma função e escopo, a nova entidade de serviço não tem acesso a recursos. Ela simplesmente existe.
Ao criar uma entidade de serviço sem parâmetros, conclua também estas etapas:
- Registre sua senha atribuída pelo sistema, pois não é possível recuperá-la novamente. Se você perder a senha, redefini-la usando az ad sp credential reset, conforme explicado em Redefinir credenciais da entidade de serviço.
- Defina a atribuição de função para sua nova entidade de serviço usando az role assignment create conforme explicado em Gerenciar funções de entidade de serviço.
Nota
Se sua conta não tiver permissão para criar uma entidade de serviço, az ad sp create-for-rbac
retornará uma mensagem de erro contendo "Privilégios insuficientes para concluir a operação". Entre em contato com o administrador do Microsoft Entra para criar uma entidade de serviço.
Em um diretório de ID do Microsoft Entra onde a configuração de usuário Usuários podem registrar aplicativos foi definida como Não, você deve ser membro de uma das seguintes funções internas do Microsoft Entra ID (que têm a ação: microsoft.directory/applications/createAsOwner
ou microsoft.directory/applications/create
):
- Programador de Aplicações
- Administrador de Aplicações
- Administrador de Aplicações na Cloud
- Administrador Global do
- Administrador de identidade híbrida
Para obter mais informações sobre as configurações do usuário no Microsoft Entra ID, consulte Restringir quem pode criar aplicativos.
Criar uma entidade de serviço com função e escopo
Como prática recomendada, sempre atribua um específico --role
e --scopes
quando você cria uma entidade de serviço. Siga estes passos:
Determine a função correta.
Ao determinar a função, use sempre o princípio do menor privilégio. Por exemplo, não conceda permissões à entidade
contributor
de serviço para uma assinatura se a entidade de serviço só precisar acessar o armazenamento do Azure dentro de um grupo de recursos. Considere uma função especializada, como contribuidor de dados de blob de armazenamento. Para obter uma lista completa das funções disponíveis no RBAC do Azure, consulte Funções internas do Azure.Obtenha um valor para o parâmetro scopes.
Localize e copie a ID do Recurso do Azure que a nova entidade de serviço precisa acessar. Essas informações geralmente são encontradas na página Propriedades ou Pontos de Extremidade do portal do Azure de cada recurso. Aqui estão exemplos comuns
--scopes
, mas confie no seu ID de recurso para um formato e valor reais.Âmbito Exemplo Subscrição /subscriptions/mySubscriptionID
Grupo de recursos /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
Máquina virtual /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
Serviço de arquivo de conta de armazenamento /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
Fábrica de dados /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName
Para obter mais exemplos de escopo, consulte Entender o escopo do Azure RBAC.
Crie a entidade de serviço.
Neste exemplo, uma nova entidade de serviço chamada myServicePrincipalName1 é criada com permissões de leitor para todos os recursos no grupo de recursos RG1.
# Bash script az ad sp create-for-rbac --name myServicePrincipalName1 \ --role reader \ --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
O
--scopes
parâmetro aceita uma lista de escopos delimitada por espaço. Neste exemplo, uma nova entidade de serviço chamada myServicePrincipalName2 é criada com permissões de leitor para todos os recursos do grupo de recursos myRG1. Esta entidade de serviço também recebe permissões de leitor para myVM localizado em myRG2.# Bash script az ad sp create-for-rbac --name myServicePrincipalName2 \ --role reader \ --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
Se você decidir que concedeu poucas ou muitas permissões à nova entidade de serviço, altere as permissões gerenciando as funções da entidade de serviço.
Criar uma entidade de serviço usando variáveis
Você também pode criar uma entidade de serviço usando variáveis:
# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"
echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
--role $roleName \
--scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup
Para obter uma lista completa das propriedades da entidade de serviço, use az ad sp list e consulte Obter uma entidade de serviço existente.
Aviso
Quando você cria uma entidade de serviço do Azure usando o az ad sp create-for-rbac
comando, a saída inclui credenciais que você deve proteger. Certifique-se de que não inclui estas credenciais no seu código nem regista as credenciais no seu controlo de código fonte. Como alternativa, considere o uso de identidades gerenciadas, se disponíveis, para evitar a necessidade de usar credenciais.
Passos Seguintes
Agora que você aprendeu como criar uma entidade de serviço do Azure, prossiga para a próxima etapa para saber como usar entidades de serviço com autenticação baseada em senha.