Points clés à retenir (TL;DR)
Synthèse exécutive- Android Enterprise exige une liaison unique entre votre tenant Intune et un compte Managed Google Play (compte d'entreprise gere, sans credential Google personnel).
- Les applications du Play Store ne s'installent pas directement : elles doivent etre approuvees dans Managed Google Play puis synchronisees et assignees depuis Intune.
- On distingue le Play Store (apps publiques), les apps web (raccourcis managed) et les apps privees/LOB (APK publies dans votre canal prive).
- L'automatisation passe par Microsoft Graph (endpoints
deviceAppManagement) avec une app Entra ID a permissions applicatives dediees. - C'est un changement standard a normal selon la portee : liaison = changement a impact tenant, deploiement d'app = changement reversible via suppression d'assignation.

Le probleme qu’on resout
Sur un parc Android gere par Intune (profils Fully Managed, Work Profile ou Dedicated/Kiosk), l’approche intuitive consiste a laisser l’utilisateur chercher l’application dans le Play Store. Cela echoue pour plusieurs raisons concretes :
- Sur un appareil COBO/COPE, le Play Store public est souvent restreint : seules les apps approuvees par l’organisation apparaissent.
- Le deploiement silencieux (sans interaction utilisateur) et la gestion des mises a jour necessitent que l’app soit referencee dans votre catalogue Managed Google Play.
- La configuration d’application (Managed App Config, permissions runtime) n’est possible que pour les apps approuvees via le canal gere.
La solution officielle, et la seule supportee, est de lier Managed Google Play a Intune puis de piloter l’approbation et l’assignation depuis le centre d’administration ou via Graph.
Comment ca marche
Managed Google Play est le canal d’entreprise de Google pour Android Enterprise. La liaison cree un enterprise ID Google rattache a votre tenant Intune. A partir de la :
- Intune agit comme EMM (Enterprise Mobility Management) et pousse les politiques de configuration vers les appareils via le Managed Google Play et l’Android Device Policy.
- Vous approuvez des apps dans l’iframe Managed Google Play integree a Intune ; l’approbation inclut une strategie de gestion des mises a jour des permissions.
- Intune synchronise periodiquement (ou a la demande) les apps approuvees, qui deviennent assignables comme Managed Google Play app.
- L’assignation definit l’intention : Required (installation forcee), Available (optionnel via l’app Play geree), ou Uninstall.
Techniquement, cela mobilise des mecanismes de gestion legitimes : configuration d’application managee et deploiement d’applications sur appareils mobiles (ATT&CK T1398 / Device Administration dans le cadre mobile, ici utilise a des fins defensives/administratives).
Prerequis
- Role Intune Administrator ou Global Administrator dans Entra ID pour la liaison initiale.
- Une licence Intune valide affectee et un compte Google d’entreprise (pas un Gmail personnel ; idealement un compte generique type
androidenterprise@exemple.test). - Pour l’automatisation : une app Entra ID (service principal) avec les permissions applicatives Microsoft Graph
DeviceManagementApps.ReadWrite.AlletDeviceManagementConfiguration.ReadWrite.All(consentement admin accorde). - PowerShell 7.x et le module
Microsoft.Graph(ou appels REST directs). - Appareils enroles en Android Enterprise avec la Managed Google Play presente.
Procedure
- Lier Managed Google Play : dans le centre d’administration Intune > Devices > Android > Android enrollment > Managed Google Play. Cochez l’accord, cliquez Launch Google to connect now, authentifiez-vous avec le compte Google d’entreprise et completez les informations d’organisation.
- Verifier la liaison : l’etat doit afficform Connected et l’identifiant d’entreprise (Organization name) doit apparaitre.
- Approuver une application : Apps > Android > Add > Managed Google Play app. L’iframe Google s’ouvre ; recherchez l’app, cliquez Approve, choisissez la strategie de permissions (recommande : Keep approved when app requests new permissions ou revalidation manuelle selon votre politique).
- Synchroniser : cliquez Sync en haut de la liste des apps ; l’app approuvee apparait comme type Managed Google Play.
- Assigner : ouvrez l’app, onglet Properties > Assignments, ajoutez un groupe de securite en Required ou Available. Enregistrez.
- Automatiser (optionnel) : utilisez Graph pour declencher la synchronisation et gerer les assignations a grande echelle (script ci-dessous).
Le script
Script PowerShell qui authentifie une app Entra ID, declenche une synchronisation Managed Google Play, liste les apps gerees et cree une assignation Required vers un groupe. Toutes les valeurs sont generiques.
# Prerequis : PowerShell 7.x + module Microsoft.Graph
# Install-Module Microsoft.Graph -Scope CurrentUser
# ---- Parametres (valeurs generiques, a adapter) ----
$TenantId = "00000000-0000-0000-0000-000000000000"
$ClientId = "11111111-1111-1111-1111-111111111111"
# NE PAS stocker le secret en clair : utiliser un coffre (Key Vault, SecretManagement)
$ClientSecret = $env:GRAPH_CLIENT_SECRET
$GroupId = "22222222-2222-2222-2222-222222222222" # groupe cible
$AppDisplayNameFilter = "Exemple Secure Browser" # nom de l'app approuvee
# ---- Authentification applicative (client credentials) ----
$secure = ConvertTo-SecureString $ClientSecret -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($ClientId, $secure)
Connect-MgGraph -TenantId $TenantId -ClientSecretCredential $cred -NoWelcome
# ---- 1) Declencher la synchronisation Managed Google Play ----
# Endpoint : POST /deviceManagement/syncAppleDevices n'est PAS celui-ci.
# Pour Managed Google Play : POST /deviceAppManagement/syncMicrosoftStoreForBusinessApps
# ou action dediee ; ici on utilise l'action Android Enterprise :
$syncUri = "https://graph.microsoft.com/beta/deviceManagement/androidManagedStoreAccountEnterpriseSettings/syncApps"
try {
Invoke-MgGraphRequest -Method POST -Uri $syncUri -ErrorAction Stop
Write-Host "[OK] Synchronisation Managed Google Play declenchee." -ForegroundColor Green
} catch {
Write-Warning "Sync impossible : $($_.Exception.Message)"
}
Start-Sleep -Seconds 20 # laisser le temps a la synchro
# ---- 2) Retrouver l'app Managed Google Play approuvee ----
$appsUri = "https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps" +
"?`$filter=isof('microsoft.graph.androidManagedStoreApp')"
$apps = Invoke-MgGraphRequest -Method GET -Uri $appsUri
$target = $apps.value | Where-Object { $_.displayName -eq $AppDisplayNameFilter }
if (-not $target) {
Write-Error "App '$AppDisplayNameFilter' introuvable. Verifier l'approbation et la synchro."
return
}
$AppId = $target.id
Write-Host "[OK] App trouvee : $($target.displayName) ($AppId)"
# ---- 3) Creer une assignation Required vers le groupe cible ----
$assignUri = "https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps/$AppId/assign"
$body = @{
mobileAppAssignments = @(
@{
"@odata.type" = "#microsoft.graph.mobileAppAssignment"
intent = "required" # required | available | uninstall
target = @{
"@odata.type" = "#microsoft.graph.groupAssignmentTarget"
groupId = $GroupId
}
settings = @{
"@odata.type" = "#microsoft.graph.androidManagedStoreAppAssignmentSettings"
androidManagedStoreAppTrackIds = @()
autoUpdateMode = "default"
}
}
)
} | ConvertTo-Json -Depth 8
try {
Invoke-MgGraphRequest -Method POST -Uri $assignUri -Body $body -ContentType "application/json" -ErrorAction Stop
Write-Host "[OK] Assignation 'required' creee pour le groupe $GroupId." -ForegroundColor Green
} catch {
Write-Error "Echec assignation : $($_.Exception.Message)"
}
Disconnect-MgGraph
Variante : exporter l’etat des assignations existantes avant toute modification (utile pour le rollback).
# Export des assignations actuelles d'une app (snapshot avant changement)
$AppId = "33333333-3333-3333-3333-333333333333"
$uri = "https://graph.microsoft.com/v1.0/deviceAppManagement/mobileApps/$AppId/assignments"
$assignments = Invoke-MgGraphRequest -Method GET -Uri $uri
$assignments.value | ConvertTo-Json -Depth 8 |
Out-File ".\snapshot_assignments_$AppId_$(Get-Date -f yyyyMMdd_HHmm).json"
Write-Host "Snapshot ecrit. Conserver pour rollback."
Validation
- Liaison : dans Intune, Managed Google Play affiche Connected avec le nom d’organisation. Via Graph :
GET /deviceManagement/androidManagedStoreAccountEnterpriseSettingsrenvoie unbindStatusactif. - App presente : la requete de l’etape 2 renvoie l’app avec son
idetdisplayName. - Assignation : Apps > [App] > Device install status montre les appareils passant a Installed. Delai typique : quelques minutes a quelques heures selon le check-in.
- Cote appareil : l’app apparait dans l’app Play geree, ou s’installe silencieusement en Required. Forcer un check-in via Sync dans l’app Intune/Company Portal pour accelerer.
Plan de retour (rollback)
- Annuler une assignation : supprimez le groupe de l’onglet Assignments, ou re-postez sur
/assignl’etat issu du snapshot JSON. Pour desinstaller du parc, assignez l’intention uninstall au meme groupe. - Retirer une app : Apps > [App] > Delete ; cela retire l’approbation cote Intune (l’app reste approuvee cote Google tant que non revoquee dans l’iframe).
- Delier Managed Google Play (dernier recours, impact majeur) : Managed Google Play > Disconnect. ATTENTION : cela desenrole tous les appareils Android Enterprise et efface les profils gere. A ne faire que sous changement planifie avec fenetre de maintenance.
Depannage
| Symptome | Cause probable | Solution |
|---|---|---|
| Bouton Managed Google Play grise | Role insuffisant ou licence Intune absente | Attribuer Intune Administrator et une licence valide, puis relancer |
| App approuvee invisible dans Intune | Synchronisation non effectuee | Cliquer Sync ou appeler l’action syncApps ; attendre 15-30 min |
| Assignation Graph renvoie 403 | Permissions applicatives manquantes | Accorder DeviceManagementApps.ReadWrite.All + consentement admin |
| App non installee sur l’appareil | Appareil non enrole en Android Enterprise, ou pas de check-in | Verifier le profil d’enrolement ; forcer un Sync cote appareil |
| Liaison en Pending | Compte Google personnel utilise | Delier et relier avec un compte d’entreprise generique dedie |
| Installations bloquees en COBO | Play Store public restreint par politique | Normal : seules les apps approuvees s’affichent ; ajuster la configuration d’appareil |
Securite, changement et bonnes pratiques
- Secrets : ne jamais coder en dur le
ClientSecret. Utilisez Azure Key Vault, PowerShell SecretManagement ou, mieux, une Managed Identity / authentification par certificat pour les executions planifiees. - Moindre privilege : limitez l’app Graph aux seules permissions necessaires. Pour les operations de lecture (audit, reporting), creez un principal distinct en
*.Read.Alluniquement. - Compte Google dedie : utilisez un compte d’entreprise generique (ex.
androidenterprise@exemple.test) et non un compte nominatif, pour eviter la perte d’acces au depart d’un employe. - Gestion des permissions d’apps : definissez une politique claire (revalidation manuelle vs. auto-approbation des nouvelles permissions) pour maitriser le risque supply-chain lie aux mises a jour.
- Cadrage ITIL :
- Liaison / deliaison Managed Google Play : changement normal a fort impact (impacte tout le parc Android) → passage en CAB, fenetre de maintenance, communication utilisateurs.
- Approbation + assignation d’une app a un groupe pilote : changement standard preapprouve, reversible (suppression d’assignation).
- Toujours documenter dans l’enregistrement de changement : snapshot d’assignations, procedure de rollback, fenetre et responsable.
- Deploiement progressif : commencez par un groupe pilote (ring 0), validez l’installation et la configuration, puis elargissez par anneaux.
A retenir
Deployer des applications Android via Intune repose sur une chaine claire : lier Managed Google Play une seule fois, approuver les apps dans l’iframe Google, synchroniser, puis assigner avec l’intention adequate. L’automatisation Graph rend l’ensemble reproductible et auditable, a condition de securiser les secrets et d’appliquer le moindre privilege. Traitez la liaison initiale comme un changement a fort impact (CAB, fenetre de maintenance) et les assignations comme des changements standard reversibles grace a un snapshot prealable.
Prochaine etape conseillee : industrialiser le script dans un runbook authentifie par certificat, puis instrumenter un rapport hebdomadaire de l’etat d’installation par groupe pour piloter vos anneaux de deploiement.