Masuk ke Azure PowerShell secara non-interaktif untuk skenario otomatisasi
Perwakilan layanan di Azure adalah akun noninteraktif yang menyediakan identitas yang digunakan oleh aplikasi, layanan, dan alat otomatisasi untuk mengakses sumber daya Azure tertentu. Mengautentikasi dengan perwakilan layanan adalah cara terbaik untuk menulis skrip aman karena bertindak sebagai identitas keamanan dengan izin yang ditetapkan yang mengatur tindakan apa yang dapat dilakukan dan sumber daya apa yang dapat diakses. Perwakilan layanan membantu mengotomatiskan tugas manajemen dengan aman tanpa menggunakan akun pengguna pribadi, memfasilitasi akses yang lebih aman dan dapat dikelola ke sumber daya Azure. Seperti akun pengguna lain, Anda mengelola izin mereka dengan Microsoft Entra. Dengan memberikan perwakilan layanan hanya izin yang dibutuhkan, skrip otomatisasi Anda tetap aman.
Prasyarat
- Instal versi terbaru modul Az PowerShell.
Masuk dengan identitas terkelola
Identitas terkelola adalah jenis perwakilan layanan khusus yang menyediakan 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 ditetapkan sistem
- Identitas terkelola yang ditetapkan pengguna
Identitas terkelola menyediakan cara yang aman untuk berkomunikasi dengan layanan Azure lainnya 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 ditetapkan sistem
Azure secara otomatis membuat identitas terkelola yang ditetapkan sistem untuk instans layanan Azure (seperti Azure VM, 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 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 parameter Identitas , seperti yang ditunjukkan dalam contoh berikut.
Connect-AzAccount -Identity -AccountId <user-assigned-identity-clientId-or-resourceId>
Perintah berikut terhubung menggunakan identitas terkelola .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 Mengonfigurasi identitas terkelola untuk sumber daya Azure di Azure VM.
Masuk dengan perwakilan layanan
Untuk masuk dengan perwakilan layanan, gunakan parameter ServicePrincipal cmdlet Connect-AzAccount
. Anda juga memerlukan informasi berikut untuk perwakilan layanan:
- AppId
- Kredensial masuk atau akses ke sertifikat yang digunakan untuk membuat perwakilan layanan
- 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 Membuat perwakilan layanan Azure dengan Azure PowerShell.
Autentikasi berbasis sertifikat mengharuskan Azure PowerShell untuk mengambil informasi dari penyimpanan sertifikat lokal berdasarkan thumbprint 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>
Di 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 perwakilan layanan untuk digunakan dengan contoh di bagian ini. Untuk informasi selengkapnya tentang membuat perwakilan layanan, kunjungi Buat perwakilan layanan Azure dengan Azure PowerShell.
$sp = New-AzADServicePrincipal -DisplayName ServicePrincipalName
Perhatian
Rahasia perwakilan layanan yang disediakan disimpan dalam AzureRmContext.json
file 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 perwakilan layanan AppId
untuk 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 info masuk dari perwakilan layanan AppId
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 perwakilan layanan.
Lihat juga
- Membuat prinsipal layanan Azure dengan Microsoft Azure PowerShell
- Apa identitas terkelola untuk sumber daya Azure?
- Menetapkan akses identitas terkelola ke sumber daya menggunakan PowerShell
- Menampilkan perwakilan layanan identitas terkelola menggunakan PowerShell
- Connect-AzAccount
- New-AzADServicePrincipal
- Get-Credential
Azure PowerShell