Az Cli
La CLI de Azure se puede instalar en entornos Windows, macOS y Linux. También se puede ejecutar en un contenedor de Docker y Azure Cloud Shell. Permite configurar y administrar recursos de Azure.
Instalación
Windows
Detalles de la instalación: https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=powershell
O también se puede utilizar el siguiente comando que descarga y ejecuta el instalador .msi de 64-bit:
$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri https://aka.ms/installazurecliwindowsx64 -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; Remove-Item .\AzureCLI.msi
Linux
https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-linux?view=azure-cli-latest&pivots=apt
sudo apt install azure-cli
Conexión
Para iniciar sesión con Az Cli, se pueden usar los siguientes comandos:
Popup
Se abre una ventana emergente para iniciar sesión:
az login
Línea de comandos
Se inicia sesión desde la línea de comandos.
Se registra la contraseña en el historial de la consola:
az login -u <email> -p <password>
No se registra la contraseña en el historial de la consola:
az login -u <email>
read -sp "Azure password: " AZ_PASS && echo && az login -u <username> -p $AZ_PASS
$AzCred = Get-Credential -UserName <username>
az login -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password
Sin permisos en suscripciones
az login -u <email> -p <password> --allow-no-subscriptions
Con código de dispositivo
Si se quiere iniciar sesión sin el popup o usando credenciales desde la consola, se puede usar el siguiente comando, que dará un código para usarlo desde un positivo en el que se haya iniciado sesión.
Se ejecuta el comando y se obtiene un código:
az login --use-device-code

Se abre la url "https://microsoft.com/devicelogin" en un dispositivo donde se haya iniciado sesión.
Se añade el código mostrado en el paso 1.
Tokens
Obtener token de acceso:
az account get-access-token
az account get-access-token --resource-type aad-graph
az account get-access-token --subscription "<subscription ID or name>"
Configuración
az configure
Comandos
az find "vm"
az find "az vm"
az find "az vm list"
Para obtener información de la mayoría de consultas, es necesario que el dispositivo se encuentre dentro del dominio, si no, saldrá el siguiente error:
AADSTS53001: Device is not in required device state: domain_joined. Conditional Access policy requires a domain joined device, and the device is not domain joined. Trace ID: 65ee476e-caa8-4fff-b8fc-351f6e947101 Correlation ID: ca37e804-ed92-4f9e-bf70-44895e9e6ca0 Timestamp: 2024-04-28 18:10:57Z
Información general
Detalles del Tenant:
az account tenant list
Obtener detalles de la subscripción actual:
az account subscription list
Obtener detalles del usuario actual:
az ad signed-in-user show
Obtener los objetos propiedad del usuario actual:
az ad signed-in-user list-owned-objects
Obtener las máquinas virtuales donde el usuario actual tiene al menos permisos de lectura:
az vm list
Obtener nombre de las máquinas virtuales:
az vm list --query "[].[name]" -o table
Usuarios
Obtener usuarios:
az ad user list
Filtrar la salida para mostrar únicamente userPrincipalName y displayName:
az ad user list --query "[].[userPrincipalName,displayName]" --output table
Filtrar la salida para mostrar las columnas anteriores modificando el nombre de la columna:
az ad user list --query "[].{UPN:userPrincipalName, Name:displayName}" --output table
Obtener detalles de un usuario en concreto:
az ad user show --id [email protected]
Obtener los usuarios cuyo displayName contenga la cadena admin (case sensitive):
az ad user list --query "[?contains(displayName,'admin')].displayName"
Lo mismo que antes, pero NOT case sensitive:
az ad user list | ConvertFrom-Json | %{$_.displayName -match "admin"}
Todos los usuarios sincronizados desde on-prem:
az ad user list --query "[?onPremisesSecurityIdentifier!=null].displayName"
Usuarios que son de AzureAD:
az ad user list --query "[?onPremisesSecurityIdentifier==null].displayName"
Para ver más opciones de filtrado:
az ad user show list --query-examples
Grupos
Obtener todos los grupos:
az ad group list
az ad group list --query "[].[displayName]" -o table
Obtener un grupo en concreto según su DisplayName u ObjectID:
az ad group show -g "VM Admins"
az ad group show -g fe5e6dcb-1c46-2abe-b964-9af5ba122494
Obtener los grupos que contengan en el DisplayName una cadena en concreto (case sensitive):
az ad group list --query "[?contains(displayName,'admin')].displayName"
Obtener los grupos que contengan en el DisplayName una cadena en concreto (NOT case sensitive):
az ad group list | ConvertFrom-Json | %{$_.displayName -match "admin"}
Obtener los grupos sincronizados desde on-prem:
az ad group list --query "[?onPremisesSecurityIdentifier!=null].displayName"
Obtener los grupos de AzureAD:
az ad group list --query "[?onPremisesSecurityIdentifier==null].displayName"
Obtener miembros de un grupo:
az ad group member list -g "VM Admins" --query "[].[displayName]" -o table
Comprobar si un usuario es miembro de un grupo:
az ad group member check --group "VM Admins" --member-id fe4e6dcb-1c46-2abe-b964-9af5ba322494
Obtener los ObjectID de los grupos a los que pertenece el grupo:
az ad group get-member-groups -g "VM Admins"
Añadir un usuario a un grupo usando sus ObjectID:
Add-AzureADGroupMember -ObjectId "<ID del grupo>" -RefObjectId "<ID del usuario>" -Verbose
Add-AzureADGroupMember -ObjectId "e6875783-1378-4072-b242-
84c08c6dc0d7" -RefObjectId "f63e133c-bd01-4b1b-b3b7-7cd949fd45f3" -Verbose
Aplicaciones
Obtener todas las aplicaciones registradas en el Tenant:
az ad app list
az ad app list --query "[].[displayName]" -o table
Obtener todos los detalles de una aplicación:
az ad app show --id fe4e6dcb-1c45-2abe-b964-9af5ba322494
Obtener una aplicación basado en su DisplayName:
az ad app list --query "[?contains(displayName,'app')].displayName"
Obtener una aplicación que contenga una cadena en concreto en el DisplayName:
az ad app list | ConvertFrom-Json | %{$_.displayName -match "app"}
Obtener al dueño/a de una aplicación:
az ad app owner list --id fe4e6dcb-1c45-2abe-b964-9af5ba321494 --query "[].[displayName]" -o table
Obtener las aplicaciones que cuentan con contraseña:
az ad app list --query "[?passwordCredentials !=null].displayName"
Obtener las aplicaciones que tienen claves de credenciales (usan certificados de autenticación):
az ad app list --query "[?keyCredentials !=null].displayName"
Obtener aplicaciones web:
az webapp list
Obtener aplicaciones de funciones de Azure:
az functionapp list
Servicios principales
Obtener todos los Service Principals:
az ad sp list --all
az ad sp list --all --query "[].[displayName]" -o table
Obtener los detalles de un Service Principal según su DisplayName u ObjectID:
az ad sp show --id fe4e6dcb-1c45-1abe-b964-9af5ba321494
Obtener un Service Principal cuyo DisplayName empiece por la cadena en concreto :
az ad sp list --all --query "[?contains(displayName,'app')].displayName"
Obtener un Service Principal que contenga una cadena en concreto en su DisplayName:
az ad sp list --all | ConvertFrom-Json | %{$_.displayName -match "app"}
Obtener al dueño/a de un Service Principal:
az ad sp owner list --id fe4e6dcb-1c45-1abe-b964-9af5ba321494 --query "[].[displayName]" -o table
Obtener los Service Principals cuyo dueño/a es el usuario actual:
az ad sp list --show-mine
Obtener los Service Principals que cuentan con contraseña:
az ad sp list --all --query "[?passwordCredentials != null].displayName"
Obtener los Service Principals que tienen claves de credenciales (usan certificados de autenticación):
az ad sp list -all --query "[?keyCredentials != null].displayName"
Roles
az role assignment list --assignee [email protected]
Referencias
Última actualización
¿Te fue útil?