Otomatik PowerShell komut dosyalarını çalıştırmak için Sertifika Tabanlı Kimlik Doğrulamayı yapılandırma


Bazen kimlik bilgileri eklemeden veya MFA istemleri almadan otomatik Exchange Online PowerShell betiğini çalıştırmak isteyebilirsiniz. Bunu yapmanın güvenli ve mükemmel yolu nedir? Bu makalede, otomatik PowerShell komut dosyalarını çalıştırmak için Sertifika Tabanlı Kimlik Doğrulamayı (CBA) nasıl yapılandıracağınızı öğreneceksiniz.

Sertifika Tabanlı Kimlik Doğrulama

Eski günlerde, kullanıcı kimlik bilgilerini şifrelenmiş bir dosyaya kaydederdiniz veya Exchange Online PowerShell'de otomatik komut dosyalarını çalıştırmak için temel kimlik doğrulamayı kullanırdınız. Eylül 2022'den itibaren Temel Kimlik Doğrulama, Exchange Online'da kullanımdan kaldırıldı ve artık kullanılamayacak.

Sertifika Tabanlı Kimlik Doğrulama, Exchange Online PowerShell oturumlarının güvenli bir şekilde otomatikleştirilmesine olanak tanıyan yeni bir şifreleme yöntemidir. Bir PowerShell betiğini her çalıştırdığınızda kullanıcı kimlik bilgilerini sağlama ihtiyacını ortadan kaldıran güvenli bir yöntemdir. Exchange Online'ı kullanan katılımsız komut dosyalarını ve otomatik oturumları destekler. Kimlik doğrulama sırasında kullanıcı adlarına, şifrelere ve MFA'ya da gerek yoktur.

Sertifika Tabanlı Kimlik Doğrulama nasıl çalışır?

Exchange Online PowerShell modülü, üç parametreyi kullanarak yalnızca uygulama belirtecini getirmek için Active Directory Kimlik Doğrulama Kitaplığını kullanır:

  1. Uygulama Kimliği
  2. Kiracı Kimliği (kuruluş)
  3. Sertifika parmak izi

Azure AD'de oluşturduğunuz uygulamaya, erişim belirtecinde döndürülen, kendisine atanmış bir Dizin Rolü vardır. Exchange Online, belirteçte bulunan dizin rolü bilgilerini kullanarak oturum rolü tabanlı erişim denetimini (RBAC) yapılandırır.

Exchange Online'da Sertifika Tabanlı Kimlik Doğrulamayı yapılandırma

Katılımsız komut dosyaları için Exchange Online Sertifika Tabanlı Kimlik Doğrulamayı uygulama adımlarında size rehberlik edeceğiz.

1. Adım. Kendinden imzalı sertifika oluşturun

Öncelikle kendinden imzalı bir sertifika oluşturmanız gerekir. Sertifikayı, katılımsız PowerShell betiğini çalıştırmak istediğiniz makinede yapmak daha iyidir.

Windows PowerShell'i yönetici olarak kullanarak herhangi bir Windows Sunucusunda veya Masaüstünde oturum açın.

Not: Kendinden imzalı sertifika varsayılan olarak bir yıl süreyle geçerlidir.

Bizim durumumuzda, yıllık yenilemeyi önlemek için kendinden imzalı sertifikaya 4 yıl ekleyeceğiz.

Sertifika oluşturmak için aşağıdaki PowerShell cmdlet'ini kullanın.

$mycert = New-SelfSignedCertificate -DnsName "exoip.com" -CertStoreLocation "cert:\LocalMachine\My" -NotAfter (Get-Date).AddYears(4) -KeySpec KeyExchange -FriendlyName "EXO automated scripts"

Sertifika artık saklanıyor. Parmak izini görüntülemek için aşağıdaki cmdlet'i kullanın.

$mycert | Select-Object -Property Subject,Thumbprint,NotBefore,NotAfter

Parmak İzini kopyalayın ve Not Defteri'ne yapıştırın. Daha sonra CBA ile Exchange Online PowerShell'e bağlandığınızda buna ihtiyacınız olacak.

PS C:\> $mycert | Select-Object -Property Subject,Thumbprint,NotBefore,NotAfter

Subject      Thumbprint                               NotBefore           NotAfter           
-------      ----------                               ---------           --------           
CN=exoip.com 71E8CD2932E252ED4C70A731795D595715905460 07/02/2023 13.04.09 07/02/2027 13.14.09

Daha sonra Azure AD uygulamasına yüklemek üzere bir .cer dosyası oluşturmak istiyoruz. .cer dosyası ile Exchange Online'a yalnızca kendinden imzalı sertifikanın oluşturulduğu makineden bağlanabilirsiniz.

C:\temp dizinine kaydetmek için temp adında bir klasör oluşturun.

Sertifikayı .cer dosyasına aktarmak için aşağıdaki PowerShell cmdlet'ini kullanın.

$mycert | Export-Certificate -FilePath "C:\temp\EXOAutomatedScripts.cer"

PowerShell'de aşağıdaki çıktıya bakın.

PS C:\> $mycert | Export-Certificate -FilePath "C:\temp\EXOAutomatedScripts.cer"


    Directory: C:\temp


Mode                 LastWriteTime         Length Name                                                                 
----                 -------------         ------ ----                                                                 
-a----        07/02/2023     13.31            796 EXOAutomatedScripts.cer                                                                                                         

.cer dosyasını bilgisayarınızda C:\temp konumunda bulabilirsiniz.

Ayrıca Exchange Online'a herhangi bir makineden bağlanabilmeniz için bir .pfx dosyası da oluşturacağız. Bir .pfx dosyasını bir kişiye kopyalayabilir veya gönderebilirsiniz, böylece bu dosya başka bir makineye yüklendiğinde kimlik doğrulama işlemi sırasında alınabilir.

PowerShell cmdlet'ini kullanarak sertifikayı .pfx dosyasına aktarın.

$mycert | Export-PfxCertificate -FilePath "C:\temp\EXOAutomatedScripts.pfx" -Password $(ConvertTo-SecureString -String "P@ssw0Rd1234" -AsPlainText -Force)

Aşağıdaki çıktı PowerShell'de böyle görünüyor.

PS C:\> $mycert | Export-PfxCertificate -FilePath "C:\temp\EXOAutomatedScripts.pfx" -Password $(ConvertTo-SecureString -String "P@ssw0Rd1234" -AsPlainText -Force)


    Directory: C:\temp


Mode                 LastWriteTime         Length Name                                                                 
----                 -------------         ------ ----                                                                 
-a----        07/02/2023     13.33           2685 EXOAutomatedScripts.pfx 

.pfx dosyasını bilgisayarınızda C:\temp konumunda bulabilirsiniz.

2. Adım. Azure AD'de yeni uygulama kaydı oluşturun

Azure AD'ye yeni bir uygulamayı kaydetmek için adımları izleyin:

  • Microsoft Azure'da oturum açın
  • Menü > Azure Active Directory'yi tıklayın

  • Uygulama kayıtları'nı tıklayın
  • Yeni kayıt'ı tıklayın

  • Uygulamanıza EXO PowerShell otomatikleştirilmiş adını verin
  • Yalnızca bu kuruluş dizinindeki hesaplar - (Tek kiracı)'yı seçin
  • Kaydol'u tıklayın

Başarıyla oluşturulan uygulamayı belirten bir bildirim alacaksınız ve EXO PowerShell otomatik genel bakışını gösterecek.

  • Uygulama (istemci) kimliğini kopyalayın ve Exchange Online'a bağlanırken kullanacağımız için Not Defteri'ne yapıştırın

3. Adım. Azure uygulama API'si izinlerini ayarlayın

Oluşturduğunuz EXO PowerShell otomatik uygulamasına API izinleri atamanız gerekir. API izinlerini yapılandırmak için bir komut dosyası kullanacağız ve bildirim özelliklerini düzenleyeceğiz.

EXO PowerShell otomatik genel bakışından:

  • Manifest'i tıklayın
  • Editörde 42. satır olan "requiredResourceAccess"e ilerleyin
  • 43. satırdan 52. satıra kadar komut dosyasını seçin

  • Aşağıdaki PowerShell sözdizimini kopyalayın
   {
      "resourceAppId": "00000002-0000-0ff1-ce00-000000000000",
      "resourceAccess": [
         {
            "id": "dc50a0fb-09a3-484d-be87-e023b12c6440",
            "type": "Role"
         }
      ]
   }
],
  • PowerShell söz dizimini manifest dosyasına yapıştırın
  • Kaydet'i tıklayın

Uygulama bildirimi başarıyla güncellendi'yi belirten bir bildirim alacaksınız.

  • API izni'ni tıklayın
  • Exoip365 için yönetici izni ver'i tıklayın
  • Evet'i tıklayın

Yönetici iznini başarıyla verdiğinizi gösteren yeşil bir onay işareti görünür!

4. Adım. Sertifikayı uygulamaya yükleyin

Şimdi daha önce oluşturduğunuz kendinden imzalı sertifikayı yüklememiz gerekiyor.

EXO PowerShell otomatik genel bakışından:

  • Sertifikalar ve sırlar'ı tıklayın
  • Sertifikalar'ı seçin
  • Sertifikayı yükle'yi tıklayın

  • C:\temp içinde arama yapmak için gözat simgesini tıklayın ve EXOAutomatedScripts.cer dosyasını seçin
  • Açıklama ekle EXO Otomatik Komut Dosyaları
  • Ekle'yi tıklayın

Sertifika listede görünür.

Not: Her zaman daha önce oluşturduğunuz sertifika parmak izinin aynı olduğundan emin olun.

5. Adım. Gerekli Azure AD rollerini uygulamaya atayın

Yapılandırmanın son adımı, kayıtlı uygulama için gerekli izinlere sahip RBAC rolleridir.

  • Menü > Azure Active Directory'ye tıklayın
  • Roller ve yöneticiler'i seçin
  • Tüm roller'i seçin
  • Değişim'i arayın
  • Exchange Yöneticisi'ni tıklayın

  • Ödevler'i tıklayın
  • Ödev ekle'yi tıklayın
  • EXO PowerShell otomatikleştirilmiş Azure uygulama adını arayın
  • Sonuçlardan uygulamayı seçin
  • Ekle'yi tıklayın

Azure atama adı EXO PowerShell otomatikleştirilmiş, Exchange Yöneticisi rol atamaları listesine başarıyla eklendi.

Sertifika Tabanlı Kimlik Doğrulama ile Exchange Online PowerShell'e bağlanın

Not: Devam etmeden önce Exchange Online PowerShell modülünü yüklemeniz gerekir.

EXO PowerShell'e bağlanmak için Sertifika Tabanlı Kimlik Doğrulamayı (CBA) kullanacağız. Değerleri Microsoft Azure portalından almanız ve bu değerleri aşağıdaki değişkenlere eklemeniz gerekir:

  1. $Uygulama Kimliği
  2. $CertificateThumbPrint
  3. $Organizasyon

Önceki adımlarda $AppId ve $CertificateThumbprint değerlerinin nasıl alınacağını gösterdik. Şimdi Azure Active Directory'de kuruluş adını bulacağız ve değeri $Organization değişkenine ekleyeceğiz.

  • Menüden Özel alan adları'nı tıklayın
  • Alan adı listesinde bulun

Tüm değerleri bulduktan sonra Sertifika Tabanlı Kimlik Doğrulama ile Exchange Online PowerShell'e bağlanmak için aşağıdaki üç değişkeni doldurun:

$AppId = "89e1d6c0-5105-41a0-b741-894b2331ca07"
$CertificateThumbprint = "71E8CD2932E252ED4C70A731795D595715905460"
$Organization = "exoip365.onmicrosoft.com"

Connect-ExchangeOnline -AppId $AppId -CertificateThumbprint $CertificateThumbprint -Organization $Organization -ShowBanner:$false

Başarılı bir şekilde bağlanıp bağlanmadığınızı kontrol etmenin mükemmel bir yolu, posta kutularını görüntülemek için Get-EXOMailbox cmdlet'ini çalıştırmaktır.

PS C:\> Get-EXOMailbox -ResultSize 5 | ft Name,UserPrincipalName

Name           UserPrincipalName       
----           -----------------       
Zoe Howard     Zoe.Howard@exoip.com    
Amanda Morgan  Amanda.Morgan@exoip.com 
Amelia Nash    Amelia.Nash@exoip.com   
Stephen Hunter Stephen.Hunter@exoip.com
Carol Baker    Carol.Baker@exoip.com   

PowerShell otomatik betiğini CBA ile çalıştırın

Exchange Online'daki posta kutularının listesini C:\temp konumundaki bir CSV dosyasına aktaracak aşağıdaki otomatik PowerShell komut dosyasını kullanın. Bu komut dosyası, her gün çalışacak zamanlanmış bir göreve eklenir.

Not: PowerShell komut dosyasının sonuna Disconnect-ExchangeOnline -Confirm:$false ekleyin. Betik oturumun bağlantısını kesmeden çalışıyorsa mevcut tüm uzak PowerShell oturumlarını kullanabilirsiniz ve oturumların süresinin dolmasını beklemeniz gerekir.

# Connect Exchange Online PowerShell
$AppId = "89e1d6c0-5105-41a0-b741-894b2331ca07"
$CertificateThumbprint = "71E8CD2932E252ED4C70A731795D595715905460"
$Organization = "exoip365.onmicrosoft.com"

Connect-ExchangeOnline -AppId $AppId -CertificateThumbprint $CertificateThumbprint -Organization $Organization -ShowBanner:$false

# Split path
$Path = Split-Path -Parent "C:\temp\*.*"

# Create variable for the date stamp
$LogDate = Get-Date -f yyyyMMddhhmm

# Define CSV and log file location variables
$Csvfile = $Path + "\AllMailboxes_$logDate.csv"

Get-EXOMailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress | Sort-Object PrimarySmtpAddress | Export-CSV -Path $Csvfile -NoTypeInformation -Encoding UTF8

# Disconnect Exchange Online PowerShell
Disconnect-ExchangeOnline -Confirm:$false

Otomatik PowerShell komut dosyalarını çalıştırmak için Exchange Online Sertifika Tabanlı Kimlik Doğrulamaya başarıyla bağlanabilirsiniz!

Devamını oku: Azure MFA'yı artırın ve iyileştirin »

Çözüm

Exchange Online'a bağlanmak ve otomatik PowerShell komut dosyalarını çalıştırmak için Sertifika Tabanlı Kimlik Doğrulamayı nasıl yapılandıracağınızı öğrendiniz. Artık kullanıcı etkileşimi, kullanıcı adı, şifre veya MFA gerekmiyor, bu da işi çok daha kolay hale getiriyor.

Bu makaleyi beğendiniz mi? Ayrıca PowerShell ile Toplu olarak paylaşılan posta kutuları oluşturmayı da isteyebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.

İlgili makaleler