Autenticación en el área de trabajo mediante una entidad de servicio
A veces, usar la autenticación interactiva o autenticarse como una cuenta de usuario no es una opción adecuada. Estos casos pueden surgir cuando quiere enviar trabajos desde un servicio web, otro rol de trabajo o un sistema automatizado. Una opción consiste en configurar una identidad administrada; otra opción es usar una entidad de servicio, algo que se explicará en este artículo.
Requisito previo: Creación de una entidad de servicio y un secreto de aplicación
Para autenticarse como entidad de servicio, primero debe crear una.
Para crear una entidad de servicio, asignarle acceso y generar una credencial, haga lo siguiente:
Cree una aplicación de Azure AD:
Nota:
No es necesario que establezca un identificador URI de redirección.
- Una vez creada, tome nota de los campos Id. de aplicación (cliente) e Id. de directorio (inquilino).
Cree una credencial para iniciar sesión como la aplicación:
- En la configuración de la aplicación, seleccione Certificados y secretos.
- En Secretos de cliente, seleccione Crear un secreto.
- Proporcione una descripción y una duración y, a continuación, seleccione Agregar.
- Copie el valor del secreto en un lugar seguro de inmediato, ya que no podrá verlo de nuevo.
Conceda permisos a la entidad de servicio para acceder al área de trabajo:
- Abra Azure Portal.
- En la barra de búsqueda, escriba el nombre del grupo de recursos en el que creó el área de trabajo. Seleccione el grupo de recursos cuando aparezca en los resultados.
- En la información general del grupo de recursos, seleccione Control de acceso (IAM).
- Seleccione Agregar asignación de roles.
- Busque y seleccione la entidad de servicio.
- Asígnele el rol de Colaborador o Propietario.
Nota:
Para crear una asignación de roles en el área de trabajo o el grupo de recursos, debe ser propietario o administrador de acceso de usuario en el ámbito de la asignación de roles. Si no tiene permisos para crear la entidad de servicio en su suscripción, deberá solicitar permiso al propietario o al administrador de la suscripción de Azure.
Si solo tiene permisos en el nivel de grupo de recursos o de área de trabajo, puede crear la entidad de servicio con el rol Colaborador mediante:
az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<SUBSCRIPTION-ID>
Autenticación como la entidad de servicio
Opción 1: Usar variables de entorno. Las credenciales predeterminadas usadas en la creación del objeto Workspace
son DefaultAzureCredential, que intentará varios tipos de autenticación.
El primero es EnvironmentCredential y, con él, se pasan las credenciales de la entidad de servicio mediante las siguientes variables de entorno:
- AZURE_TENANT_ID: identificador del inquilino de la entidad de servicio. También se denomina identificador de su "directorio".
- AZURE_CLIENT_ID: identificador de cliente de la entidad de servicio.
- AZURE_CLIENT_SECRET: uno de los secretos de cliente de la entidad de servicio.
Opción 2: Usar ClientSecretCredential. Pase ClientSecretCredential durante la creación de instancias del objeto Workspace
o establezca la propiedad credentials
.
from azure.identity import ClientSecretCredential
tenant_id = os.environ["AZURE_TENANT_ID"]
client_id = os.environ["AZURE_CLIENT_ID"]
client_secret = os.environ["AZURE_CLIENT_SECRET"]
credential = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
workspace.credentials = credential
Nota:
El método workspace.login()
está en desuso y ya no es necesario. La primera vez que se llama al servicio, se intenta realizar una autenticación con las credenciales pasadas al constructor Workspace
o a su propiedad credentials
. Si no se han pasado credenciales, se intentan varios métodos de autenticación con DefaultAzureCredential.