Búsqueda de sitios web

Diez consejos principales de PowerShell para la administración de Microsoft 365: segunda parte


En la primera parte de esta serie, cubrimos algunos consejos generalizados de PowerShell. En este artículo, nos centramos 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, las pruebas, los controles de seguridad y más de PowerShell. El propósito de este artículo es ayudar a quienes escriben scripts de PowerShell a ver el panorama más amplio, 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 constantemente 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 el uso de certificados o el módulo secreto de PowerShell para el almacenamiento de credenciales local, o el uso de credenciales de Azure Automation, que se almacenan en un Azure Key Vault administrado por el sistema. Asegúrese de usar autenticación basada en certificados o credenciales de Azure Automation, ya que son más seguras que las contraseñas almacenadas localmente o las contraseñas de texto sin cifrar almacenadas en un archivo de script.

El uso de cuentas de tienda de Azure Automation requiere la instalación del módulo Az.Automation, 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 de Microsoft 365 PowerShell tienen una opción para usar certificados para la autenticación, Exchange Online Management v3, Centro de seguridad y cumplimiento, 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 adecuados 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é implementado, podrá conectarse a una carga de trabajo válida.

Consejo: 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 al recurso del Módulo Secretos.

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

Enlace de recurso administración de credenciales de Azure Automation.

Automatización de Azure

Comience con esto: deje de usar jump boxes o estaciones de trabajo de administración locales. 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 segura 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 administrativas.

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 normal 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 el script esté listo para las pruebas de automatización, asegúrese de ejecutarlo 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 se desempeñó el script. Luego, una vez que el script esté listo y funcionando, cree y vincule un cronograma que se ajuste a la tarea y supervise los registros presentes en el Runbook para la automatización.

Con Automation, 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, si bien está controlado por Azure RBAC, puede causar estragos si no se implementa correctamente.

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

Hacer un seguimiento

  • Automatización de Azure para Exchange Online
  • Uso de Azure Automation para monitorear registros de auditoría unificados
  • Y muchos más…

GitHub: su repositorio de secuencias de comandos

El control de cambios de código es un aspecto importante del mantenimiento de scripts a nivel de producción, y utilizar una herramienta basada en web como GitHub puede facilitar esto en términos de colaboración y pruebas de cambios. Con GitHub, puedes crear proyectos que pueden corresponderse 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é utilizar GitHub?

  • Control de cambios: decida qué funciones y cambios de código se publican A TRAVÉS de solicitudes Pull/Push.
  • Bifurcación: permite divisiones de código para comprobaciones de estabilidad o pruebas de nuevas 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 parte del acceso es gratuito.
  • Los repositorios pueden ser privados, públicos y compartidos (colaboración)
  • La aplicación de escritorio y el acceso web ofrecen una buena experiencia de usuario
  • Existe integración para el editor Visual Code Studio

Ejemplos de buenos repositorios de scripts públicos:

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

https://github.com/microsoft: repositorio oficial de Microsoft y fuente de sus propios ejemplos de código 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 un individuo. Si hay una persona singular trabajando en el proyecto y no se necesita 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 el Sistema de gestión de identidades entre dominios (SCIM) para controlar el acceso a una organización 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).

Control de calidad del inquilino de Microsoft 365

Para los administradores que administran un inquilino de Microsoft 365, adquirir un inquilino de desarrollo en paralelo es una buena práctica y Microsoft proporciona un vínculo de registro gratuito como se describe en este artículo. ¿Qué quiere decir esto? Significa crear un inquilino duplicado con la misma licencia, características, etc., para imitar lo que se utiliza en producción. Algunos factores a considerar al crear el inquilino de prueba incluyen:

  • Presupuesto y adquisiciones: ¿Qué presupuesto y de quién sería la responsabilidad de gestionarlo?
  • Determinar qué funciones habilitar: ¿Es necesario probar todas las funciones de producción en control de calidad?
  • Datos de origen: ¿Qué poblará este entorno? ¿Será una copia individualizada de la producción, una versión reducida o datos anonimizados sólo 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 personalizados se utilizarán para las pruebas?

Entonces, ¿qué tiene que ver este tipo de inquilino y su configuración con PowerShell? En pocas palabras, este tipo de inquilino permite a los administradores probar la administración de PowerShell en cargas de trabajo en su inquilino (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 un entorno aislado. entorno que no afecte a sus usuarios de producción. Esto puede ser crucial dependiendo del trabajo que se esté realizando. Por ejemplo, si un script automatiza tareas de concesión de licencias, asignación de grupos o derechos para un proceso de incorporación o salida, ejecutar PowerShell puede ser más indulgente y causar menos dolores de cabeza. Por lo tanto, tener un inquilino 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 de producción en su organización.

Controlar el acceso de PowerShell al inquilino

La seguridad y el acceso controlado son aspectos importantes del uso de herramientas de automatización y secuencias de comandos en cualquier entorno, y esto también se aplica a Microsoft 365. Microsoft proporciona protecciones y controles de seguridad integrados con Azure AD Roles, que restringe lo que los usuarios pueden hacer según los roles y grupos de roles a los que están asignados. En pocas palabras, PowerShell debería estar permitido para administradores con el acceso adecuado, y los usuarios que no sean administradores deberían ser bloqueados en 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 configuración para el módulo PowerShell de SharePoint Online ya que los no administradores están bloqueados de forma predeterminada, como se ve a continuación en la Figura 1 a continuación.

Equipos: No se puede bloquear: el usuario tiene acceso a aquello para lo que le ha concedido permiso 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 vidrio para evitar el bloqueo del recurso bloqueado.

AzureAD/MS Online: su desuso está previsto 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.

Pasando a la nube

Al utilizar 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á atrapado en el uso de 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 usabilidad de PowerShell para un administrador.

Artículos relacionados