Compartilhar via


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 permitir que os aplicativos façam login como um usuário totalmente privilegiado, o Azure oferece entidades de serviço. Um principal de serviço do Azure é uma identidade criada para uso com aplicações, serviços hospedados e ferramentas automatizadas. Essa identidade é usada para acessar recursos.

Neste tutorial, você aprenderá como:

  • Criar um principal de serviço
  • Entrar usando um principal de serviço e senha
  • Entrar usando um principal de serviço e um certificado
  • Gerenciar as funções da entidades serviço
  • Criar um recurso do Azure usando um principal de serviço
  • Redefinir credenciais do principal de serviço

Pré-requisitos

  • Em uma assinatura, você deve ter permissões User Access Administrator ou Role Based Access Control Administrator, ou superiores, para criar um principal de serviço. Para obter uma lista de funções disponíveis para o controle de acesso baseado em função (RBAC) do Azure, confira as funções internas do Azure.

Criar um principal de serviço

Use o comando de referência da CLI do Azure az ad sp create-for-rbac para criar uma entidade de serviço. Este exemplo não especifica um parâmetro --name, portanto, um nome que contém 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 pretende criar uma função e um escopo para sua nova entidade de serviço posteriormente, usar o comando az ad sp create-for-rbac sem parâmetros é uma solução aceitável. No entanto, sem uma função e escopo, o novo principal de serviço não tem acesso aos recursos. Ela só existe.

Ao criar uma entidade de serviço sem parâmetros, conclua também estas etapas:

Observação

Se a sua conta não tem permissão para criar um principal do serviço, az ad sp create-for-rbac retorna a mensagem de erro "Privilégios insuficientes para concluir a operação". Entre em contato com o administrador do Microsoft Entra para criar um principal de serviço.

Em um diretório do Microsoft Entra ID no qual a configuração de usuário Os 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):

Para obter mais informações sobre as configurações de usuário no Microsoft Entra ID, consulte Restrinja quem pode criar aplicativos.

Criar uma entidade de serviço com papel e escopos

Como prática recomendada, sempre atribua identificadores específicos --role e --scopes quando você cria um principal de serviço. Siga estas etapas:

  1. Determine a função correta.

    Ao determinar a função, sempre use o princípio do privilégio mínimo. Por exemplo, não conceda à entidade de serviço contributor permissões a uma assinatura se ela só precisa acessar o armazenamento do Azure dentro de um grupo de recursos. Considere uma função especializada como colaborador de dados de armazenamento Blob. Para obter uma lista completa das funções disponíveis no RBAC do Azure, confira Funções internas do Azure.

  2. Obtenha um valor para o parâmetro de escopos.

    Localize e copie a ID de 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. Estes são exemplos comuns de --scopes, mas depende do ID de recurso para obter um formato e valor reais.

    Escopo 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 arquivos da 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, confira Entender o escopo do RBAC do Azure.

  3. Crie a entidade de serviço.

    Neste exemplo, uma nova entidade de serviço chamada myServicePrincipalName1 é criada com permissões de leitura para todos os recursos do 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 parâmetro --scopes aceita uma lista de escopos delimitada por espaços. Neste exemplo, uma nova entidade de serviço chamada myServicePrincipalName2 é criada com permissões de leitor para todos os recursos no grupo de recursos myRG1. Essa entidade de serviço também recebe permissões de leitor para myVM, que está 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 ao seu novo principal de serviço, altere as permissões gerenciando funções de principal de serviço.

Criar um principal de serviço usando variáveis

Você também pode criar um principal 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 informações sobre uma entidade de serviço existente.

Aviso

Quando você cria um principal de serviço do Azure usando o comando az ad sp create-for-rbac, a saída inclui as credenciais que você precisa proteger. Lembre-se de não incluir essas credenciais em seu código ou de verificar as credenciais em seu controle do código-fonte. Como alternativa, considere usar as identidades gerenciadas, se estiverem disponíveis, para evitar a necessidade de usar credenciais.

Próximas etapas

Agora que você aprendeu a criar uma entidade de serviço do Azure, prossiga para a próxima etapa para saber como utilizar entidades de serviço com autenticação baseada em senha.