Azure à grande échelle avec
PowerShell
Comment gérer 300 souscriptions avec Powershell
https://twitter.com/BenoitSautiere
#PSSATPARIS2019
Bio
#PSSATPARIS2019
21 ans d’expérience
Culture dev à la base, j’ai rapidement migré vers
l’infrastructure, pour aller progressivement des postes de
travail aux serveurs, la messagerie, le Scripting puis la
sécurité.
Mon expertise dans l’industrialisation m’a amené aux Cloud
privés. Depuis quatre ans, j’aide mes clients à adopter les
composants IaaS de la plateforme Microsoft Azure.
Blog : http://bsimplebydesign.azurewebsites.net
https://twitter.com/BenoitSautiere
https://github.com/Benoitsautierecellenza/
Azure at scale
#PSSATPARIS2019
Azure at scale
#PSSATPARIS2019
Historiquement, nous souscriptions ressemblent à ça :
• Reprend la segmentation « On-premises »
• Limité dans la gestion des souscriptions Azure
• Implique de partager l’espace
• Gouvernance dite « Micro-Management »
• Refacturation des usages complexe
Production
subscription
Development
subscription
User
acceptance
subscription
Build
subscription
All teams
Assign role
Assign role
Assign role
Assign role
Azure at scale
#PSSATPARIS2019
Aujourd’hui on « scale » le nombre de souscriptions
• Séparation des populations en équipes / Feature team
• Segmentation par Management Group
• Mise à disposition de souscriptions « Feature »
Objectifs
• Isoler les risques
• Apporter la lisibilité pour la facturation
Root Management Group
BLD
DEV
UAT
PRD
Subscription Subscription Subscription
Subscription Subscription Subscription
Subscription Subscription Subscription
Subscription Subscription Subscription
Product /
feature
team
Product /
feature
team
Product /
feature
team
Hub
subscription
Shared servicesDedicated services
Hub
subscription
Hub
subscription
Hub
subscription
All teams
Azure at scale
#PSSATPARIS2019
La souscription Azure est un produit à industrialiser
• Grand nombre de souscriptions à gérer
• Objectif : Livrer des souscriptions « Under Control »
Outils Azure :
• Policy
• BluePrint
• PowerShell
Gouvernance : BluePrint + Policy + PowerShell
Azure at scale
#PSSATPARIS2019
Cloud Control Factory
• Créer des souscriptions
• Propager des BluePrints
• Gérer le cycle de vie
Azure Blueprint
Root Management Group
BLD
DEV
UAT
PRD
Subscription Subscription Subscription
Subscription Subscription Subscription
Subscription Subscription Subscription
Subscription Subscription Subscription
Custom Role
Deploy
Assign version
Assign version
Assign version Azure
policy
ARM Template
ResourceGroup
Cloud ControlFactory
Repos
Super
Powershell
Script
Powershell job
Pull
Powershell job Powershell job
Secrets
Inject
Inject
Inject
Pull
Pull
Azure at scale
#PSSATPARIS2019
Bien plus compliqué
• BluePrint c’est Preview
• Paralléliser c’est obligatoire
• Implique du Least-Privilege
• Refondre les Built-ins roles
• Interdire l’usage de « Owner »
• Bien scoper les utilisateurs
Azure Blueprint
Custom Role
Azure
policy
ARM Template
ResourceGroup
Cloud ControlFactory
Secrets BLD
Pipeline DEV
DevOps
Pipeline BLD Pipeline UAT Pipeline PRD
Build
Inject
Contexte
Repos
Scripts
Config
Build
Build
Build
Secrets DEV
Secrets UAT
Secrets PRD
Inject
Inject
Contexte
Contexte
Contexte
Pull
Pull
Pull
Pull
Runbooks
Custom Metrics
Alert
On-Premises API
Pre-deploy
Post-
deploy
Pre-assign
Post-assign
Clean-up
Re-assign
Commencer avec Azure Policy/BluePrint
#PSSATPARIS2019
Démonstration
Industrialiser nos souscriptions avec Blueprints et Azure Policy
#PSSATPARIS2019
Contenu démonstration
• Demo PowerShell pour importer une Azure Policy
• Demo PowerShell pour assigner une Azure Policy
• Demo PowerShell pour importer un BluePrint
#PSSATPARIS2019
Challenges
PowerShell oui mais
#PSSATPARIS2019
Challenges
Choix du moteur
• Garantir la conformité dans chaque souscription
• Automation Versus Azure Function
Points attention
• Attention sécurisation Automation
• Durée d’exécution Runbook
• Segmentation des secrets
• Rotation des secrets
• Gestion des erreurs (Completed but failed)
• Get-AzContextAutoSaveSettings
#PSSATPARIS2019
Challenges
Besoin d’un référentiel
• Simple, évolutif, dynamique
• Prenant en charge
• Exceptions
• Overides
Déployer
• Par wave
• Prédéployer
• Unitairement
#PSSATPARIS2019
BLD UAT DEV PROD
Wav
e 1
Wave 2 Wave 3
Challenges
Owner Azure != Global Administrator Azure AD
Isolation Azure AD From Azure because Office 365
• Mais un Global Admin peut devenir Owner de vos souscriptions
• Par défaut tout le monde peut enregistrer son application
Problèmes :
• Multiples applications avec le même nom
• Pas de respect de la charte de nommage
• Risque de secrets en “never expires”
• Tout n’est pas automatisable
#PSSATPARIS2019
Démonstration
Industrialiser nos souscriptions avec Azure Automation
#PSSATPARIS2019
Notre quotidien
• Propager la gouvernance, c’est vous
• Maintenir la gouvernance, c’est vous
• Les services Azure ne sont pas “Secure by design”
• Il faudra abandoner certains services
• Gérer les dépendances entre services
#PSSATPARIS2019
Azure Firewall
Gérer le Data Leakage dans Azure avec du PowerShell
#PSSATPARIS2019
Nos problématiques
• Industrialiser de multiples instances
• Propager plusieurs configurations
• Des règles génériques
• Des règles applicables à un scope (souscription)
• Des règles propres aux services consommés
• L’accès aux ressources
Challenges
• 180 secondes de processing
• Maintient de la cohérence
• Risques de collisions
#PSSATPARIS2019
VNET-NorthEurope
Virtual Machine
Subscription
Storage Account
PIPAFW-NorthEurope
Network Interface
Local Network Gateway
Key Vault
Azure Firewall
NorthEurope
Azure
Azure Firewall West
Europe
VNET-WestEurope
AzureFirewallSubnet
AzureFirewallSubnet
Route Table
Route Table
PIPAFW-WestEurope
DemoAzureFirewall
GatewaySubnet
GatewaySubnet
Local Network Gateway
PIPGWNorthEurope
PIPGWWestEurope
GWWestEurope
GWNorthEurope
Virtual Machine
VMSubnet
VMSubnet
Network Interface
Allow access from
Allow access from
Linked
Linked
Linked
Linked
Linked
Linked
Linked
Linked
Linked
Linked
Linked
Linked
Connection
Connection
Linked
Linked
Storage Account (GRS-RA)
Azure queue
afwnortheu
Azure queue
afwwesteu
Démonstration
Industrialiser la gestion d’Azure Firewall
#PSSATPARIS2019
#PSSATPARIS2019
Merci !
#PSSATPARIS2019

Powershell Saturday - Azure at Scale with PowerShell

  • 1.
    Azure à grandeéchelle avec PowerShell Comment gérer 300 souscriptions avec Powershell https://twitter.com/BenoitSautiere #PSSATPARIS2019
  • 2.
    Bio #PSSATPARIS2019 21 ans d’expérience Culturedev à la base, j’ai rapidement migré vers l’infrastructure, pour aller progressivement des postes de travail aux serveurs, la messagerie, le Scripting puis la sécurité. Mon expertise dans l’industrialisation m’a amené aux Cloud privés. Depuis quatre ans, j’aide mes clients à adopter les composants IaaS de la plateforme Microsoft Azure. Blog : http://bsimplebydesign.azurewebsites.net https://twitter.com/BenoitSautiere https://github.com/Benoitsautierecellenza/
  • 3.
  • 4.
    Azure at scale #PSSATPARIS2019 Historiquement,nous souscriptions ressemblent à ça : • Reprend la segmentation « On-premises » • Limité dans la gestion des souscriptions Azure • Implique de partager l’espace • Gouvernance dite « Micro-Management » • Refacturation des usages complexe Production subscription Development subscription User acceptance subscription Build subscription All teams Assign role Assign role Assign role Assign role
  • 5.
    Azure at scale #PSSATPARIS2019 Aujourd’huion « scale » le nombre de souscriptions • Séparation des populations en équipes / Feature team • Segmentation par Management Group • Mise à disposition de souscriptions « Feature » Objectifs • Isoler les risques • Apporter la lisibilité pour la facturation Root Management Group BLD DEV UAT PRD Subscription Subscription Subscription Subscription Subscription Subscription Subscription Subscription Subscription Subscription Subscription Subscription Product / feature team Product / feature team Product / feature team Hub subscription Shared servicesDedicated services Hub subscription Hub subscription Hub subscription All teams
  • 6.
    Azure at scale #PSSATPARIS2019 Lasouscription Azure est un produit à industrialiser • Grand nombre de souscriptions à gérer • Objectif : Livrer des souscriptions « Under Control » Outils Azure : • Policy • BluePrint • PowerShell Gouvernance : BluePrint + Policy + PowerShell
  • 7.
    Azure at scale #PSSATPARIS2019 CloudControl Factory • Créer des souscriptions • Propager des BluePrints • Gérer le cycle de vie Azure Blueprint Root Management Group BLD DEV UAT PRD Subscription Subscription Subscription Subscription Subscription Subscription Subscription Subscription Subscription Subscription Subscription Subscription Custom Role Deploy Assign version Assign version Assign version Azure policy ARM Template ResourceGroup Cloud ControlFactory Repos Super Powershell Script Powershell job Pull Powershell job Powershell job Secrets Inject Inject Inject Pull Pull
  • 8.
    Azure at scale #PSSATPARIS2019 Bienplus compliqué • BluePrint c’est Preview • Paralléliser c’est obligatoire • Implique du Least-Privilege • Refondre les Built-ins roles • Interdire l’usage de « Owner » • Bien scoper les utilisateurs Azure Blueprint Custom Role Azure policy ARM Template ResourceGroup Cloud ControlFactory Secrets BLD Pipeline DEV DevOps Pipeline BLD Pipeline UAT Pipeline PRD Build Inject Contexte Repos Scripts Config Build Build Build Secrets DEV Secrets UAT Secrets PRD Inject Inject Contexte Contexte Contexte Pull Pull Pull Pull Runbooks Custom Metrics Alert On-Premises API Pre-deploy Post- deploy Pre-assign Post-assign Clean-up Re-assign
  • 9.
    Commencer avec AzurePolicy/BluePrint #PSSATPARIS2019
  • 10.
    Démonstration Industrialiser nos souscriptionsavec Blueprints et Azure Policy #PSSATPARIS2019
  • 11.
    Contenu démonstration • DemoPowerShell pour importer une Azure Policy • Demo PowerShell pour assigner une Azure Policy • Demo PowerShell pour importer un BluePrint #PSSATPARIS2019
  • 12.
  • 13.
    Challenges Choix du moteur •Garantir la conformité dans chaque souscription • Automation Versus Azure Function Points attention • Attention sécurisation Automation • Durée d’exécution Runbook • Segmentation des secrets • Rotation des secrets • Gestion des erreurs (Completed but failed) • Get-AzContextAutoSaveSettings #PSSATPARIS2019
  • 14.
    Challenges Besoin d’un référentiel •Simple, évolutif, dynamique • Prenant en charge • Exceptions • Overides Déployer • Par wave • Prédéployer • Unitairement #PSSATPARIS2019 BLD UAT DEV PROD Wav e 1 Wave 2 Wave 3
  • 15.
    Challenges Owner Azure !=Global Administrator Azure AD Isolation Azure AD From Azure because Office 365 • Mais un Global Admin peut devenir Owner de vos souscriptions • Par défaut tout le monde peut enregistrer son application Problèmes : • Multiples applications avec le même nom • Pas de respect de la charte de nommage • Risque de secrets en “never expires” • Tout n’est pas automatisable #PSSATPARIS2019
  • 16.
    Démonstration Industrialiser nos souscriptionsavec Azure Automation #PSSATPARIS2019
  • 17.
    Notre quotidien • Propagerla gouvernance, c’est vous • Maintenir la gouvernance, c’est vous • Les services Azure ne sont pas “Secure by design” • Il faudra abandoner certains services • Gérer les dépendances entre services #PSSATPARIS2019
  • 18.
    Azure Firewall Gérer leData Leakage dans Azure avec du PowerShell #PSSATPARIS2019
  • 19.
    Nos problématiques • Industrialiserde multiples instances • Propager plusieurs configurations • Des règles génériques • Des règles applicables à un scope (souscription) • Des règles propres aux services consommés • L’accès aux ressources Challenges • 180 secondes de processing • Maintient de la cohérence • Risques de collisions #PSSATPARIS2019 VNET-NorthEurope Virtual Machine Subscription Storage Account PIPAFW-NorthEurope Network Interface Local Network Gateway Key Vault Azure Firewall NorthEurope Azure Azure Firewall West Europe VNET-WestEurope AzureFirewallSubnet AzureFirewallSubnet Route Table Route Table PIPAFW-WestEurope DemoAzureFirewall GatewaySubnet GatewaySubnet Local Network Gateway PIPGWNorthEurope PIPGWWestEurope GWWestEurope GWNorthEurope Virtual Machine VMSubnet VMSubnet Network Interface Allow access from Allow access from Linked Linked Linked Linked Linked Linked Linked Linked Linked Linked Linked Linked Connection Connection Linked Linked Storage Account (GRS-RA) Azure queue afwnortheu Azure queue afwwesteu
  • 20.
    Démonstration Industrialiser la gestiond’Azure Firewall #PSSATPARIS2019
  • 21.
  • 22.