Partilhar via


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 os aplicativos entrarem como um usuário com todos os privilégios, o Azure fornece princípios de serviço. Uma entidade 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, aprenderás como:

  • Criar um "service principal"
  • Iniciar sessão utilizando um principal de serviço e uma palavra-passe
  • Iniciar sessão utilizando um principal de serviço e um certificado
  • Gerenciar funções principais de serviço
  • Criar um recurso do Azure usando uma entidade de serviço
  • Redefinir credenciais da entidade de serviço

Pré-requisitos

  • Numa subscrição, deve-se ter User Access Administrator ou Role Based Access Control Administrator permissões, 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 do Azure (Azure RBAC), consulte Funções internas do Azure.

Criar um "service principal"

Use o comando de referência da Azure CLI az ad sp create-for-rbac para criar uma entidade de serviço. Este exemplo não especifica um --name parâmetro, portanto, um nome com uma marca temporal é gerado 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 um âmbito, a nova entidade de serviço não tem acesso aos recursos. Ela simplesmente existe.

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

Observação

Caso a sua conta não tenha permissão para criar uma entidade de serviço, az ad sp create-for-rbac irá retornar uma mensagem de erro contendo "Privilégios insuficientes para concluir a operação". Contacte o administrador do Microsoft Entra para criar um principal de serviço.

Num diretório do Microsoft Entra ID onde a configuração de utilizadores Utilizadores podem registar aplicações foi definida como Não, deve ser membro de uma das seguintes funções predefinidas 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 do usuário no Microsoft Entra ID, consulte Restringir quem pode criar aplicativos.

Criar uma entidade de serviço com papel e escopo

Como prática recomendada, sempre atribua um --role e --scopes específicos quando cria um principal 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 ao principal de serviço contributor para uma subscrição se o principal de serviço só precisar aceder ao 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.

    Encontre e copie a ID do Recurso do Azure que o novo principal de serviço precisa acessar. Essas informações geralmente são encontradas na página Propriedades ou Pontos de Extremidade no portal do Azure de cada recurso. Aqui estão exemplos comuns --scopes, mas confie no seu ID de Recurso para um valor e formato reais.

    Âmbito de aplicação 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 ficheiros 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, consulte Entender o escopo do Azure RBAC.

  3. Crie a entidade de serviço principal.

    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 um principal de serviço usando variáveis

Você também pode criar um principal de serviço através de 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 Consulte uma entidade de serviço existente.

Advertência

Quando se cria um principal de serviço do Azure usando o comando az ad sp create-for-rbac, a saída inclui credenciais que 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.

Próximas Etapas

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.