Gunakan Tindakan GitHub untuk membuat sambungan ke Azure
Pelajari cara menggunakan login Azure dengan Azure PowerShell atau Azure CLI untuk berinteraksi dengan sumber daya Azure Anda.
Untuk menggunakan Azure PowerShell atau Azure CLI dalam alur kerja Tindakan GitHub, Anda harus masuk terlebih dahulu dengan tindakan login Azure.
Tindakan login Azure mendukung dua cara autentikasi berbeda menggunakan Azure:
- Perwakilan layanan dengan rahasia
- OpenID Koneksi (OIDC) dengan perwakilan layanan Azure menggunakan Kredensial Identitas Federasi
Secara default, tindakan masuk masuk dengan Azure CLI dan menyiapkan lingkungan runner GitHub Actions untuk Azure CLI. Anda dapat menggunakan Azure PowerShell dengan properti enable-AzPSSession
pada tindakan login Azure. Ini menyiapkan lingkungan runner GitHub Actions dengan modul Azure PowerShell.
Anda dapat menggunakan login Azure untuk tersambung ke cloud publik atau sovereign cloud termasuk Azure Government dan Azure Stack Hub.
Gunakan tindakan login Azure dengan OpenID Connect
Untuk menyiapkan Login Azure dengan OpenID Connect dan menggunakannya dalam alur kerja tindakan GitHub, Anda memerlukan:
- Aplikasi Microsoft Entra, dengan perwakilan layanan yang telah ditetapkan dengan peran yang sesuai untuk langganan Anda.
- Aplikasi Microsoft Entra yang dikonfigurasi dengan kredensial federasi untuk mempercayai token yang dikeluarkan oleh GitHub Actions ke repositori GitHub Anda. Anda dapat mengonfigurasi ini di portal Azure atau dengan MICROSOFT Graph REST API.
- Alur kerja GitHub Actions yang meminta token masalah GitHub ke alur kerja, dan menggunakan tindakan masuk Azure.
Membuat aplikasi Microsoft Entra dan perwakilan layanan
Anda harus membuat aplikasi Microsoft Entra dan perwakilan layanan lalu menetapkan peran pada langganan Ke aplikasi Anda sehingga alur kerja Anda memiliki akses ke langganan Anda.
Jika Anda tidak memiliki aplikasi yang sudah ada, daftarkan aplikasi Microsoft Entra baru dan perwakilan layanan yang dapat mengakses sumber daya. Sebagai bagian dari proses ini, pastikan untuk:
- Daftarkan aplikasi Anda dengan ID Microsoft Entra dan buat perwakilan layanan
- Menetapkan peran ke aplikasi
Buka Pendaftaran aplikasi di portal Azure dan temukan aplikasi Anda. Salin nilai untuk ID Aplikasi (klien) dan ID Direktori (penyewa) untuk digunakan dalam alur kerja tindakan GitHub Anda.
Buka Langganan di portal Azure dan temukan langganan Anda. Salin ID langganan.
Tambahkan informasi masuk terfederasi
Anda dapat menambahkan informasi masuk terfederasi di portal Azure atau dengan REST API Microsoft Graph.
- Masuk ke Pendaftaran aplikasi pada portal Microsoft Azure dan buka aplikasi yang ingin Anda konfigurasikan.
- Di dalam aplikasi, buka Sertifikat dan rahasia.
- Di tab Kredensial gabungan, pilih Tambahkan kredensial.
- Pilih skenario informasi masukTindakan GitHub yang menyebarkan sumber daya Azure. Buat informasi masuk Anda dengan memasukkan detail informasi masuk Anda.
Bidang | Description | Contoh |
---|---|---|
Organization | Nama organisasi GitHub atau nama pengguna GitHub Anda. | contoso |
Repositori | Nama Repositori GitHub Anda. | contoso-app |
Jenis entitas | Filter yang digunakan untuk mencakup permintaan OIDC dari alur kerja GitHub. Bidang ini digunakan untuk menghasilkan klaim subject . |
Environment , , Branch Pull request ,Tag |
Nama GitHub | Nama lingkungan, cabang, atau tag. | main |
Nama | Pengidentifikasi untuk informasi masuk terfederasi. | contoso-deploy |
Untuk gambaran umum yang lebih detail, lihat Melakukan konfigurasi aplikasi untuk memercayai repositori GitHub.
Membuat rahasia GitHub
Anda perlu menyediakan ID Klien, ID Penyewa, dan ID Langganan aplikasi Anda untuk tindakan login. Nilai ini bisa disediakan secara langsung di alur kerja atau bisa disimpan di rahasia GitHub dan direferensikan dalam alur kerja Anda. Menyimpan nilai sebagai GitHub rahasia adalah opsi yang lebih aman.
Buka repositori GitHub Anda dan buka Pengaturan.
Pilih Tindakan Rahasia keamanan > dan variabel>.
Membuat rahasia untuk
AZURE_CLIENT_ID
,AZURE_TENANT_ID
, danAZURE_SUBSCRIPTION_ID
. Gunakan nilai-nilai dari aplikasi Azure Active Directory untuk rahasia GitHub Anda:GitHub Rahasia Aplikasi Azure Active Directory AZURE_CLIENT_ID Aplikasi (ID klien) AZURE_TENANT_ID ID (tenant) direktori AZURE_SUBSCRIPTION_ID ID Langganan Simpan setiap rahasia dengan memilih Tambahkan rahasia.
Menyiapkan Login Azure dengan autentikasi OpenID Connect
Alur kerja Tindakan GitHub Anda menggunakan OpenID Connect untuk autentikasi dengan Azure. Untuk mempelajari lebih lanjut tentang interaksi ini, lihat dokumentasi Tindakan GitHub.
Dalam contoh ini, Anda akan menggunakan OpenID Connect Azure CLI untuk autentikasi dengan Azure menggunakan tindakan Login Azure. Contoh ini menggunakan rahasia GitHub untuk nilai-nilai client-id
, tenant-id
, dan subscription-id
. Anda juga dapat meneruskan nilai-nilai ini langsung dalam tindakan login.
Tindakan login Azure menyertakan parameter input audience
opsional dengan pengaturan default ke api://AzureADTokenExchange
. Anda dapat memperbarui parameter ini untuk nilai audiens khusus.
Alur kerja ini melakukan autentikasi pada OpenID Connect dan menggunakan Azure CLI untuk mendapatkan detail langganan yang tersambung dan mendaftar grup sumber daya.
name: Run Azure Login with OpenID Connect
on: [push]
permissions:
id-token: write
contents: read
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: 'Az CLI login'
uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: 'Run Azure CLI commands'
run: |
az account show
az group list
pwd
Verifikasi Login Azure yang berhasil dengan OpenID
Buka tindakan Az CLI login
dan verifikasi bahwa hal itu berjalan sukses. Anda akan melihat pesan Login successful
. Jika login Anda tidak berhasil, Anda akan melihat pesan Az CLI Login failed.
.
Menggunakan tindakan login Azure dengan rahasia perwakilan layanan
Untuk menggunakan Login Azure pada perwakilan layanan, Anda perlu menambahkan perwakilan layanan Azure Anda sebagai rahasia di repositori GitHub terlebih dahulu.
Membuat perwakilan layanan
Dalam contoh ini, Anda akan membuat satu rahasia bernama AZURE_CREDENTIALS
yang dapat Anda gunakan untuk melakukan autentikasi dengan Azure.
Buka Azure Cloud Shell di portal Azure atau Azure CLI secara lokal.
Catatan
Jika menggunakan Azure Stack Hub, Anda harus mengatur titik akhir Manajemen SQL ke
not supported
.az cloud update -n {environmentName} --endpoint-sql-management https://notsupported
Buat perwakilan layanan baru di portal Microsoft Azure untuk aplikasi Anda. Perwakilan layanan harus ditetapkan dengan peran yang sesuai.
az ad sp create-for-rbac --name "myApp" --role contributor \ --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \ --json-auth
Parameter
--json-auth
menghasilkan kamus hasil yang diterima oleh tindakan masuk, dapat diakses dalam versi >Azure CLI = 2.51.0. Versi sebelum penggunaan--sdk-auth
ini dengan peringatan penghentian.Salin objek JSON untuk perwakilan layanan Anda.
{ "clientId": "<GUID>", "clientSecret": "<GUID>", "subscriptionId": "<GUID>", "tenantId": "<GUID>", (...) }
Menambahkan perwakilan layanan sebagai rahasia GitHub
Di GitHub, buka repositori Anda.
Buka Pengaturan di menu navigasi.
Pilih Tindakan Rahasia keamanan > dan variabel>.
Pilih Rahasia repositori baru.
Tempelkan seluruh output JSON dari perintah CLI Azure ke bidang nilai rahasia. Namai rahasia sebagai
AZURE_CREDENTIALS
.Pilih Tambahkan rahasia.
Gunakan tindakan masuk Azure
Gunakan rahasia perwakilan layanan dengan tindakan Azure Login untuk melakukan autentikasi ke Azure.
Dalam alur kerja ini, Anda mengautentikasi menggunakan tindakan login Azure dengan detail perwakilan layanan yang disimpan di secrets.AZURE_CREDENTIALS
. Kemudian, Anda menjalankan tindakan Azure CLI. Untuk informasi selengkapnya tentang merujuk rahasia GitHub dalam file alur kerja, lihat Menggunakan rahasia terenkripsi dalam alur kerja di GitHub Docs.
Setelah langkah login Azure Anda berfungsi, Anda dapat menggunakan tindakan Azure PowerShell atau Azure CLI. Anda juga dapat menggunakan tindakan Azure lainnya, seperti Penyebaran webapp Azure dan Fungsi Azure.
on: [push]
name: AzureLoginSample
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: '${{ secrets.AZURE_CREDENTIALS }}'
Gunakan tindakan Azure PowerShell
Dalam contoh ini, Anda masuk dengan Tindakan Login Azure, kemudian mengambil grup sumber daya dengan Tindakan Azure PowerShell.
on: [push]
name: AzureLoginSample
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: '${{ secrets.AZURE_CREDENTIALS }}'
enable-AzPSSession: true
- name: Azure PowerShell Action
uses: Azure/powershell@v1
with:
inlineScript: Get-AzResourceGroup -Name "< YOUR RESOURCE GROUP >"
azPSVersion: "latest"
Menggunakan tindakan Azure CLI
Dalam contoh ini, Anda masuk dengan Tindakan Login Azure, kemudian mengambil grup sumber daya dengan tindakan Azure CLI.
on: [push]
name: AzureLoginSample
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Log in with Azure
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Azure CLI script
uses: azure/CLI@v1
with:
azcliversion: 2.0.72
inlineScript: |
az account show
az storage -h
Membuat sambungan ke cloud Azure Government dan Azure Stack Hub
Untuk masuk ke salah satu cloud Azure Government, atur lingkungan parameter opsional dengan nama cloud AzureUSGovernment
atau AzureChinaCloud
yang didukung. Jika tidak ditentukan, parameter ini mengambil nilai default AzureCloud
dan tersambung ke Azure Public Cloud.
- name: Login to Azure US Gov Cloud with CLI
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
environment: 'AzureUSGovernment'
enable-AzPSSession: false
- name: Login to Azure US Gov Cloud with Az Powershell
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_US_GOV_CREDENTIALS }}
environment: 'AzureUSGovernment'
enable-AzPSSession: true
Sambungkan dengan layanan Azure lainnya
Artikel berikut memberikan detail tentang penyambungan ke GitHub dari Azure dan layanan lainnya.