Criar uma entidade 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, você aprenderá a:

  • Criar uma entidade de serviço
  • Entrar usando uma entidade de serviço e senha
  • Entrar usando uma entidade de serviço e um certificado
  • Gerenciar as funções da entidades serviço
  • Criar um recurso do Azure usando uma entidade de serviço
  • Redefinir credenciais de entidade 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 uma entidade 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 uma entidade 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 planeja criar uma função e um escopo para sua nova entidade de serviço posteriormente, o comando az ad sp create-for-rbac sem parâmetros será uma solução aceitável. No entanto, sem uma função e escopo, a nova entidade de serviço não tem acesso aos recursos. Ela só existe.

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

Criar uma entidade de serviço com função e escopo

Como prática recomendada, sempre atribua uma entidade de serviço específica --role e --scopes quando você cria uma entidade 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 permissões à entidade de serviço contributor a uma assinatura se a entidade de serviço precisar acessar apenas o armazenamento do Azure em um grupo de recursos. Considere uma função especializada como colaborador de dados de blob de armazenamento. 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 dependem da ID de recurso para obter um formato e um valor reais.

    Escopo Exemplo
    Subscription /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, 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 leitor permissões 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 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 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 à sua nova entidade de serviço, altere as permissões gerenciando funções de 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 veja Obter uma entidade de serviço existente.

Aviso

Quando você cria uma entidade 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.