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

Sincronização agendada de proprietários de Shared Channel

Garantir que os membros de um Security Group são proprietários dos Teams mapeados e dos respetivos Shared Channels.

Este é um runbook agendado. Ele foi projetado para ser executado em uma agenda recorrente, em vez de ser acionado para um único objeto. Veja Agendamento para obter detalhes sobre como configurar agendas de runbooks.

Descrição

Os canais partilhados do Teams não herdam a titularidade da respetiva equipa-mãe. Este runbook agendado colmata essa lacuna: para cada equipa nomeada num mapeamento, garante que os membros de um grupo de segurança mapeado sejam proprietários da equipa e de cada canal partilhado alojado pela equipa. O mapeamento do nome da equipa para o grupo de proprietários é mantido centralmente como uma definição da organização do RealmJoin. O runbook é apenas de adição - os proprietários e membros existentes nunca são removidos - pelo que os canais partilhados recém-criados são simplesmente detetados na execução seguinte. Opcionalmente, pode enviar um relatório por e-mail e/ou carregar os ficheiros do relatório como um link de download. O parâmetro ReportFileFormat controla que formatos de ficheiro de relatório são gerados e entregues (apenas CSV, CSV e XLSX, ou apenas XLSX). Quando os anexos CSV excedem o limite de tamanho do e-mail e é selecionado "CSV & XLSX", o e-mail recua para enviar apenas a pasta de trabalho do Excel. Consulte a documentação de acompanhamento para as regras de mapeamento e configuração.

Como funciona

Em cada execução, o runbook:

  1. Lê o mapeamento do nome da equipa para o grupo de proprietários a partir da definição da organização SharedChannelOwners.Mapping.

  2. Para cada entrada, procura a equipa pelo seu nome de exibição exato.

  3. Expande o grupo de proprietários dessa entrada para os respetivos membros transitivos de utilizador utilizador membros (os convidados são ignorados — não podem pertencer a um canal partilhado).

  4. Garante que esses utilizadores são proprietários da equipa e de todos os alojado canais partilhados da equipa.

O runbook é apenas de adição: nunca rebaixa nem remove proprietários ou membros existentes. Assim, os canais partilhados recém-criados são detetados automaticamente na próxima execução agendada, sem perturbar o que já está em vigor.

Configuração do mapeamento

O mapeamento é mantido centralmente nas definições da organização do RealmJoin (Personalização do runbook → DefiniçõesSharedChannelOwners.Mapping) para que seja mantido uma única vez e partilhado por todos os agendamentos. É uma lista de { TeamName, OwnerGroupId } objetos, em que TeamName é o nome de exibição exato da equipa (consulte a Notas secção para um exemplo pronto a usar). O parâmetro oculto TeamOwnerGroupMapping é injetado a partir desta definição; o runbook aceita-o quer como uma matriz estruturada (formato de subdefinição recomendado) quer como uma cadeia de JSON e normaliza ambos.

Correspondência de equipas

Cada entrada do mapeamento direciona uma equipa explicitamente nomeada:

  • Uma equipa é correspondida pelo seu nome de exibição exato (não diferencia maiúsculas de minúsculas, de forma consistente com Microsoft Graph; os espaços em branco à volta no nome configurado são ignorados). Só essa equipa é processada - não há comportamento de prefixo nem de wildcard, por isso nomear uma entrada EXT Service A nunca afeta EXT Service A Backup ou semelhante.

  • Os nomes de exibição não têm garantia de serem únicos no Entra ID. Se várias equipas partilharem o nome configurado, o grupo de proprietários é aplicado a todos os todas elas. Se nenhuma equipa corresponder, a entrada é reportada como não encontrada e ignorada.

Seleção de equipas

Para cada TeamName configurado, o runbook executa uma consulta Graph displayName eq '...' e mantém apenas os grupos do Microsoft 365 que estão aprovisionados como equipa.

O que é alterado

  • Equipa (opcional, IncludeTeamOwners, ativado por predefinição): os utilizadores do grupo de proprietários são adicionados como proprietários e membros do grupo M365 pai. A pertença à equipa é também o pré-requisito técnico para se tornar proprietário de um canal partilhado, pelo que este passo viabiliza o passo dos canais.

  • Canais partilhados: para cada canal partilhado alojado (membershipType eq 'shared'), cada utilizador do grupo de proprietários é garantido como canal proprietário - adicionado diretamente se estiver em falta, ou promovido se já for membro. Se uma adição direta como proprietário for rejeitada (por ex., atraso de replicação da pertença), o runbook recua para adicionar primeiro o utilizador como membro e só depois promovê-lo.

Execução de simulação

Defina WhatIfMode para registar o que mudaria sem escrever nada. Neste modo, o runbook mostra antecipadamente as equipas que processaria (com o respetivo grupo de proprietários) e quaisquer nomes de equipa configurados que não foram encontrados.

Relatórios (opcional, ambos desativados por predefinição)

  • SendEmailReport envia um e-mail com a marca RealmJoin (através de Send-RjReportEmail) com estatísticas da execução e dois anexos CSV: um resumo por equipa e uma lista detalhada por alteração. O remetente é obtido da RJReport.EmailSender definição.

  • CreateDownloadLink carrega os mesmos CSVs para uma Storage Account e devolve links de download SAS com validade limitada (também incorporados no e-mail quando ambas as opções estão ativadas). A Storage Account de destino é obtida das RJReport.StorageAccount.* definições.

O carregamento para a Storage Account autentica-se com a identidade gerida da conta de Automation; essa identidade precisa da Storage Blob Data Contributor função RBAC na Storage Account de destino (esta é uma atribuição RBAC do Azure, não uma permissão de aplicação do Graph).

Agendamento

Concebido para ser executado sem supervisão segundo um agendamento. Como a configuração é centralizada nas definições da organização e o runbook é apenas de adição e idempotente, um único agendamento recorrente mantém todas as equipas mapeadas e os respetivos canais partilhados sincronizados à medida que pessoas e canais entram e saem.

Localização

Organização → Geral → Sincronizar Proprietários de Shared Channel (Agendado)

Nome completo do Runbook

rjgit-org_general_sync-shared-channel-owners_scheduled

Detalhes

Propriedade
Valor

Versão

1.1.0

Módulos necessários

RealmJoin.RunbookHelper (>= 0.8.7)\nMicrosoft.Graph.Authentication (>= 2.39.0)\nAz.Accounts (>= 5.5.0)

Agendável

sim

Notas

Configure o mapeamento uma única vez, centralmente (Personalização do runbook -> Definições) como uma subdefinição estruturada sob "SharedChannelOwners.Mapping". Cada entrada nomeia uma equipa pelo respetivo nome de exibição exato. O parâmetro oculto TeamOwnerGroupMapping é injetado a partir daí em tempo de execução. { "Settings": { "SharedChannelOwners": { "Mapping": [ { "TeamName": "EXT Service A", "OwnerGroupId": "11111111-1111-1111-1111-111111111111" }, { "TeamName": "EXT Service B", "OwnerGroupId": "22222222-2222-2222-2222-222222222222" } ] } } }

Permissões

Permissões da aplicação

  • Tipo: Microsoft Graph

    • Group.ReadWrite.All

    • GroupMember.ReadWrite.All

    • Channel.ReadBasic.All

    • ChannelMember.ReadWrite.All

    • Mail.Send

Parâmetros

TeamOwnerGroupMapping

Mapeamento de um nome de exibição exato da equipa para o ID de objeto de um grupo de segurança de proprietários, por ex. [{ "TeamName": "EXT Service A", "OwnerGroupId": "00000000-0000-0000-0000-000000000000" }]. Parâmetro oculto, associado à definição da organização "SharedChannelOwners.Mapping". O portal RealmJoin injeta esse valor; o runbook aceita-o quer como o objeto/matriz desserializado (subdefinições estruturadas) quer como uma cadeia de JSON e normaliza ambos.

Propriedade
Valor

Obrigatório

falso

Valor predefinido

[]

Tipo

Objeto

IncludeTeamOwners

Quando ativado (predefinição), os membros do grupo de proprietários também são garantidos como proprietários e membros da própria equipa-mãe (proprietários/membros do grupo M365). A pertença à equipa é também o pré-requisito para a propriedade de canais.

Propriedade
Valor

Obrigatório

falso

Valor predefinido

Verdadeiro

Tipo

Booleano

WhatIfMode

Quando ativado, o runbook apenas regista as alterações que faria, sem escrever nada.

Propriedade
Valor

Obrigatório

falso

Valor predefinido

Falso

Tipo

Booleano

SendEmailReport

Quando ativado, um relatório por e-mail com a marca RealmJoin é enviado via Send-RjReportEmail após a execução. O corpo contém estatísticas da execução; os ficheiros do relatório (resumo por equipa e detalhe por alteração) são anexados no(s) formato(s) de ficheiro de relatório selecionado(s).

Propriedade
Valor

Obrigatório

falso

Valor predefinido

Falso

Tipo

Booleano

E-mail para

Endereço(s) de e-mail do(s) destinatário(s) do relatório (separados por vírgulas). Só é utilizado quando SendEmailReport está ativado.

Propriedade
Valor

Obrigatório

falso

Valor predefinido

Tipo

Cadeia de caracteres

E-mail do remetente

Caixa de correio do remetente para o relatório. Associada à definição da organização "RJReport.EmailSender".

Propriedade
Valor

Obrigatório

falso

Valor predefinido

Tipo

Cadeia de caracteres

ReportFileFormat

Controla quais formatos de ficheiro de relatório são gerados e entregues: "CSV only", "CSV & XLSX" (predefinição) ou "XLSX only".

Propriedade
Valor

Obrigatório

falso

Valor predefinido

CSV & XLSX

Tipo

Cadeia de caracteres

Quando ativado, o(s) ficheiro(s) do relatório são carregados para uma Storage Account e são devolvidos links de download com validade limitada (e incluídos no relatório por e-mail se isso também estiver ativado). Desativado por predefinição.

Propriedade
Valor

Obrigatório

falso

Valor predefinido

Falso

Tipo

Booleano

ContainerName

Contentor de armazenamento utilizado para o carregamento. Configurado por runbook (não uma definição global do RJReport).

Propriedade
Valor

Obrigatório

falso

Valor predefinido

shared-channel-owners

Tipo

Cadeia de caracteres

ResourceGroupName

Grupo de recursos que contém a Storage Account. Associado a "RJReport.StorageAccount.ResourceGroup".

Propriedade
Valor

Obrigatório

falso

Valor predefinido

Tipo

Cadeia de caracteres

StorageAccountName

Storage Account utilizada para o carregamento. Associada a "RJReport.StorageAccount.StorageAccountName".

Propriedade
Valor

Obrigatório

falso

Valor predefinido

Tipo

Cadeia de caracteres

LinkExpiryDays

Dias até o link de download gerado expirar. Associado a "RJReport.StorageAccount.LinkExpiryDays".

Propriedade
Valor

Obrigatório

falso

Valor predefinido

6

Tipo

Int32

Última atualização

Isto foi útil?