Bagikan melalui


Masuk ke Azure PowerShell dengan perwakilan layanan

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

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 tergantung pada apakah itu dikonfigurasi untuk autentikasi berbasis kata sandi atau berbasis sertifikat.

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.

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 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

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()

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.

Lihat juga