Wiki source code of SPN Shared Mailbox auslesen

Version 2.1 by Dimitri Rupp on 2026/07/08 12:54

Show last authors
1 {{box cssClass="floatinginfobox" title="**Auf dieser Seite**"}}
2 {{toc/}}
3 {{/box}}
4
5 = 📬 SPN Shared Mailbox auslesen =
6
7 {{info}}
8 **Zweck:** App-basierter, auf ein einzelnes Postfach eingeschrĂ€nkter Zugriff auf eine Shared Mailbox ĂŒber Microsoft Graph (Service Principal).
9 **Beispiel:** Postfach ##1und1.plantmit@spl-tele.com## fĂŒr ein Fabric-Notebook.
10 {{/info}}
11
12 == Einleitung ==
13
14 Es ist möglich, Zugriff auf ausgewĂ€hlte Shared Mailboxen ĂŒber einen SPN (Service Principal) zu gewĂ€hren. In folgender Anleitung wurde fĂŒr das 1und1-Postfach ein solcher Zugriff inkl. App-Registrierung eingerichtet. Werden zusĂ€tzliche PostfĂ€cher benötigt, kann man diese einfach als Mitglied in der Security-Gruppe ergĂ€nzen — eine eigene App-Registrierung ist nicht nötig.
15
16 == Mail-enabled Security-Gruppe ==
17
18 Die Gruppe findet man im **Admin Center** unter **Active teams & groups** und heißt **MailReport_MNDE**.
19
20 [[image:1781697144984-589.png||height="403" width="399"]]
21
22 == Einrichtung Service Principal (SPN) ==
23
24 **Ziel:** Automatisierter, app-basierter Zugriff (Fabric-Notebook) auf das Shared Mailbox ##1und1.plantmit@spl-tele.com##. Der Zugriff ist technisch auf **genau dieses Postfach eingeschrÀnkt** (keine globalen Mailbox-Rechte).
25
26 === 🔐 Sicherheitsprinzip ===
27
28 * Zugriff ĂŒber **Azure App Registration (Service Principal)**
29 * Berechtigung: **Microsoft Graph – Mail.Read (Application)**
30 * EinschrĂ€nkung ĂŒber **Exchange Application Access Policy** auf eine Scope-Gruppe
31 * Kein Benutzerzugriff erforderlich, kein Zugriff auf andere PostfÀcher möglich
32
33 === ✅ Voraussetzungen ===
34
35 **Berechtigungen:**
36
37 * Entra ID / Azure AD: Application Administrator oder Cloud Application Administrator
38 * Exchange Online: Exchange Administrator
39
40 **Technisch:** Exchange Online PowerShell Modul installiert:
41 {{code language="powershell"}}
42 Install-Module ExchangeOnlineManagement
43 {{/code}}
44
45 === 1ïžâƒŁ Mail-enabled Security Group erstellen (Scope-Gruppe) ===
46
47 Diese Gruppe definiert, auf welche PostfÀcher die App zugreifen darf.
48
49 1. Entra Admin Center oder M365 Admin Center → **Groups**
50 1. Neue Gruppe erstellen — Typ: **Mail-enabled Security**, Name: ##SG-MNDE-PlantMIT-MailboxScope##
51 1. Als Mitglied hinzufĂŒgen: ##1und1.plantmit@spl-tele.com##
52
53 {{warning}}
54 Die Gruppe muss **mail-enabled** sein.
55 {{/warning}}
56
57 === 2ïžâƒŁ App Registration erstellen ===
58
59 1. Entra Admin Center → **App registrations** → **New registration**
60 1. Name: ##Fabric-MNDE-MailAccess##
61 1. Supported account types: **Single Tenant**; Redirect URI: leer lassen
62
63 Nach der Erstellung dokumentieren: **Application (Client) ID** und **Directory (Tenant) ID**.
64
65 === 3ïžâƒŁ Client Secret erstellen ===
66
67 1. App → **Certificates & Secrets** → **New Client Secret**
68 1. Ablauf z. B. 6–12 Monate
69 1. Secret Value sofort sichern (wird nur einmal angezeigt)
70
71 Ablaufdatum im IT-Kalender hinterlegen.
72
73 === 4ïžâƒŁ API Permissions setzen ===
74
75 1. App → **API Permissions** → **Add Permission** → **Microsoft Graph** → **Application Permissions**
76 1. HinzufĂŒgen: **Mail.Read**
77 1. **Admin Consent** erteilen
78
79 {{warning}}
80 Nur minimal notwendige Rechte vergeben (kein ##Mail.ReadWrite##, falls nicht nötig).
81 {{/warning}}
82
83 === 5ïžâƒŁ Exchange Application Access Policy setzen (EinschrĂ€nkung) ===
84
85 Verbindung zu Exchange Online:
86 {{code language="powershell"}}
87 Connect-ExchangeOnline
88 {{/code}}
89
90 Policy erstellen:
91 {{code language="powershell"}}
92 New-ApplicationAccessPolicy `
93 -AppId "CLIENT-ID-HIER" `
94 -PolicyScopeGroupId "SG-MNDE-PlantMIT-MailboxScope@firma.tld" `
95 -AccessRight RestrictAccess `
96 -Description "Restrict Fabric App to 1und1.plantmit Shared Mailbox"
97 {{/code}}
98
99 === 6ïžâƒŁ Funktionstest ===
100
101 Zugriff auf das erlaubte Postfach testen (erwartet: **Granted**):
102 {{code language="powershell"}}
103 Test-ApplicationAccessPolicy `
104 -AppId "CLIENT-ID-HIER" `
105 -Identity "1und1.plantmit@spl-tele.com"
106 {{/code}}
107
108 Gegenprobe mit anderem Postfach (erwartet: **Denied**):
109 {{code language="powershell"}}
110 Test-ApplicationAccessPolicy `
111 -AppId "CLIENT-ID-HIER" `
112 -Identity "anderer.user@firma.tld"
113 {{/code}}
114
115 == 📩 Übergabe an externen Consultant ==
116
117 Bereitgestellt wurden: Tenant ID, Client ID, Client Secret sowie das Zielpostfach ##1und1.plantmit@spl-tele.com##.
118
119 {{warning}}
120 Es wurden **keine Benutzerrechte im Tenant** vergeben. Der Zugriff erfolgt ausschließlich ĂŒber die App-IdentitĂ€t.
121 {{/warning}}
122
123 == 🔄 Betrieb & Wartung ==
124
125 **Secret Rotation:** Ablaufdatum dokumentieren, vor Ablauf neues Secret erzeugen, altes entfernen.
126
127 **Erweiterung auf weitere Shared Mailboxen:** Postfach einfach zur Scope-Gruppe hinzufĂŒgen — keine Änderung an den App-Permissions nötig.
128
129 == 🛡 Sicherheitsbewertung ==
130
131 * Kein globaler Mailbox-Zugriff
132 * Kein Delegated Access
133 * Kein Benutzer-Login erforderlich
134 * Zugriff ausschließlich ĂŒber die Microsoft Graph API
135 * EinschrĂ€nkung ĂŒber Application Access Policy
136
137 Das Setup entspricht der Microsoft Best Practice fĂŒr App-only Mailbox-Zugriff.
138
139 == Schneller Funktionstest ==
140
141 Folgenden PowerShell-Befehl absetzen (App-ID aus der App-Registrierung im Entra-Portal, Identity = benötigtes Postfach):
142 {{code language="powershell"}}
143 Test-ApplicationAccessPolicy -Identity it-support@spl-tele.com -AppId c251bcb8-c221-459d-a4f3-cbb5c1db55ce
144 {{/code}}
145
146 Steht bei ##AccessCheckResult## „GewĂ€hrt", funktioniert der Zugriff.