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
ouRole 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.
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
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:
- Registre sua senha atribuída pelo sistema, pois não é possível recuperá-la novamente. Se você perder a senha, redefina-a usando az ad sp credential reset, conforme explicado em Redefinir as credenciais de 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.
Observação
Se a sua conta não tem permissão para criar uma entidade de 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 uma entidade 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
):
- Desenvolvedor de Aplicativo
- Administrador de Aplicativos
- Administrador de Aplicativos de Nuvem
- Administrador global
- Administrador de Identidade Híbrida
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 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:
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.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.
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.