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 login masuk menggunakan Azure CLI dan menyiapkan lingkungan pengeksekusi tindakan GitHub untuk Azure CLI. Anda dapat menggunakan Azure PowerShell dengan properti enable-AzPSSession pada tindakan login Azure. Dengan ini, lingkungan pengeksekusi tindakan GitHub disiapkan 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 Azure Active Directory, dengan perwakilan layanan yang memiliki akses kontributor ke langganan Anda
  • Aplikasi Azure Active Directory dikonfigurasi dengan informasi masuk terfederasi untuk memercayai token yang dikeluarkan oleh Tindakan GitHub ke repositori GitHub Anda. Anda dapat mengonfigurasikan ini di portal Microsoft atau dengan REST API Microsoft Graph
  • Alur kerja Tindakan GitHub yang meminta GitHub mengeluarkan token ke alur kerja, dan menggunakan tindakan login Azure

Membuat aplikasi Microsoft Azure Active Directory dan perwakilan layanan

Anda harus membuat aplikasi Azure Active Directory dan perwakilan layanan, kemudian menetapkan peran pada langganan Anda ke aplikasi sehingga alur kerja Anda memiliki akses ke langganan Anda.

  1. Jika Anda belum memiliki aplikasi, daftarkan aplikasi Azure Active Directory dan perwakilan layanan baru yang bisa mengakses sumber daya. Sebagai bagian dari proses ini, pastikan untuk:

    • Mendaftarkan aplikasi Anda pada Azure Active Directory dan membuat 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.
    Pilih Rahasia sertifikat & .
  3. Di tab Kredensial gabungan, pilih Tambahkan kredensial. Menambahkan kredensial federasi
  4. Pilih skenario informasi masukTindakan GitHub yang menyebarkan sumber daya Azure. Buat informasi masuk Anda dengan memasukkan detail informasi masuk Anda.
Bidang Deskripsi Contoh
Organisasi 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.

  1. Buka repositori GitHub Anda dan buka Pengaturan.

    Pilih Pengaturan di navigasi

  2. Pilih Rahasia lalu Rahasia Baru.

    Pilih untuk menambahkan rahasia

  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 ID (klien) Aplikasi
    AZURE_TENANT_ID ID direktori (penyewa)
    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 berhasil.

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.

Buat dan tambahkan perwakilan layanan sebagai rahasia ke GitHub

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 Azure untuk aplikasi Anda. Perwakilan layanan harus ditetapkan sebagai Kontributor.

        az ad sp create-for-rbac --name "myApp" --role contributor \
                                    --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} \
                                    --sdk-auth
    
  3. Salin objek JSON untuk perwakilan layanan Anda.

    {
        "clientId": "<GUID>",
        "clientSecret": "<GUID>",
        "subscriptionId": "<GUID>",
        "tenantId": "<GUID>",
        (...)
    }
    
  4. Buka repositori GitHub Anda dan buka Pengaturan.

    Pilih Pengaturan di navigasi

  5. Pilih Rahasia lalu Rahasia Baru.

    Pilih untuk menambahkan rahasia

  6. Tempelkan objek JSON Anda untuk perwakilan layanan dengan nama AZURE_CREDENTIALS.

    Menambahkan rahasia di GitHub

  7. Simpan dengan memilih Tambahkan rahasia.

Gunakan tindakan masuk Azure

Gunakan rahasia perwakilan layanan dengan tindakan Azure Login untuk melakukan autentikasi ke Azure.

Dalam alur kerja ini, Anda melakukan autentikasi 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.

Azure Active Directory

Power BI

Konektor

Azure Databricks