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 com 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 ou Role 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 parâmetro, portanto, um nome contendo um --name 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:

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:

  1. 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.

  2. 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 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 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.