Los diez mejores consejos de PowerShell para la administración de Microsoft 365: segunda parte

En la primera parte de esta serie, cubrimos algunos consejos generales de PowerShell. En este artículo, nos enfocamos en cómo usar PowerShell para administrar Microsoft 365. Además, consideramos cómo usar los servicios en la nube para administrar el código de PowerShell, las pruebas, los controles de seguridad y más. El propósito de este artículo es ayudar a aquellos que escriben scripts de PowerShell a ver el panorama general, más allá de la codificación y a administrar el uso futuro de su código.

Contraseñas, secretos y certificados

Microsoft está realizando cambios constantes en su mecanismo de autenticación para pasar de la autenticación básica insegura (Exchange Online) a la autenticación moderna (OAuth 2.0). Los administradores deben cambiar a conexiones de PowerShell más seguras para los scripts, como usar certificados o usar el módulo secreto de PowerShell para el almacenamiento local de credenciales, o usar las credenciales de Azure Automation, que se almacenan en un Azure Key Vault administrado por el sistema. Asegúrese de usar la autenticación basada en certificados o las credenciales de Azure Automation, ya que son más seguras que las contraseñas almacenadas localmente o las contraseñas de texto no cifrado almacenadas en un archivo de script.

El uso de cuentas de la tienda de Azure Automation requiere la instalación del módulo Az.Automation, la conexión a Azure y cuatro líneas de código:

install-module az.automation  Connect-AzAccount  €AutomationUserName="damian@powershellgeek.com"  €Password = ConvertTo-SecureString (Read-host 'Enter password to encrypt') -asplaintext -Force  €Credentials = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList €AutomationUserName, €Password  New-AzureAutomationCredential -AutomationAccountName "AutomationAccount" -Name "AutomationCredentials" -Value €Credentials

Para la autenticación basada en certificados, la mayoría, pero no todos (SharePoint Online), los módulos Microsoft 365 PowerShell tienen una opción para usar certificados para la autenticación, Exchange Online Management v3, Security and Compliance Center, Microsoft Teams, el módulo PNP de SharePoint y Microsoft Graph PowerShell SDK. La autenticación basada en certificados no es difícil de configurar, pero requiere una aplicación de Azure registrada, los permisos de API apropiados y un certificado local al que hace referencia el script y se adjunta a la aplicación de Azure. Una vez que el certificado está en su lugar, se puede conectar a una carga de trabajo válida.

Sugerencia: si un script se ejecuta en un servidor local, garantice su seguridad bloqueando quién tiene acceso al archivo con permisos de archivo, y esto debe hacerse independientemente del método de autenticación.

Enlace de recursos del módulo de secretos.

Recursos de autenticación basados ​​en certificados para Exchange, Microsoft Graph y SharePoint PNP.

Vínculo de recursos de administración de credenciales de Azure Automation.

Automatización de Azure

Comience con esto: deje de usar jump boxes locales o estaciones de trabajo de administración. Mueva sus cargas de trabajo a la nube, ya que Azure Automation de Microsoft proporciona una base sólida escalable y verificada y es más seguro que una estación de trabajo. Azure Automation, con los recursos adecuados, puede tener una curva de aprendizaje muy pequeña y tiene el potencial de ser una solución de bajo costo, según el uso. Con acceso a muchos módulos predeterminados de PowerShell, módulos de Galería o sus propios módulos importados a Azure, podemos automatizar potencialmente numerosas tareas de administración.

Azure Runbook: un servicio dentro de Azure que permite a un administrador crear tareas de automatización utilizando lenguajes como PowerShell.

Para tener éxito con Azure Automation, asegúrese de probar sus scripts de automatización con PowerShell regular antes de mover la tarea a Azure Automation, ya que las herramientas de PowerShell, como Visual Studio Code, brindan más depuración y comentarios. Una vez que la secuencia de comandos esté lista para la prueba de automatización, asegúrese de ejecutar la secuencia de comandos haciendo clic en Iniciar para el Runbook y verifique el panel cargado en busca de errores, advertencias y registros (cada panel podría contener información de solución de problemas) para ver cómo funcionó la secuencia de comandos. Luego, una vez que el script esté listo y funcionando, cree y vincule un cronograma que se ajuste a la tarea y controle los registros presentes en el Runbook para la automatización.

Con Automatización, administramos datos en Graph, Exchange Online, SharePoint y Teams para realizar tareas como informes, notificaciones y realizar cambios en los datos dentro de cada una de estas cargas de trabajo. Aquí es donde las pruebas resultan útiles, ya que el acceso a estas cargas de trabajo, aunque controlado por Azure RBAC, puede causar estragos si no se implementa correctamente.

Azure Automation también admite la autenticación basada en certificados.

Seguimiento

GitHub: su repositorio de scripts

El control de cambios para el código es un aspecto importante del mantenimiento de scripts de nivel de producción, y utilizar una herramienta basada en web como GitHub puede facilitar esto en términos de colaboración y prueba de cambios. Con GitHub, puede crear proyectos que pueden corresponder directamente con un proyecto de TI interno, un grupo o un proyecto de trabajo desde casa. Podemos crear páginas de destino, páginas de ayuda y más para ayudar en el proceso de colaboración.

¿Por qué usar GitHub?

  • Control de cambios: decida qué características y cambios de código se publican a través de solicitudes de extracción/empuje.
  • Ramificación: permita divisiones de código para comprobaciones de estabilidad o nuevas pruebas de versiones.
  • Control de acceso: Aproveche los controles de acceso y proporcione/bloquee el acceso a proyectos y códigos según la necesidad del proyecto.
  • Informes: cree informes sobre los cambios realizados, quién contribuyó y más para cada proyecto.

Ventajas de usar GitHub

  • La mayoría de los accesos son gratuitos.
  • Los repositorios pueden ser privados, públicos y compartidos (colaboración)
  • La aplicación de escritorio y el acceso web brindan una buena experiencia de usuario
  • Existe integración para el editor de Visual Code Studio

Ejemplos de buenos repositorios de scripts públicos:

https://github.com/12Knocksinna/Office365itpros: excelente conjunto de código de PowerShell para consultar y utilizar.

https://github.com/microsoft: repositorio oficial de Microsoft y fuente de sus propios ejemplos de código de PowerShell.

https://github.com/O365scripts: un recurso de terceros para scripts de PowerShell para administrar Office 365.

Consideraciones / Recomendaciones

Un aspecto clave de GitHub es determinar qué plan necesita una organización o individuo. Si hay una sola persona trabajando en el proyecto y no se necesita una colaboración especial, entonces la versión gratuita de GitHub es la solución adecuada. Sin embargo, si una organización tiene un equipo que debe colaborar en uno o más proyectos, entonces se debe elegir la edición Team o Enterprise. El diferenciador clave es que Enterprise tiene funciones avanzadas como System for Cross-domain Identity Management (SCIM) para controlar el acceso a una organización de GitHub, API para registro, más almacenamiento, más tiempo de cómputo para la ejecución, así como funciones de cumplimiento avanzadas como SOC1, SOC2 y FedRAMP (ATO).

Inquilino de control de calidad de Microsoft 365

Para los administradores que administran un arrendatario de Microsoft 365, adquirir un arrendatario de desarrollo en paralelo es una buena práctica, y Microsoft proporciona un enlace de registro gratuito como se describe en este artículo. ¿Qué significa esto? Significa crear un arrendatario duplicado con las mismas licencias, características, etc., para imitar lo que se usa en producción. Algunos factores a considerar con la creación del arrendatario de prueba incluyen:

  • Presupuestación y adquisiciones: ¿Qué presupuesto y de quién sería la responsabilidad de administrarlo?
  • Determinar qué funciones habilitar: ¿Se deben probar todas las funciones de producción en control de calidad?
  • Fuente de datos: ¿Qué poblará este entorno? ¿Será una copia individual de la producción, una versión reducida o datos anónimos solo para realizar pruebas?
  • Gestión de cambios: ¿Cómo se mantendrá el orden cuando se realicen cambios? ¿Cómo se pueden revertir los cambios una vez realizados?
  • Dominios: ¿Qué dominios vanidosos se utilizarán para las pruebas?

Entonces, ¿qué tiene que ver este tipo de arrendatario y su configuración con PowerShell? En pocas palabras, este tipo de arrendatario permite a los administradores probar la gestión de PowerShell frente a cargas de trabajo en su arrendatario (Exchange, SharePoint, Teams, Graph y más), así como scripts de automatización (se requiere suscripción a Azure), almacenamiento de credenciales y otras funciones en una zona de pruebas. entorno que no afecta a sus usuarios de producción. Esto puede ser crucial dependiendo del trabajo que se esté realizando. Por ejemplo, si una secuencia de comandos automatiza las tareas de concesión de licencias, asignación de grupos o derechos para un proceso de incorporación/desincorporación, la ejecución de PowerShell puede ser más indulgente y causar menos dolores de cabeza. Por lo tanto, tener un arrendatario de control de calidad, incluso desde el punto de vista de PowerShell, es una buena idea. Con este inquilino, los administradores pueden perfeccionar sus habilidades de PowerShell, ajustar scripts y ofrecer soluciones que no causen interrupciones en la producción de su organización.

Control del acceso de PowerShell al inquilino

La seguridad y el acceso controlado son aspectos importantes del uso de herramientas de secuencias de comandos y automatización en cualquier entorno, y esto también es cierto para Microsoft 365. Microsoft proporciona protecciones y controles de seguridad integrados con Azure AD Roles, que restringe lo que los usuarios pueden hacer en función de los roles y grupos de roles a los que están asignados. En pocas palabras, se debe permitir PowerShell para los administradores con el acceso adecuado, y se debe bloquear a los usuarios que no son administradores de PowerShell:

Exchange Online: el acceso a PowerShell está habilitado de forma predeterminada, aunque restringido a su propio contexto. Para deshabilitar este acceso, use esto como ejemplo:

Set-User -Identity damian@powershellgeek.com -RemotePowerShellEnabled €false

No se requiere ninguna configuración para el módulo de PowerShell de SharePoint Online, ya que los usuarios que no son administradores están bloqueados de forma predeterminada, como se ve a continuación en la Figura 1 a continuación.

Figura 1: el usuario final intenta acceder a SharePoint a través de PowerShell, pero falla.

Equipos: no se puede bloquear: el usuario tiene acceso a los permisos que le han otorgado un administrador o Microsoft (predeterminado).

Microsoft Graph: dentro de una política de acceso condicional, podemos seleccionar la aplicación Microsoft Graph PowerShell y configurar los controles de acceso para bloquear usuarios que no sean administradores (figura 2). Esta política bloqueará el acceso a PowerShell para los usuarios, pero no bloqueará las llamadas a Graph API. Cualquier política condicional que se cree para este propósito también debe excluir una cuenta de rotura de cristal para evitar el bloqueo del recurso bloqueado.

Figura 2: aplicación en la nube disponible en políticas de acceso condicional.

AzureAD/MS Online: Desactivación programada para junio de 2023.

Centro de seguridad y cumplimiento: restringido a través de RBAC. Los usuarios habituales tienen acceso a los cmdlets de PowerShell de mensajes de cuarentena, pero nada más.

Vale la pena señalar que los usuarios habituales tienen acceso restringido a PowerShell debido al modelo de seguridad de roles y acceso otorgado de Microsoft.

Mudarse a la nube

Al usar PowerShell para administrar recursos basados ​​en la nube, como Microsoft 365, los administradores deben aprovechar estas herramientas avanzadas que también están basadas en la nube, ya que brindan escalabilidad, estabilidad y seguridad que no se encuentran en los sistemas locales. Si está atascado usando sus recursos locales para administrar una infraestructura en la nube, es un momento oportuno para cambiar eso con la disponibilidad de herramientas y funciones que ahora están disponibles. Con GitHub, la autenticación basada en certificados y la automatización, puede aumentar la seguridad y la facilidad de uso de PowerShell para un administrador.