For the complete documentation index, see llms.txt. This page is also available as Markdown.

Sincronización programada de propietarios de Shared Channel

Asegura que los miembros de un Security Group sean propietarios de Teams asignados y de sus Shared Channels.

Descripción

Los Shared Channel de Teams no heredan la propiedad de su equipo principal. Este runbook programado cierra esa brecha: para cada equipo nombrado en una asignación, garantiza que los miembros de un grupo de seguridad asignado sean propietarios del equipo y de cada Shared Channel que el equipo aloja. La asignación de nombre de equipo a grupo propietario se mantiene de forma centralizada como una configuración de la organización de RealmJoin. El runbook solo agrega: los propietarios y miembros existentes nunca se eliminan, por lo que los Shared Channel recién creados se detectan simplemente en la siguiente ejecución. Opcionalmente puede enviar un informe por correo electrónico y/o cargar los archivos del informe como un vínculo de descarga. El parámetro ReportFileFormat controla qué formatos de archivo de informe se generan y entregan (solo CSV, CSV y XLSX, o solo XLSX). Cuando los archivos adjuntos CSV superan el límite de tamaño del correo y se selecciona "CSV & XLSX", el correo recurre solo al libro de Excel. Consulte la documentación adjunta para conocer las reglas de asignación y la configuración.

Cómo funciona

En cada ejecución, el runbook:

  1. Lee la asignación de nombre de equipo a grupo propietario de la configuración de la organización SharedChannelOwners.Mapping.

  2. Para cada entrada, busca el equipo por su nombre para mostrar exacto.

  3. Expande el grupo propietario de esa entrada a sus miembros transitivos usuario miembros (se omiten los invitados; no pueden pertenecer a un Shared Channel).

  4. Garantiza que esos usuarios sean propietarios del equipo y de cada alojado Shared Channel alojado del equipo.

El runbook es solo agrega: nunca rebaja ni elimina a los propietarios o miembros existentes. Por lo tanto, los Shared Channel recién creados se toman automáticamente en la siguiente ejecución programada, sin alterar nada de lo que ya está en su lugar.

Configuración de la asignación

La asignación reside de forma centralizada en la configuración de la organización de RealmJoin (Runbook Customization → ConfiguraciónSharedChannelOwners.Mapping) por lo que se mantiene una sola vez y se comparte con cada programación. Es una lista de { TeamName, OwnerGroupId } objetos, donde TeamName es el nombre exacto para mostrar del equipo (consulte la Notas para ver un ejemplo listo para usar). El parámetro oculto TeamOwnerGroupMapping se inyecta a partir de esta configuración; el runbook lo acepta ya sea como un arreglo estructurado (forma recomendada de subconfiguración) o como una cadena JSON y normaliza ambos formatos.

Coincidencia de equipos

Cada entrada de la asignación apunta a un equipo nombrado explícitamente:

  • Un equipo se identifica por su nombre para mostrar exacto (sin distinguir mayúsculas y minúsculas, en consonancia con Microsoft Graph; los espacios en blanco alrededor del nombre configurado se ignoran). Solo se procesa ese equipo; no hay comportamiento de prefijo ni comodín, por lo que nombrar una entrada EXT Service A nunca afecta a EXT Service A Backup ni a algo similar.

  • Los nombres para mostrar no están garantizados como únicos en Entra ID. Si varios equipos comparten el nombre configurado, el grupo propietario se aplica a todos ellos. Si ningún equipo coincide, la entrada se informa como no encontrada y se omite.

Selección de equipos

Para cada TeamName configurado, el runbook ejecuta una consulta de Graph displayName eq '...' y conserva solo los grupos de Microsoft 365 aprovisionados como equipo.

Qué se cambia

  • Equipo (opcional, IncludeTeamOwners, activado de forma predeterminada): los usuarios del grupo propietario se agregan como propietarios y miembros del grupo M365 principal. La pertenencia al equipo también es el requisito técnico previo para convertirse en propietario de un canal compartido, por lo que este paso habilita el paso del canal.

  • Shared Channel: para cada Shared Channel alojado (membershipType eq 'shared'), se garantiza que cada usuario del grupo propietario sea un propietario - se agrega directamente si falta, o se promociona si ya es miembro. Si se rechaza una adición directa como propietario (p. ej., por retraso en la replicación de la membresía), el runbook recurre a agregar primero al usuario como miembro y luego promocionarlo.

Ejecución en seco

Establezca WhatIfMode para registrar qué cambiaría sin escribir nada. En este modo, el runbook muestra por adelantado los equipos que procesaría (con su grupo propietario) y cualquier nombre de equipo configurado que no se haya encontrado.

Informes (opcional, ambos desactivados de forma predeterminada)

  • SendEmailReport envía un correo con la marca de RealmJoin (a través de Send-RjReportEmail) con las estadísticas de la ejecución y dos archivos adjuntos CSV: un resumen por equipo y una lista detallada por cambio. El remitente se toma de la RJReport.EmailSender configuración.

  • CreateDownloadLink carga los mismos CSV en una Storage Account y devuelve vínculos de descarga SAS con tiempo limitado (también incrustados en el correo cuando ambas opciones están habilitadas). La Storage Account de destino se toma de la RJReport.StorageAccount.* configuraciones.

La carga en el almacenamiento se autentica con la identidad administrada de la cuenta de Automation; esa identidad necesita el rol RBAC de Storage Blob Data Contributor en la Storage Account de destino (esta es una asignación de Azure RBAC, no un permiso de aplicación de Microsoft Graph).

Programación

Diseñado para ejecutarse sin supervisión según una programación. Como la configuración está centralizada en la configuración de la organización y el runbook es de solo adición e idempotente, una sola programación recurrente mantiene sincronizados todos los equipos asignados y sus Shared Channel a medida que las personas y los canales van y vienen.

Ubicación

Organización → General → Sincronizar propietarios de Shared Channel (Programado)

Nombre completo del runbook

rjgit-org_general_sync-shared-channel-owners_scheduled

Permisos

Permisos de aplicación

  • Tipo: Microsoft Graph

    • Group.ReadWrite.All

    • GroupMember.ReadWrite.All

    • Channel.ReadBasic.All

    • ChannelMember.ReadWrite.All

    • Mail.Send

Parámetros

TeamOwnerGroupMapping

Asignación de un nombre exacto para mostrar del equipo a un id de objeto de grupo de seguridad propietario, por ejemplo [{ "TeamName": "EXT Service A", "OwnerGroupId": "00000000-0000-0000-0000-000000000000" }]. Parámetro oculto, vinculado a la configuración de la organización "SharedChannelOwners.Mapping". El portal de RealmJoin inyecta ese valor; el runbook lo acepta ya sea como el objeto/arreglo deserializado (subconfiguraciones estructuradas) o como una cadena JSON y normaliza ambos.

Propiedad
Valor

Obligatorio

false

Valor predeterminado

[]

Tipo

Objeto

IncludeTeamOwners

Cuando está habilitado (predeterminado), también se garantiza que los miembros del grupo propietario sean propietarios y miembros del propio equipo principal (propietarios/miembros del grupo M365). La pertenencia al equipo también es el requisito previo para la propiedad de canales.

Propiedad
Valor

Obligatorio

false

Valor predeterminado

True

Tipo

Booleano

WhatIfMode

Cuando está habilitado, el runbook solo registra los cambios que haría sin escribir nada.

Propiedad
Valor

Obligatorio

false

Valor predeterminado

False

Tipo

Booleano

SendEmailReport

Cuando está habilitado, después de la ejecución se envía un informe por correo con la marca de RealmJoin mediante Send-RjReportEmail. El cuerpo contiene estadísticas de la ejecución; los archivos del informe (resumen por equipo y detalle por cambio) se adjuntan en el/los formato(s) de archivo de informe seleccionado(s).

Propiedad
Valor

Obligatorio

false

Valor predeterminado

False

Tipo

Booleano

EmailTo

Direcciones de correo electrónico de los destinatarios del informe (separadas por comas). Solo se usa cuando SendEmailReport está habilitado.

Propiedad
Valor

Obligatorio

false

Valor predeterminado

Tipo

Cadena

EmailFrom

Buzón remitente del informe. Vinculado a la configuración de la organización "RJReport.EmailSender".

Propiedad
Valor

Obligatorio

false

Valor predeterminado

Tipo

Cadena

ReportFileFormat

Controla qué formatos de archivo del informe se generan y entregan: "solo CSV", "CSV y XLSX" (predeterminado) o "solo XLSX".

Propiedad
Valor

Obligatorio

false

Valor predeterminado

CSV & XLSX

Tipo

Cadena

Cuando está habilitado, el/los archivo(s) del informe se cargan en una Storage Account y se devuelven vínculos de descarga con tiempo limitado (e incluidos en el informe por correo si eso también está habilitado). Desactivado de forma predeterminada.

Propiedad
Valor

Obligatorio

false

Valor predeterminado

False

Tipo

Booleano

ContainerName

Contenedor de almacenamiento utilizado para la carga. Configurado por runbook (no como una configuración global de RJReport).

Propiedad
Valor

Obligatorio

false

Valor predeterminado

shared-channel-owners

Tipo

Cadena

ResourceGroupName

Grupo de recursos que contiene la Storage Account. Vinculado a "RJReport.StorageAccount.ResourceGroup".

Propiedad
Valor

Obligatorio

false

Valor predeterminado

Tipo

Cadena

StorageAccountName

Storage Account usada para la carga. Vinculada a "RJReport.StorageAccount.StorageAccountName".

Propiedad
Valor

Obligatorio

false

Valor predeterminado

Tipo

Cadena

LinkExpiryDays

Días hasta que el vínculo de descarga generado expire. Vinculado a "RJReport.StorageAccount.LinkExpiryDays".

Propiedad
Valor

Obligatorio

false

Valor predeterminado

6

Tipo

Int32

Última actualización

¿Te fue útil?