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:

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.

  1. 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
  2. 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.

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

  1. Masuk ke Pendaftaran aplikasi pada portal Microsoft Azure dan buka aplikasi yang ingin Anda konfigurasikan.
  2. Di dalam aplikasi, buka Sertifikat dan rahasia.
    Select Certificates & secrets.
  3. Di tab Kredensial gabungan, pilih Tambahkan kredensial. Add the federated credential
  4. 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, , BranchPull 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.

  1. Buka repositori GitHub Anda dan buka Pengaturan.

    Select Settings in the navigation

  2. Pilih Tindakan Rahasia keamanan > dan variabel>.

    Choose to add a secret

  3. Membuat rahasia untuk AZURE_CLIENT_ID, AZURE_TENANT_ID, dan AZURE_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
  4. 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..

GitHub Actions Azure Login successful.

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.

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

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

  3. Salin objek JSON untuk perwakilan layanan Anda.

    {
        "clientId": "<GUID>",
        "clientSecret": "<GUID>",
        "subscriptionId": "<GUID>",
        "tenantId": "<GUID>",
        (...)
    }
    

Menambahkan perwakilan layanan sebagai rahasia GitHub

  1. Di GitHub, buka repositori Anda.

  2. Buka Pengaturan di menu navigasi.

  3. Pilih Tindakan Rahasia keamanan > dan variabel>.

    Screenshot of select Actions menu item.

  4. Pilih Rahasia repositori baru.

  5. Tempelkan seluruh output JSON dari perintah CLI Azure ke bidang nilai rahasia. Namai rahasia sebagai AZURE_CREDENTIALS.

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

Microsoft Entra ID

Power BI

Konektor

Azure Databricks