GitHub Actions 워크플로에서 워크플로 ID 사용

완료됨

워크로드 ID를 만들고 Azure 환경에 액세스 권한을 할당한 후에는 GitHub Actions 워크플로에서 사용할 차례입니다. 이 단원에서는 워크플로 정의에 대해 수행해야 하는 두 가지 변경 사항에 대해 알아봅니다.

워크플로에서 토큰을 요청하도록 허용

배포 워크플로에서 토큰을 요청하도록 허용해야 합니다. 워크플로에서 permissions 속성을 추가합니다.

permissions:
  id-token: write
  contents: read

Azure에 로그인

배포 워크플로는 azure/login 사용하여 Azure에 로그인합니다. 워크로드 ID를 사용하는 경우 다음 세 가지 입력을 지정해야 합니다.

입력 Description
client-id 애플리케이션 등록에 대한 애플리케이션 ID. 개체 ID가 아닌 애플리케이션 ID를 사용해야 합니다.
tenant-id Microsoft Entra 테넌트(디렉터리)의 고유 식별자입니다.
subscription-id 배포할 Azure 구독 ID.

이러한 각 값은 GUID입니다.

값을 정의할 때 워크플로 정의 파일에서 직접 지정하도록 선택할 수 있습니다.

- uses: azure/login@v1
  with:
    client-id: 'A123b4567c-1234-1a2b-2b1a-1234abc12345'
    tenant-id: 'aaaabbbb-0000-cccc-1111-dddd2222eeee'
    subscription-id: 'B123a4567c-1234-2b1a-1b2b-11a2b01b2b3c0'

그러나 일부 조직에서는 이러한 식별자를 비밀 데이터로 처리하거나 식별자가 Git 리포지토리에 커밋되는 것을 허용하지 않습니다. GitHub 비밀을 사용하여 값을 지정할 수도 있습니다.

- uses: azure/login@v1
  with:
    client-id: ${{ secrets.AZURE_CLIENT_ID }}
    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
    subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

Bicep에 대한 학습 경로 전체에서 비밀을 사용하여 이러한 식별자를 저장하고 관리합니다. 조직에 가장 적합한 방법을 결정할 수 있습니다.

Azure에 배포

워크플로가 Azure에 로그인한 후 azure/arm-deploy 작업을 사용하여 Bicep 파일을 배포할 수 있습니다. 다음 워크플로 정의는 워크플로 ID를 사용하는 전체 Bicep 배포 워크플로를 보여줍니다.

name: MyWorkflow

on: [workflow_dispatch]

permissions:
  id-token: write
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        path: repo
    - uses: azure/login@v1
      with:
        client-id: ${{ secrets.AZURE_CLIENT_ID }}
        tenant-id: ${{ secrets.AZURE_TENANT_ID }}
        subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    - uses: azure/arm-deploy@v1
      with:
        resourceGroupName: ToyWebsite
        template: ./deploy/main.bicep