Masuk ke Azure PowerShell secara non-interaktif untuk skenario otomatisasi

Identitas terkelola dalam Azure menyediakan cara yang aman dan mulus untuk aplikasi, layanan, dan alat otomatisasi untuk mengakses sumber daya Azure tanpa menyimpan kredensial dalam kode atau konfigurasi. Tidak seperti perwakilan layanan, yang memerlukan manajemen kredensial manual, Azure secara otomatis menangani identitas terkelola dan tidak mengekspos rahasia sensitif. Menggunakan identitas terkelola adalah praktik terbaik untuk menulis skrip otomatisasi aman karena menyederhanakan autentikasi dan meminimalkan risiko kebocoran kredensial. Identitas terkelola juga membantu mengotomatiskan tugas manajemen dengan aman tanpa mengandalkan identitas pengguna. Izin untuk identitas terkelola dikelola melalui Microsoft Entra, memastikan mereka hanya memiliki akses yang diperlukan ke sumber daya, meningkatkan keamanan dan pemeliharaan.

Important

Mulai September 2025, Azure PowerShell akan memerlukan autentikasi multifaktor (MFA) saat masuk dengan identitas pengguna Microsoft Entra ID. Perubahan ini meningkatkan keamanan tetapi mungkin memengaruhi alur kerja otomatisasi yang mengandalkan autentikasi nama pengguna dan kata sandi. Untuk informasi selengkapnya, lihat Dampak autentikasi multifaktor pada Azure PowerShell dalam skenario otomatisasi.

Prasyarat

  • Pasang versi terbaru modul Az PowerShell.

Masuk dengan identitas terkelola

Identitas terkelola adalah tipe khusus dari perwakilan layanan yang memberikan layanan Azure dengan identitas yang dikelola secara otomatis. Menggunakan jenis identitas ini tidak memerlukan penyimpanan kredensial dalam konfigurasi atau kode untuk mengautentikasi ke layanan Azure apa pun yang mendukung identitas terkelola.

Ada dua jenis identitas terkelola:

  • Identitas terkelola yang diberikan oleh sistem
  • Identitas terkelola yang ditetapkan pengguna

Identitas terkelola menyediakan cara yang aman untuk berkomunikasi dengan layanan Azure lain tanpa pengembang perlu mengelola kredensial. Mereka juga membantu dalam mengurangi risiko kebocoran kredensial.

Berikut adalah cara kerja identitas terkelola dalam skenario dunia nyata:

  • Azure secara otomatis mengelola pembuatan dan penghapusan kredensial yang digunakan oleh identitas terkelola.
  • Layanan Azure yang diaktifkan dengan identitas terkelola dapat mengakses layanan lain dengan aman, seperti Azure Key Vault, Azure SQL Database, Azure Blob Storage, dll., menggunakan token Microsoft Entra.
  • Identitas ini dikelola langsung dalam Azure tanpa memerlukan provisi tambahan.

Identitas terkelola menyederhanakan model keamanan dengan menghindari kebutuhan untuk menyimpan dan mengelola kredensial, dan mereka memainkan peran penting dalam operasi cloud yang aman dengan mengurangi risiko yang terkait dengan penanganan rahasia.

Identitas terkelola yang diberikan oleh sistem

Azure secara otomatis membuat identitas terkelola yang ditetapkan sistem untuk instans layanan Azure (seperti VM Azure, App Service, atau Azure Functions). Saat instans layanan dihapus, Azure secara otomatis membersihkan kredensial dan identitas yang terkait dengan layanan.

Contoh berikut terhubung menggunakan identitas terkelola yang ditetapkan oleh sistem dari lingkungan host. Jika dijalankan pada komputer virtual dengan identitas terkelola yang ditetapkan, kode memungkinkan untuk masuk menggunakan identitas yang ditetapkan.

 Connect-AzAccount -Identity

Identitas terkelola yang ditetapkan pengguna

Identitas terkelola yang ditetapkan pengguna adalah identitas yang Anda buat dan kelola di Microsoft Entra. Ini dapat ditetapkan ke satu atau beberapa instans layanan Azure. Siklus hidup identitas terkelola yang ditetapkan pengguna dikelola secara terpisah dari instans layanan tempat identitas tersebut ditetapkan.

Saat menggunakan identitas terkelola yang ditetapkan pengguna, Anda harus menentukan parameter AccountId dan Identity , seperti yang ditunjukkan dalam contoh berikut.

 Connect-AzAccount -Identity -AccountId <user-assigned-identity-clientId-or-resourceId>

Perintah berikut terhubung menggunakan identitas terkelola dari myUserAssignedIdentity. Ini menambahkan identitas yang ditetapkan pengguna ke komputer virtual dan kemudian terhubung menggunakan ClientId dari identitas yang ditetapkan pengguna.

$identity = Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroup -Name myUserAssignedIdentity
Get-AzVM -ResourceGroupName contoso -Name testvm | Update-AzVM -IdentityType UserAssigned -IdentityId $identity.Id
Connect-AzAccount -Identity -AccountId $identity.ClientId # Run on the virtual machine
Account                              SubscriptionName TenantId                             Environment
-------                              ---------------- --------                             -----------
00000000-0000-0000-0000-000000000000 My Subscription  00000000-0000-0000-0000-000000000000 AzureCloud

Untuk informasi selengkapnya, lihat Konfigurasi identitas terkelola untuk sumber daya Azure pada VM Azure.

Masuk dengan perwakilan layanan

Untuk masuk dengan service principal, gunakan parameter ServicePrincipal dari cmdlet Connect-AzAccount. Anda juga memerlukan informasi berikut untuk perwakilan layanan:

  • AppId
  • Kredensial masuk atau akses ke sertifikat yang digunakan untuk membuat service principal
  • ID Penyewa

Cara Anda masuk dengan perwakilan layanan bergantung pada apakah itu dikonfigurasi untuk autentikasi berbasis sertifikat atau berbasis kata sandi.

Autentikasi berbasis sertifikat

Untuk mempelajari cara membuat perwakilan layanan untuk Azure PowerShell, lihat Buat perwakilan layanan Azure dengan Azure PowerShell.

Autentikasi berbasis sertifikat memerlukan Azure PowerShell untuk mengambil informasi dari penyimpanan sertifikat lokal berdasarkan sidik jari sertifikat.

Connect-AzAccount -ApplicationId $appId -Tenant $tenantId -CertificateThumbprint <thumbprint>

Saat menggunakan perwakilan layanan alih-alih aplikasi terdaftar, tentukan parameter ServicePrincipal dan berikan AppId perwakilan layanan sebagai nilai untuk parameter ApplicationId .

Connect-AzAccount -ServicePrincipal -ApplicationId $servicePrincipalId -Tenant $tenantId -CertificateThumbprint <thumbprint>

Dalam Windows PowerShell 5.1, penyimpanan sertifikat dapat dikelola dan diperiksa dengan modul PKI. Untuk PowerShell 7.x dan yang lebih baru, prosesnya berbeda. Skrip berikut menunjukkan cara mengimpor sertifikat yang ada ke penyimpanan sertifikat yang dapat diakses oleh PowerShell.

Mengimpor sertifikat di PowerShell 7.x dan yang lebih baru

# Import a PFX
$storeName = [System.Security.Cryptography.X509Certificates.StoreName]::My
$storeLocation = [System.Security.Cryptography.X509Certificates.StoreLocation]::CurrentUser
$store = [System.Security.Cryptography.X509Certificates.X509Store]::new($storeName, $storeLocation)
$certPath = <path to certificate>
$credentials = Get-Credential -Message "Provide PFX private key password"
$flag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable
$certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certPath, $credentials.Password, $flag)
$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
$store.Add($Certificate)
$store.Close()

Mengimpor sertifikat di Windows PowerShell 5.1

# Import a PFX
$credentials = Get-Credential -Message 'Provide PFX private key password'
Import-PfxCertificate -FilePath <path to certificate> -Password $credentials.Password -CertStoreLocation cert:\CurrentUser\My

Autentikasi berbasis kata sandi

Buat entitas layanan untuk digunakan dengan contoh di bagian ini. Untuk informasi selengkapnya tentang membuat perwakilan layanan, lihat Buat perwakilan layanan Azure dengan Azure PowerShell.

$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName

Caution

Rahasia prinsipal layanan yang disediakan disimpan dalam file AzureRmContext.json di profil pengguna Anda ($env:USERPROFILE\.Azure). Pastikan direktori ini memiliki perlindungan yang sesuai.

Untuk mendapatkan kredensial perwakilan layanan sebagai objek, gunakan Get-Credential cmdlet . Cmdlet ini meminta nama pengguna dan kata sandi. Gunakan prinsipal layanan AppId sebagai nama pengguna dan ubah secret menjadi teks biasa untuk kata sandi.

# Retrieve the plain text password for use with Get-Credential in the next command.
$sp.PasswordCredentials.SecretText

$pscredential = Get-Credential -UserName $sp.AppId
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

Untuk skenario otomatisasi, Anda perlu membuat kredensial AppId dari perwakilan layanan dan SecretText:

$SecureStringPwd = $sp.PasswordCredentials.SecretText | ConvertTo-SecureString -AsPlainText -Force
$pscredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $sp.AppId, $SecureStringPwd
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId

Gunakan praktik penyimpanan kata sandi yang sesuai saat mengotomatiskan koneksi service principal.

Baca juga